QuickFix에서 일부 그룹 메시지를 처리 할 수 없습니다.Quickfix C++에서 반복되는 그룹 메시지
QuickFix (C++)를 사용하여 ICE 교환기와의 연결을 설정하려고합니다. ICE의 비표준 메시지를 처리하기 위해 사용자 지정 데이터 사전을 만들었습니다. 처리 할 첫 번째 메시지는 SecurityDefinition입니다. 메시지에는 약 13000 개의 항목이 100 개의 블록으로 구분되어 있습니다. 아래에 메시지를 첨부했습니다 (명확성을 위해 CR/LF가 추가 된 처음 두 항목).
내 질문에 데이터 사전에, 내가 그룹에서 지정한 모든 필드가있는 항목의 일부로 그룹을 정의했습니다. 그러나 메시지가 잘못된 태그 (태그 = 305)를 갖는 것으로 크래커에 도착하기 전에 거부됩니다. 거부
메시지 2 : 태그이 메시지 유형에 대해 정의하지 : (305)
이 사전 항목이 올바른지 보입니까. 그룹 메시지를 다루는 방법에 관한 문서가 있습니까?
사전 엔트리
<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>
실제 메시지가
8 = FIX.4.49 = 5,004,335 = D49 = ICE34 = 252 = 20121017-00 : 39 : 41.38556 = 600,357 = 23,322 = 3,924,323 = 4320 TETCO-ELA/TGP-500L - Feb13542 = 20130131436 = 1.09013 = 0.00059014 = 2500.09017 = 25009022 = NGX = 1300382 = 1327 = 1711 = 100 311 = 1705282309 = TEB SMG0013-TFL SMG0013305 = 8463 = FXXXXX307 = NG 기초 스프레드 Spr - 289024 = 19025 = Y916 = 20130201917 = 201302289201 = 11969200 = 129202 = Feb139300 = 60589301 = 동부 루이지애나 지역/테네시 가스 파이프 라인 - 지역 L, 500 다리 Pool9302 = TETCO-ELA/TGP-5 00L998 = MMBtus9100 = USD9101 = USD/MMBtu9085 = daily9083 = 49084 = 09061 = 4909062 = NG 기초 선물 Spr9063 = 천연 가스 기초 선물 Spread9032 = 1.259004 = 17051939005 = 1353778 311 = 1714677309 = PGE SQF0014.H0014-SCB SQF0014.H0014305 = 8463 = FXXXXX307 = NG 베이시스 선물 Spr - PG & 전자 시티 게이트/성좌 도시 - 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 기본 선물 Spr9063 = 천연 가스 기본 선물 스프레드 9032 = 1.259004 = 13430529005 = 1344660
나는 내가 ValidateFieldsOutOfOrder 플래그를 시도 할 것이다, 데이터 사전 항목을했다. UnderlyingInstrument 구성 요소를 수정하려고 시도했지만 동일한 결과가있었습니다. 봐 주셔서 대단히 감사합니다. –
@Mark Jackson - XML 사전을 어지럽히 지 말고 새로운 메시지 나 구성 요소가 될 때까지 이미있는 것을 추가하지 마십시오. 그것은 단지 당신이 당신의 문제를 파악하는데 몇 시간을 허비하게 만듭니다. – DumbCoder