Отсутствует обязательное поле QuickfixJ, даже если оно есть

Я получаю сообщение об ошибке «Условно обязательное поле отсутствует», хотя я уверен, что это поле существует.

58=Conditionally Required Field Missing, field=55

Версии:

QuickFixJ 2.1.0

ИСПРАВЛЕНИЕ 4.4

Вот сообщение FIX, которое я отправляю (с фиктивными значениями и несколькими удаленными полями для ясности)

8=FIX.4.4
9=709
35=R
34=4
49=TARGET
56=ME
11=myClOrdID
131=myQuoteReqID
146=myNoRelatedSym
55=mySymbol          // field missing
167=mySecurityType   // field missing

Вот код вызова:

String symbol = quoteRequest.getField(new StringField(55)).getValue();

Я также пробовал:

String symbol = quoteRequest.getString(55);

Вот мой словарь данных:

<field number="55" name="Symbol" type="STRING"/>

Я понимаю, что поле символа больше не является частью спецификации QuoteRequest FIX для 4.4 (хотя оно было в более ранних версиях, таких как 4.0), однако наверняка есть способы получить настраиваемые поля? Я не могу контролировать сообщение QuoteRequest, которое я получаю.

Я всегда могу сам разобрать сообщение, используя toString(), но это, в первую очередь, противоречит цели использования quickfixj.

Есть идеи?


person Tiberiu    schedule 09.01.2019    source источник


Ответы (1)


Тег 55 находится внутри повторяющейся группы 146. См. документацию по чтению повторяющихся групп.

Поле символов по-прежнему находится в FIX44. Вам следует потратить некоторое время на ознакомление с файлом словаря данных FIX44.xml, который вы используете.

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

person Grant Birchmeier    schedule 09.01.2019
comment
большое спасибо! Пс. Я имел в виду, что поля символа больше нет в спецификации QuoteRequest 4.4. - person Tiberiu; 09.01.2019