2013-06-24 4 views
1

Я отправляю стандартное сообщение с запросом на увеличение информационного сообщения по рынку (35 = V) и начинаю получать инкрементные обновления. В большинстве случаев все нормально и денди. Однако время от времени я получаю странное сообщение «Не найдено». Например:«Поле не найдено», когда поле присутствует

(8 = FIX.4.2☺9 = 00221☺35 = X☺49 = XXX☺56 = XXX☺34 = 4☺52 = 20130624-07: 27: 06.706☺262 = XXX☺ 268 = 2☺279 = 2☺55 = ZN☺48 = 00A0IN00ZNZ☺10455 = ZNU3☺167 = FUT☺207 = CBOT☺15 = USD☺200 = 201309☺ 290 = 1 ☺269 = 0☺270 = 126,4375☺ 271 = 9☺387 = 12237☺279 = 0☺269 = 0☺270 = 126.421875☺271 = 57☺10 = 176☺)

поля не найден

(сообщение 4 Отклонено: Условно заполнена обязательное поле: 290)

(8 = FIX.4 .2☺9 = 119☺35 = j☺34 = 3☺49 = XXX☺52 = 20130624-07: 27: 07.037☺56 = XXX☺45 = 4☺58 = Условное обязательное поле отсутствует (290) ☺372 = X ☺380 = 5☺10 = 144☺)

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

Итак, в чем заключена сделка? Кто-нибудь видел такое поведение раньше?

Я использую привязки Python. Исправить 4.2, Python 2.7.

И для полноты картины, вот сообщение (на следующий один), который не получил отвергнут:

(8 = FIX.4.2☺9 = 00188☺35 = X☺49 = XXX☺56 = XXX☺34 = 5☺52 = 20130624-07: 27: 06.706☺262 = XXX☺268 = 1☺279 = 1☺55 = ZB☺48 = 00A0IN00ZBZ☺10455 = ZBU3☺167 = FUT☺207 = CBOT☺15 = USD☺200 = 201309☺290 = 1☺269 = 1☺270 = 135.15625☺271 = 13☺387 = 5111☺10 = 156☺

(И нет, разница в теге 55 между отклоненные и принятые сообщения не являются причиной этого. QuickFix обнаружил 290 в количестве 55 = сообщений ZN.)

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

Спасибо за любую помощь.

+0

Я не уверен, что с смайликами в этом коде. Я бы сперва убрал их с дороги. – kramer65

+0

Улыбки - разделители. Они должны быть там. Это не код, как таковой. Это сообщение FIX. – Wapiti

+1

Смайлы в порядке. Различные редакторы иногда конвертируют нулевой разделитель в странные символы; пока разделители видны, все хорошо. –

ответ

4

У этого сообщения есть повторяющаяся группа из двух MDEntries. Поле 290 появляется в первом, но не второе. Вероятно, ваш код пытается извлечь 290 из второго и, таким образом, получит ошибку.

Группа 1 (290): 279=2☺55=ZN☺48=00A0IN00ZNZ☺10455=ZNU3☺167=FUT☺207=CBOT☺15=USD☺200=201309☺290=1☺269=0☺270=126.4375☺271=9☺387=12237☺

Группа 2 (не хватает 290):
279=0☺269=0☺270=126.421875☺271=57☺

Проверьте код, который извлекая 290. Пут в случае поля-это-настоящее проверка так что он не пытается извлечь поле, которого там нет.

+0

Да, я уверен, что это так. Укушен повторением групп! Спасибо, Грант, за вашу помощь еще раз. Я хотел спросить о том, как проверить, находится ли поле в сообщении FIX, потому что я не вижу никакого способа сделать это в документации QuickFix, и, насколько я понимаю, проверка на самом питоне (например, try/except) не будет работать. Мне просто кажется, что эту проверку нужно как-то назвать методом QuickFix. Любые указатели? – Wapiti

+2

[FieldMap :: isSetField()] (http://www.quickfixengine.org/quickfix/doc/html/class_f_i_x_1_1_field_map.html), вероятно, вы хотите. Для группы вам нужно вызвать 'isSetField' в объекте * Group *, а не в * Message *. Как насчет повышения моей проблемы? :) –

+0

Отлично, я проверю это. Я бы возвысил тебе много, ты этого заслуживаешь, но у меня нет репутации. Как насчет того, чтобы поддержать меня за техничность моих вопросов, и в конце концов я могу вернуть пользу? ;) Еще раз спасибо Грант. – Wapiti

-1

пожалуйста, смотрите на этой странице: http://www.onixs.biz/fix-dictionary/4.2/msgType_X_88.html

в пункте, начиная с: «Добавление, изменение или удаление рынка записей данных»

Я никогда не работал с такого рода сообщений, но надеюсь, что это поможет.

+0

Спасибо за ссылку, stexcec. Onixs - удобный веб-сайт, и я иногда туда езжу, затем я узнал, что они в основном скопировали и вставляли весь контент из fixwiki! – Wapiti

+3

FIXIM для победы: http://fixprotocol.org/FIXimate3.0/ –

+0

Извините за мой плохой ответ. Спасибо всем. – stexcec