Repeating Group Messages in Quickfix C++
- by Mark Jackson
We cannot seem to process some group messages with QuickFix.
I am trying to set up a connection with the ICE exchange using QuickFix (C++). I have created a custom data dictionary to handle ICE's non-standard messages. The first message to handle is a SecurityDefinition. The message contains about 13000 entries broken into blocks of 100. I attached the message below (the first two entries with CR/LF added for clarity).
My question is in the data dictionary, I defined a group as part of the entry with all the fields they specify in the group. Yet the message is rejected before it gets to the cracker as having an invalid tag (tag = 305).
Message 2 Rejected: Tag not defined for this message type:305
Does this dictionary entry look correct. Is there any documentation anywhere on how to handle group messages?
Dictionary entry
<message name='SecurityDefinition' msgcat='app' msgtype='d'>
<field name='SecurityResponseID' required='Y' />
<field name='SecurityResponseType' required='Y' />
<field name='SecurityReqID' required='Y' />
<field name='TotNoRelatedSym' required='N' />
<field name='NoRpts' required='N' />
<field name='ListSeqNo' required='N' />
<group name='NoUnderlyings' required='N'>
<field name='UnderlyingSymbol' required='N' />
<field name='UnderlyingSecurityID' required='N' />
<field name='UnderlyingSecurityIDSource' required='N' />
<field name='UnderlyingCFICode' required='N' />
<field name='UnderlyingSecurityDesc' required='N' />
<field name='UnderlyingMaturityDate' required='N' />
<field name='UnderlyingContractMultiplier' required='N' />
<field name='IncrementPrice' required='N' />
<field name='IncrementQty' required='N' />
<field name='LotSize' required='N' />
<field name='NumofCycles' required='N' />
<field name='LotSizeMultiplier' required='N' />
<field name='Clearable' required='N' />
<field name='StripId' required='N' />
<field name='StripType' required='N' />
<field name='StripName' required='N' />
<field name='HubId' required='N' />
<field name='HubName' required='N' />
<field name='HubAlias' required='N' />
<field name='UnderlyingUnitOfMeasure' required='N' />
<field name='PriceDenomination' required='N' />
<field name='PriceUnit' required='N' />
<field name='Granularity' required='N' />
<field name='NumOfDecimalPrice' required='N' />
<field name='NumOfDecimalQty' required='N' />
<field name='ProductId' required='N' />
<field name='ProductName' required='N' />
<field name='ProductDescription' required='N' />
<field name='TickValue' required='N' />
<field name='ImpliedType' required='N' />
<field name='PrimaryLegSymbol' required='N' />
<field name='SecondaryLegSymbol' required='N' />
<field name='IncrementStrike' required='N' />
<field name='MinStrike' required='N' />
<field name='MaxStrike' required='N' />
</group>
</message>
The actual message is
8=FIX.4.49=5004335=d49=ICE34=252=20121017-00:39:41.38556=600357=23322=3924323=4320=1393=1310382=13267=1711=100
311=1705282309=TEB SMG0013-TFL SMG0013305=8463=FXXXXX307=NG Basis Futures Spr - TETCO-ELA/TGP-500L - Feb13542=20130131436=1.09013=0.00059014=2500.09017=25009022=289024=19025=Y916=20130201917=201302289201=11969200=129202=Feb139300=60589301=Texas Eastern Transmission Corp. - East Louisiana Zone/Tennessee Gas Pipeline Co. - Zone L, 500 Leg Pool9302=TETCO-ELA/TGP-500L998=MMBtus9100=USD9101=USD / MMBtu9085=daily9083=49084=09061=4909062=NG Basis Futures Spr9063=Natural Gas Basis Futures Spread9032=1.259004=17051939005=1353778
311=1714677309=PGE SQF0014.H0014-SCB SQF0014.H0014305=8463=FXXXXX307=NG Basis Futures Spr - PG&E-Citygate/Socal-Citygate - Q1 14542=20131231436=1.09013=0.00059014=2500.09017=25009022=909024=19025=Y916=20140101917=201403319201=12339200=159202=Q1 149300=59979301=PG&E - Citygate/Socal - Citygate9302=PG&E-Citygate/Socal-Citygate998=MMBtus9100=USD9101=USD / MMBtu9085=daily9083=49084=09061=4909062=NG Basis Futures Spr9063=Natural Gas Basis Futures Spread9032=1.259004=13430529005=1344660