Search code examples
c#fix-protocolquickfixn

How do I create FIX partyID group?


I am trying to add a PartyID group to a FIX4.4 message.

I cannot find a "group" for PartyID. So I am adding them sequentially.

NoPartyIDs, PartyRole, PartyIDSource, PartyID

However, whichever way I add them, the fix engine appears to reorder them.

How should I do this, or is there a way to specify order?

    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;
    }

Solution

  • This worked for me. I used Quote.NoPartyIDsGroup. Odd that there isn't such a group in MarketDataRequest.

    QuickFix.Fields.NoPartyIDs noPartyIDs = new QuickFix.Fields.NoPartyIDs(1);
                QuickFix.Fields.PartyID partyID = new QuickFix.Fields.PartyID(lp);
                QuickFix.Fields.PartyIDSource partyIDSource = new QuickFix.Fields.PartyIDSource('D');
                QuickFix.Fields.PartyRole partyRole = new QuickFix.Fields.PartyRole(35);
    
              QuickFix.FIX44.Quote.NoPartyIDsGroup group = new Quote.NoPartyIDsGroup();
    
                group.SetField(noPartyIDs);
                group.SetField(partyRole);
                group.SetField(partyIDSource);
                group.SetField(partyID);
    
                message.AddGroup(group);