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