Как переставить теги в сообщении FIX?

Я отправляю сообщение с запросом на исправление рыночных данных как:

8=FIXT.1.1☺9=168☺35=V☺34=2☺49=XXXXX☺52=20160622-09:50:59.240☺56=XXXX☺262=1976060316☺263=1☺264=1☺265=0☺267=1☺269=0☺146=1☺55=ABC☺48=ABC☺22=8☺167=FXNDF☺762=PERIOD☺20000=1M☺10=165☺

При этом я следовал порядку 35=V следующим образом:

55=ABC|48=ABC|22=8|167=FXNDF|762=PERIOD|20000=1M

Я хочу изменить последовательность сообщений следующим образом:

146=1|55=ABC||167=FXNDF|762=PERIOD|48=ABC|20000=1M|22=8

Я использую Quickfix DLL.


person pallavi    schedule 22.06.2016    source источник
comment
Есть ли причина для перестановки тегов?   -  person DumbCoder    schedule 22.06.2016
comment
поскольку iam отправляет это сообщение, я получаю сообщение об ошибке ‹incoming› 8=FIXT.1.1☺9=213☺35=W☺49=TMATCH☺56=SPC_MDF_UAT☺34=3☺52=20160622-10:50:03.788☺262= 1976060316☺55=USD/INR☺48=USD/INR☺22=8☺167=FXNDF☺762=ПЕРИОД☺20000=1M☺268=2☺269=Q☺270=67,88☺336=1☺625=103☺ 269=J☺270=0☺271=0☺336=1☺625=103☺290=1☺1187=N☺10=010☺ ‹событие› Сообщение 3 отклонено: значение неверно (вне диапазона) для этого тега (Поле=625) ‹исходящий› 8=FIXT.1.1☺9=135☺35=3☺34=3☺49=SPC_MDF_UAT☺52=20160622-10:49:55.376☺56=TMATCH☺45=3☺58= Неверное значение (вне диапазона) для этого тега☺371=625☺372=W☺373=5☺10=045☺   -  person pallavi    schedule 22.06.2016
comment
Вы не понимаете сообщение об отказе, которое вы получаете. Проверьте здесь stackoverflow.com/questions/29791730/   -  person DumbCoder    schedule 22.06.2016
comment
я видел эту ссылку, у меня есть поле 625 в моем fix50sp2 .. тогда в чем ошибка?   -  person pallavi    schedule 22.06.2016
comment
Value is incorrect (out of range) for this tag (Field=625) - Вам это непонятно?   -  person Grant Birchmeier    schedule 22.06.2016
comment
@PralayakaveriPallavi Неправильное значение (вне диапазона) означает: у вашего контрагента есть список значений для тега 625 (ENUM), но вы отправляете значение, которое не указан как допустимое значение. Согласно FIXimate допустимые значения от 1 до 7 (см. здесь fixtradingcommunity.org/FIXimate/FIXimate3.0/en/FIX.5.0SP2/ ). Вы отправляете 625=103. Возможно, ваш Контрагент не принимает 103 как допустимое значение. Проверьте файл словаря FIX Контрагента.   -  person Valdek Santana    schedule 22.06.2016
comment
Я также хочу знать, как изменить порядок полей сообщений в группе?   -  person pallavi    schedule 23.06.2016
comment
@grantbirchmeier вы ответили на тот же вопрос в ссылке stackoverflow.com/questions/24129059/ в том, что вы сказали, что только повторяющиеся группы должны следовать последовательности. Я хочу знать, как следовать этой последовательности ??   -  person pallavi    schedule 23.06.2016
comment
это группа, которую я хочу изменить QuickFix.FIX50.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX50.MarketDataRequest.NoRelatedSymGroup(); symbolGroup.Set(новый символ(abc));symbolGroup.Set(новый SecurityType(efg));symbolGroup.Set(новый SecuritySubType(PERIOD));symbolGroup.Set(новый SecurityID(abc)); symbolGroup.SetField (новый StringField (20000, 1M)); symbolGroup.Set (новый SecurityIDSource (8)); Сообщение QuickFix.FIX50.MarketDataRequest = новое сообщение QuickFix.FIX50.MarketDataRequest(mdReqID, subType, marketDepth); сообщение.AddGroup(symbolGroup);   -  person pallavi    schedule 23.06.2016
comment
У вас нет согласованного между вами и контрагентом технического листа FIX, в котором упоминаются сообщения и их составляющие? Получите это и начните читать. Вы получите множество этих ошибок во время тестирования. Поэтому очень важно понять, почему возникает эта ошибка, чтобы исправить ошибки, которые могут возникнуть позже.   -  person DumbCoder    schedule 23.06.2016
comment
@PralayakaveriPallavi Вы не читаете слова, которые мы печатаем. Ваша проблема не в порядке тегов.   -  person Grant Birchmeier    schedule 23.06.2016


Ответы (1)


Исключение out of range, которое вы получаете, связано не с порядком полей сообщения FIX4.4, а с содержимым одного конкретного тега поля 625. Этот тег обычно называется TradingSessionSubID и обычно ожидается содержание STRING. Однако ваша конфигурация может легко переопределить его как нечто совершенно другое. Ваш файл определения словаря будет иметь точное требование для вашей реализации, вам лучше посмотреть там, файл часто называется что-то вроде FIX44.xml.

Редко возникает необходимость изменить порядок полей сообщения FIX. Вы можете попробовать изменить порядок полей для вашего конкретного сообщения в файле определения словаря и посмотреть, поможет ли это вам.

person JimmyNJ    schedule 13.03.2017