반복 그룹 작동 방식을 모르기 때문에 DD를 잘못 수정했습니다.
메시지의 표준 FIX44 DD입니다. 태그 번호를 나타내는 몇 가지 설명을 추가했습니다. 내부의 반복 그룹
<message name="MarketDataSnapshotFullRefresh" msgtype="W" msgcat="app">
<field name="MDReqID" required="N" />
<component name="Instrument" required="Y" />
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N" />
</group>
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N" />
</group>
<field name="FinancialStatus" required="N" />
<field name="CorporateAction" required="N" />
<field name="NetChgPrevDay" required="N" />
<group name="NoMDEntries" required="Y"> <!-- 268 -->
<field name="MDEntryType" required="Y" /> <!-- 269 -->
<field name="MDEntryPx" required="N" /> <!-- 270 -->
<field name="Currency" required="N" />
<field name="MDEntrySize" required="N" /> <!-- 271 -->
<field name="MDEntryDate" required="N" />
... and so on ...
필드 소정의 순서로한다. QF가 그룹을 처리 할 때 예기치 않은 필드가 발견되면 그룹이 끝났다고 가정합니다.
DD가 송신자가 보내는 순서와 일치하지 않으므로 엔진이 오작동합니다.
귀하의 보낸 사람이 순서대로 필드를 보내는 :
268-> (group 1) 269 270 271 290 64 278
(group 2) 269 270 271 290 278
합니다 (이 위의 거부 메시지에서 직접입니다.)
귀하의 DD 그러나 269 278 271 270
을 기대하고있다. 278을 치자 마자 그룹이 끝나고 이상한 일이 일어나기 시작합니다.
DD를 기본값으로 되돌리고 나서 NoMDEntries
구성 요소에 64/SettlDate 및 278/MDEntryID를 추가하십시오. 제공해 주신 증거를 감안할 때, 거래 상대방이 해당 필드를 그룹 끝에 추가 한 것은 확실합니다.
분명히 이들은 상대방이 DD에게 행한 유일한 수정 사항은 아닙니다. 문서를 받아서 읽으십시오. 그런 다음 DD를 적절하게 수정하십시오.
다른 질문에서 이미 [this link] (http://quickfixn.org/tutorial/custom-fields-groups-and-messages.html)를 지적했습니다. DD 파일의 구조는 매우 간단합니다. NoMDEntries 그룹에 278을 추가하는 방법을 알아낼 수 있어야합니다. 할 수 없다면, 당신이 갇혀있는 곳을 말하십시오. –
DD 파일에서 필요한 변경을 이미 마쳤습니다. "MarketDataSnapshotFullRefresh"msgtype = "W"msgcat = "app"> \t <필드 이름 = "MDEntryID"필수 = "N"/> \t <필드 이름 ="MDEntryType "필수 ="N "/> MDEntrySize "required ="N "/> 여전히 예상대로 작동하지 않습니다. –
그 이유는 그룹을 확장하는 NoMDEntries 클래스에 필드를 추가해야하기 때문입니다. 그러나 그 때문에 나는 빠른 수정의 소스 코드가 필요할지도 모른다. 내가 맞습니까? –