Я пытаюсь перехватить MarketDataIncrementalRefresh
сообщений.
У него есть группа noMDEntries
, я пытаюсь разобрать ее.
У меня две проблемы:
1-й - я напечатал сообщение, которое приходит методом fromApp
, которое отличается от того, что я получаю в моем файле, созданном с помощью FileStorePath
.
Как это возможно? Затем я взломал message cracker
, но даже после взлома это то же самое сообщение, которое было получено в fromApp
Сообщение от fromApp
:
8=FIX.4.29=7535=X34=3649=XXXXXXXX52=2019011605:09:51.00056=XXXXXXXX262=1268=110=223
Сообщение получено в файле:
8=FIX.4.29=0019435=X49=XXXXXXXX56=XXXXXXXX34=3652=20190116-05:09:51.000262=1268=1279=1269=055=ES167=FUT200=201903541=20190315205=1518211=M207=CME100=XCME461=F15=USD270=249375271=20290=110=123
2nd - при переборе группы я получаю сообщение об ошибке:
quickfix.FieldNotFound: 268, index=1
at quickfix.FieldMap.getGroup(FieldMap.java:633)
но, как вы видите, поле 268 установлено, также я проверил его снова через message.isSetField(268)
, что приводит к true
, сразу после того, как оно попыталось:
MarketDataIncrementalRefresh.NoMDEntries mdEntriesGroup = new MarketDataIncrementalRefresh.NoMDEntries();
message.getGroup(1, mdEntriesGroup);
выдает вышеуказанную ошибку.
FIX42.xml выглядит так, что имеет тот же порядок полей, что и в моем полученном сообщении .:
<message name='MarketDataIncrementalRefresh' msgtype='X' msgcat='app'>
<field name='MDReqID' required='Y' />
<field name='PriceFeedStatus' required='N' />
<group name='NoMDEntries' required='Y'>
<field name='MDUpdateAction' required='Y' />
<field name='MDEntryType' required='Y' />
<field name='Symbol' required='N' />
<field name='SecurityType' required='N' />
<field name='SecuritySubType' required='N' />
<field name='MaturityMonthYear' required='N' />
<field name='MaturityDate' required='N' />
<field name='MaturityDay' required='N' />
<field name='PutOrCall' required='N' />
<field name='StrikePrice' required='N' />
<field name='OptAttribute' required='N' />
<field name='DeliveryTerm' required='N' />
<field name='DeliveryDate' required='N' />
<field name='SecurityID' required='N' />
<field name='SecurityExchange' required='N' />
<field name='ExDestination' required='N' />
<field name='CFICode' required='N' />
<field name='Currency' required='N' />
<field name='MDEntryPx' required='N' />
<field name='MDEntrySize' required='N' />
<field name='MDEntryDate' required='N' />
<field name='MDEntryTime' required='N' />
<field name='MDEntryPositionNo' required='N' />
<field name='SecondaryOrderID' required='N' />
<field name='NumberOfOrders' required='N' />
</group>
<field name='ExchangeSendingTime' required='N' />
<field name='ExchangeTransactTime' required='N' />
<field name='ExchangeSeqNum' required='N' />
</message>