Получено другое сообщение об исправлении в методе fromApp и файл сообщения в filStorePath - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь перехватить 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>

1 Ответ

0 голосов
/ 16 января 2019

Всегда доверяйте журналу сообщений более FromApp() и FromAdmin(). Журнал записывается до того, как двигатель попытается проанализировать сообщение; обратные вызовы происходят после. Если при синтаксическом анализе возникает ошибка (как в вашем случае), то, что вы видите в обратном вызове, будет неверным (что вы видите).

Я видел твою проблему раньше. Вероятно, происходит то, что ваша конфигурация имеет ошибку, или ваш настроенный файл DD xml не точно соответствует спецификации вашего контрагента.

Сначала , ваш конфигурационный файл должен иметь следующие строки:

UseDataDictionary=Y

# for FIX4
DataDictionary=path/to/your/dd.xml

# for FIX5+
AppDataDictionary=path/to/your/FIX5whatever.xml
TransportDataDictionary=path/to/your/FIXT1.1.xml

Второй , проверьте ваше сообщение по файлу DD, который находится в вашей конфигурации. Возможно, что-то в повторяющемся определении группы не правильно. Например, поле может отсутствовать в определении группы, и синтаксический анализатор покидает группу рано, когда он ее ударил. Убедитесь, что ваша конфигурация указывает на правильный файл XML.

(Если вы исправите вставку сообщения выше, добавив видимые разделители полей, я вернусь и помогу взглянуть.)

...