Ошибка в отчете о размещении (FIX 4.4): первая запись группы 702 не начинается с разделителя 704.

Я новичок в протоколе FIX и использую QuickFIX для разбора своих сообщений FIX. Всякий раз, когда я получаю сообщение с отчетом о местоположении (AP), оно отклоняется механизмом FIX со следующей ошибкой:

Первая запись группы 702 не начинается с разделителя 704.

Здесь 702 — тег группы. Я провел небольшое исследование и обнаружил, что повторяющееся групповое сообщение использует свое первое поле в качестве разделителя. В моем случае группа 702 должна иметь тег 704 (LongQty) или 705 (ShortQty). Будет присутствовать только один из обоих тегов.

Мой контрагент не отправляет тег 703. Когда модуль FIX обнаруживает, что тег 704 в некоторых случаях отсутствует, он отклоняет сообщение. Пожалуйста, дайте мне знать ваше предложение по преодолению этой проблемы.


person Vivek Jeeva Kumar    schedule 05.10.2016    source источник


Ответы (1)


FIX предполагает, что каждая группа будет начинаться с одного согласованного тега.

Вы можете изменить этот тег в своем XML DataDictionary, например, чтобы использовать 704 вместо 703, переупорядочивая (или удаляя/добавляя) поля в этой группе.

В моем случае группа 702 должна иметь тег 704 (LongQty) или 705 (ShortQty).

Нет, это не сработает. Он всегда начинается с 704 или всегда начинается с 705? Это не может быть одно из двух.

Если ваш контрагент действительно говорит, что это одно из двух, то он делает FIX неправильно, и мы должны публично пристыдить его. (Серьезно, разве они не могут просто поставить 704=0 вместо того, чтобы опустить его?) Чтобы справиться с этим идиотизмом, вам, возможно, придется взломать движок QF.

Я предлагаю вам перепроверить у вашего контрагента, чтобы убедиться, что они действительно делают это неправильно. Я надеюсь (ради вас), что вы ошибаетесь.

ИЗМЕНИТЬ:

Это из спецификации FIX 44, том 1, стр. 19:

Если используется повторяющаяся группа, первое поле повторяющейся группы является обязательным. Это позволяет реализациям протокола использовать первое поле в качестве «разделителя», указывающего новую повторяющуюся запись группы. Первое поле, указанное после NoXXX, становится условно обязательным, если поле NoXXX больше нуля.

person Grant Birchmeier    schedule 05.10.2016
comment
Я дважды проверил свой словарь данных, мой контрагент ожидает любой из двух тегов. пожалуйста, посмотрите на сообщение ниже 20161004-18:20:15.063 : 8=FIX.4.49=23735=AP34=549=XXXX52=20161004-18:20:14.83556=XXXDEMOFIX1=9277455=GBPUSD231=1581=1702=1705 =27200710=XXXX715=20161004721=981a4eec-1886-4571-bd25-cf3c9e10115a728=0730=1,27940472230385731=1734=1,2794047223038510=198 - person Vivek Jeeva Kumar; 05.10.2016
comment
Вы имеете в виду, что контрагент отправляет (не ~ожидает~) любой из двух тегов, верно? Вы получатель. - person Grant Birchmeier; 05.10.2016
comment
да. Верно. Есть ли способ преодолеть это. - person Vivek Jeeva Kumar; 05.10.2016
comment
К сожалению нет. Вам придется взломать двигатель. Вы также должны сообщить им, что они неправильно используют FIX; может решат исправить. Похоже, это прописано в томе 1 спецификации протокола FIX; Вам следует найти отрывок (это несложно прочитать) в спецификации для соответствующей версии FIX (4.4, 5.0 и т. д.) и передать его контрагенту. - person Grant Birchmeier; 05.10.2016
comment
Я, вероятно, ошибаюсь, но я вижу в сообщении OP, опубликованном в комментарии 702, за которым следует 705. 703 требуется условно, если 702 > 1 (что не так). Затем должен следовать либо 704, либо 705 (они оба помечены как необязательные в определении I' я вижу) - person TT.; 06.10.2016
comment
@TT - Эта условно-обязательная аннотация для 703 противоречит общему требованию спецификации FIX, согласно которому группы должны начинаться с согласованного разделителя. Я могу только предположить, что аннотация 703 должна быть ошибкой. Если бы я реализовал стандартный FIX DD, я бы обрабатывал 703 по мере необходимости. - person Grant Birchmeier; 06.10.2016
comment
@TT - см. выдержку из спецификации, которую я добавил к моему ответу выше. - person Grant Birchmeier; 06.10.2016
comment
Обычно у меня складывается впечатление, что контрагент Вивека может быть новичком в FIX и использует специально созданное решение, а не проверенный движок. Не имея опыта работы с FIX и существующими механизмами, они не осознают, что повторяющиеся группы могут быть минным полем, и по незнанию отклонились от передовой практики. - person Grant Birchmeier; 06.10.2016