How to nest repeating groups in QuickFix DataDictionary?



I am using QuickFix with the Python bindings, and connecting to a counterparty that provides historical data downloads. In order to parse the incoming messages, I need to be able to read nested repeating groups.


I found an example of a data dictionary with a nested repeating group here: http://ift.tt/1vqk1Qf


I tried to model my DD on this example but I keep getting the same error: Conditionally Required Field Missing:3210. This field 3210 is precisely the new (nested) group definition, called NoChartData.


I have pored over the DD and can't find anything wrong with it. Likewise I have triple-checked that every tag is defined and all tags' possible values are also defined.


Any ideas? Is the error my fault? Might it be a QF bug?



<message name="MarketDataSnapshotFullRefresh" msgtype="W" msgcat="app">
<field name="MDReqID" required="N" />
<field name="Symbol" required="N" />
<field name="SecurityType" required="N" />
<field name="MaturityMonthYear" required="N" />
<field name="MaturityDay" required="N" />
<field name="PutOrCall" required="N" />
<field name="StrikePrice" required="N" />
<field name="OptAttribute" required="N" />
<field name="SecurityID" required="N" />
<field name="SecurityStatus" required="N" />
<field name="SecurityAltID" required="N" />
<field name="SecurityExchange" required="N" />
<field name="SettlType" required="N" />
<field name="TotalVolumeTraded" required="N" />
<field name="Currency" required="N" />
<field name="PriceFeedStatus" required="N" />
<field name="DeliveryTerm" required="N" />
<field name="ExecInst" required="N" />
<field name="ChartType" required="N" />
<field name="TradeDateStart" required="N" />
<field name="TradeDateEnd" required="N" />
<field name="SessionStartTime" required="N" />
<field name="SessionEndTime" required="N" />
<field name="DataFormat" required="N" />
<field name="EncodedTextCRC" required="N"/>
<field name="EncodedTextLen" required="N" />
<field name="EncodedText" required="N" />
<group name="NoMDEntries" required="Y">
<field name="MDEntryType" required="Y" />
<field name="TradeDate" required="N" />
<field name="MDEntryID" required="N" />
<field name="MDEntryPx" required="N" />
<field name="MDEntrySize" required="N" />
<field name="MDEntryTime" required="N" />
<field name="TickDirection" required="N" />
<field name="TradeCondition" required="N" />
<field name="ExecInst" required="N" />
<field name="MDEntryLevel" required="N" />
<field name="ChartType" required="N" />
<field name="MDEntryPositionNo" required="N" />
<field name="SecondaryOrderID" required="N" />
<field name="MDEntryState" required="N" />
<field name="AggressorSide" required="N" />
<field name="MDEntrySizeType" required="N" />
<field name="NumberOfOrders" required="N" />
<field name="ExactNumOrdersIndicator" required="N" />
<field name="TrdType" required="N" />
<field name="TradeVolume" required="N" />
<group name="NoChartData" required="N" >
<field name="Change" required="N" />
<field name="Numerator" required="N" />
<field name="Denominator" required="N" />
<field name="PriceCode" required="N" />
<field name="TickValue" required="N" />
<field name="TradeDateCharts" required="N" />
<field name="MarketModeTime" required="N" />
<field name="MarketMode" required="N" />
<field name="SettlementTime" required="N" />
<field name="Settlement" required="N" />
<field name="HeldSettlementTime" required="N" />
<field name="HeldSettlement" required="N" />
<field name="OpenInterestTime" required="N" />
<field name="OpenInterest" required="N" />
<field name="ClearedVolumeTime" required="N" />
<field name="ClearedVolume" required="N" />
<field name="VWAPTime" required="N" />
<field name="VWAP" required="N" />
<field name="QuoteTime" required="N" />
<field name="BidTicks" required="N" />
<field name="BidRealVolume" required="N" />
<field name="BidImpliedVolume" required="N" />
<field name="OfferTicks" required="N" />
<field name="OfferRealVolume" required="N" />
<field name="OfferImpliedVolume" required="N" />
<field name="TPOStartTime" required="N" />
<field name="TPOTicks" required="N" />
<field name="TPOVolume" required="N" />
<field name="TPOVolumeAtBid" required="N" />
<field name="TPOVolumeAtOffer" required="N" />
<field name="TPOIsOpening" required="N" />
<field name="TPOIsClosing" required="N" />
<field name="TradeTime" required="N" />
<field name="TradedVolume" required="N" />
<field name="TradeTickValue" required="N" />
<field name="TotalTradedVolume" required="N" />
<field name="DueToSpread" required="N" />
<field name="AtBidOrOffer" required="N" />
<field name="BarStartTime" required="N" />
<field name="BarCloseTime" required="N" />
<field name="BarOpenTicks" required="N" />
<field name="BarHighTicks" required="N" />
<field name="BarLowTicks" required="N" />
<field name="BarCloseTicks" required="N" />
<field name="BarVolume" required="N" />
<field name="BarBidVolume" required="N" />
<field name="BarOfferVolume" required="N" />
<field name="BarTradeCount" required="N" />
<field name="BarTradesAtBid" required="N" />
<field name="BarTradesAtOffer" required="N" />
<field name="TickChangeStartTime" required="N" />
<field name="TickChangeCloseTime" required="N" />
<field name="TickChangeVolume" required="N" />
<field name="TickChangeBidVolume" required="N" />
<field name="TickChangeOfferVolume" required="N" />
<field name="TickChangeTradeCount" required="N" />
<field name="TickChangeTradesAtBid" required="N" />
<field name="TickChangeTradesAtOffer" required="N" />
<field name="RFQTime" required="N" />
<field name="BuySell" required="N" />
<field name="Volume" required="N" />
</group>
</group>
</message>

No comments:

Post a Comment