2015-06-29 5 views
1

Я использую FIXT1.1 и приложение FIX версии 5.0SP2.Quickfixj не соблюдение настраиваемых полей в повторяющейся группе

Я добавил некоторые пользовательские поля в QuotSetAckGrp, часть сообщения MassQuoteAcknowledgement. Однако, когда quickfix читает повторяющуюся группу, он не считывает настраиваемые поля как часть повторяющихся групп. Вместо этого он обрабатывает настраиваемые поля, которые являются обычными полями родительского уровня, и бросает «Тег появляется более одного раза».

Оцените любые входы, чтобы помочь решить проблему.

+0

Когда вы говорите, что добавили пользовательские поля, вы хотите сказать, что добавили их в FIX50SP2.xml и ссылались на них в своем файле конфигурации с помощью элемента AppDataDictionary? –

+0

@TT. находится на правильном пути. Это похоже на то, что произойдет, если вы не измените файл AppDataDictionary. Получатель не видит эти поля в определении повторяющейся группы внутри DD, поэтому предполагает, что они не находятся в повторяющейся группе. –

+0

Я добавил пользовательские теги в свой FIX50SP2.xml для приложения и подтвердил, что на мой словарь данных ссылаются, создавая некоторые условия ошибки. –

ответ

1

Вам необходимо изменить формулу приложения AppDataDictionary, чтобы она соответствовала сообщениям, отправляемым отправителем. Кроме того, вам необходимо установить UseDataDictionary=Y в свой конфиг.

QF/j должен посмотреть файл DD xml, чтобы узнать, какие поля находятся в повторяющейся группе, иначе он не может знать, где заканчивается каждый член группы.

Когда двигатель встречает поле, которое не входит в определение повторяющейся группы DD, оно предполагает, что текущий член группы закончился предыдущим тегом.

Вот HOWTO для настройки вашего DD: http://quickfixn.org/tutorial/custom-fields-groups-and-messages

(выше ссылка для QF/п, но это почти то же самое для QF/у.)

+0

Да, я добавил AddDataDictionary = Y. Возможно, я смогу загрузить свой DD и сообщение, которое вызывает проблему. Может быть, я что-то пропустил. –

0

См QuickFIX/J User FAQ, тему «I изменил мой словарь данных. Должен ли я восстановить/перестроить QF/J? ».

OUTGOING MSGS: Файл DD xml не имеет значения при построении исходящих сообщений . Вы можете в значительной степени добавить все поля, которые вы хотите отправить сообщениям , используя общие настройки полей (setString, setInt и т. Д.) И QF позволит вам. Единственная проблема с повторяющимися группами. QF будет записать порядок повторяющихся групп элементов в соответствии с DD, который был , используемый для генерации кода. Если вы изменили какие-либо группы, входящие в состав исходящих сообщений , вам необходимо ОСОБЕННО перестроить.

Чтобы восстановить QuickFIX/J, чтобы принять пользовательский словарь данных, см. Ответ, который я дал в following StackOverflow post.

HTH.

+0

Хех, я написал это :) –

+0

@GrantBirchmeier Теперь, когда вы упомянули об этом :), это никогда не приходило мне в голову. –

+0

Для исходящего сообщения - вы правы. В моем случае это входящее сообщение, которое вызывает проблему. Сообщение: 8 = FIXT.1.1^A9 = 205^A35 = b^A34 = 10^A49 = counterParty^A52 = 20150629-17: 47: 09.416^A56 = my_fix_id^A117 = 1020053-3-1- 17-18^A296 = 2^A302 = 2I65BZBO920200320^A20129 = 2^A21002 = INVALIDID^A302 = 2I65BZBO920200320^A20129 = 2^A21002 = INVALIDID^A297 = 5^A10 = 249^A Компонент QuotSetAckGrp модифицирован в словарь данных для включения тегов 20129 и 21002 в качестве элементов, и они определены в разделе данных словаря данных . –