Неверное количество NumInGroup для повторяющейся группы QuickFix

Я не могу разобрать это сообщение об инкрементном обновлении рыночных данных (исправление 4.3):

8=FIX.4.3|9=187|35=X|34=4|49=XDEMO|52=20130224-22:31:05.283|56=demo310262=A|268=2|279=2|269=0|278=0014vd32|55=EUR/USD|290=1|64=20130227|279=0|269=0|278=0014vdb2|270=1.31934|271=1000000|290=1|546=3|10=124

Quickfix / j дает мне следующее:

quickfix.FieldException: неправильный счетчик NumInGroup для повторяющейся группы, поле =268

Я знаю, что это повторяющаяся групповая проблема, но я не совсем уверен, как изменить мою спецификацию, чтобы проанализировать это сообщение.

1 ответ

Решение
Group: 268=2|
  Item 1: 279=2|269=0|278=0014vd32|55=EUR/USD|290=1|64=20130227|
  Item 2: 279=0|269=0|278=0014vdb2|270=1.31934|271=1000000|290=1|546=3|

Поле 64 по умолчанию не является частью повторяющейся группы NoMDEntries (268). Когда синтаксический анализатор достигает 64, он думает, что достиг конца конца повторяющейся группы, и что первый и единственный элемент группы завершился в первом 290.

XML-файл DataDictionary довольно прост для понимания, если вы посмотрите на него в течение нескольких минут. Предполагая, что ваш отправитель намеренно хочет, чтобы 64 был в этой группе, вам просто нужно найти определение для сообщения X (MarketDataIncrementalRefresh) и добавить поле 64 (FutSettDate) в его надлежащее место в этой группе. (Эта группа или ее часть может быть определена в компоненте, но я думаю, что вы сможете понять это.)

Примечание: порядок полей важен. Убедитесь, что вы добавили его в строку после 290 (MDEntryPositionNo) и до или после любых других необязательных полей, которые могут появиться в элементе группы.

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

Другие вопросы по тегам