c# - 如何创建 FIX partyID 组?

标签 c# fix-protocol quickfixn

我正在尝试将 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/

相关文章:

c# - 使用集合的 Azure 移动服务查询包含

python - FIX协议(protocol)简单测试登录

c# - Quickfixn SSL 配置问题

python - 区分两个 QuickFix 启动器 session

c++ - quickfix引擎c++中的故障转移

quickfix - 重新发送请求应如何处理旧订单

quickfix - 10000 到 19999 之间的 FIX 协议(protocol)标签有什么用?

c# - 错误 : LINQ to Entities does not recognize the method 'Int32 ToInt32

c# - 正则表达式 - 重用子表达式

c# - 在C#应用程序中创建大量线程的性能影响