我正在尝试将 PartyID 组添加到 FIX4.4 消息中。
我找不到 PartyID 的“群组”。所以我按顺序添加它们。
NoPartyIDs, PartyRole, PartyIDSource, PartyID
但是,无论我以哪种方式添加它们,修复引擎似乎都会对它们重新排序。
我应该怎么做,或者有没有办法指定顺序?
public QuickFix.FIX44.MarketDataRequest QueryMarketDataRequest44(string symbol)
{
MDReqID mdReqID = new MDReqID("RqID"+symbol);
SubscriptionRequestType subType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
MarketDepth marketDepth = new MarketDepth(1);
QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup();
QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup();
symbolGroup.Set(new Symbol(symbol));
QuickFix.FIX44.MarketDataRequest message = new QuickFix.FIX44.MarketDataRequest(mdReqID, subType, marketDepth);
message.Set(new MDUpdateType(0));
message.AddGroup(symbolGroup);
QuickFix.Fields.NoPartyIDs noPartyIDs = new QuickFix.Fields.NoPartyIDs(1);
QuickFix.Fields.PartyID partyID = new QuickFix.Fields.PartyID("XXXX");
QuickFix.Fields.PartyIDSource partyIDSource = new QuickFix.Fields.PartyIDSource('D');
QuickFix.Fields.PartyRole partyRole = new QuickFix.Fields.PartyRole(35);
message.SetField(noPartyIDs);
message.SetField(partyRole);
message.SetField(partyIDSource);
message.SetField(partyID);
return message;
}
最佳答案
您的代码没有添加组。它在消息正文的顶层向消息添加 4 个单独的标签。根据 FIX 规范,主体中字段的顺序与重复组之外无关。由于该规范,QF 引擎不会记录(非重复组)字段的任何顺序。它只是将它们按数字顺序排列。
总结一下:您的整个方法是错误的并且不会起作用。
我认为 rupweb 的答案会起作用,尽管这有点像黑客,因为根据 DD,Parties
组实际上并不属于 MarketDataRequest
。对于传出消息,引擎不会检查 DD,因此它会起作用。
要正确执行此操作,我建议您编辑 DataDictionary 以将组添加到消息中,然后使用此新 DD 重新生成 QF/n 源,然后重建引擎。这样,您的 MarketDataRequest
类将包含更新的字段和这些新字段的访问器。
关于c# - 如何创建 FIX partyID 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003187/