2010-02-22 2 views
26

Как вы анализируете сообщение FIX с помощью python? (FIX сообщения, как в Протоколе «финансовом» FIX)Лучший способ разобрать сообщение FIX?

+4

13 до голоса и закрыл! Отличная работа! – chrisapotek

+3

этот вопрос интересовал меня тоже, как жаль, что он закрыт. – Guillaume07

+0

Хотя вопрос специфичен для .NET, здесь есть некоторые общепринятые идеи: http://stackoverflow.com/questions/4907848/whats-the-most-efficient-way-to-parse-fix-protocol-messages- in-net – SteveWilkinson

ответ

9

Вы имеете в виду, используя QuickFIX? (Я вижу QuickFIX в ваших тегах)

если это так, я не знаю. Как правило, нет простого написания простого синтаксического анализа для сообщения FIX. Я нашел, что веб-инструменты на valid fix выполняют эту работу.

+0

QuickFix используется в качестве базового анализатора FIX рядом компаний, которые предоставляют синтаксические анализаторы FIX. Его довольно легко получить парсер QuickFIX, я бы предложил вам попробовать. – Luhar

1

Там не один лучшего пути, но, учитывая QuickFix тега, который вы или систему SO прикрепленную, взгляд на QuickFix с открытым исходным кодом FIX двигателя будет хорошее место для начала.

Есть много коммерческих продавцов, если вы находитесь в компании, где это имеет значение, или если вы хотите больше поддержки и услуг.

Удача

4

Формат FIX является на удивление раздражающим для синтаксического анализа (поскольку формат, отличный от XML, то есть тот, который все еще используется почти всем, не имеет маркеров начала и конца подгруппы, вместо этого вы должны работать с ним на основе правил упорядочения тегов , и теги, которые не входят в подгруппу, заголовок или хвост могут быть в любом порядке).

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

Единственная ухоженная версия с открытым исходным кодом - это библиотека Java QuickFIX/J.

Существует множество коммерческих решений, например. CameronFIX

+1

Также поддерживается библиотека QuickFIX C++. –

6

Помимо использования фактического quickfixengine, легко разобрать сообщение об ошибке, когда вы знаете, что оно содержит определенные теги.

Он содержит 0x1 отдельных пар строк «ключ = значение». Одно из осложнений - это группы, потому что вам нужно понять, что тег является первым в группе (заголовок группы), а затем вычисляется, когда группа заканчивается (когда она попадает в другой тег не в группе).

Еще одно проблемное поле - это RawData, которое может содержать что угодно, включая разделитель полей 0x1, но ему предшествует RawDataLength, поэтому вам нужно сначала прочитать это, а затем прочитать RawDataLength количество байтов после тега RawData, чтобы перейти к следующему полю ,

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

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

2

Из исходного кода quickfixj он использует treeMap для обработки сообщения FIX.

относительно формата XML, я думаю, что FIX лучше, хотя разбор в JAVA сложнее. coz XML слишком тяжелый.

+0

Я согласен с FIX над XML, за исключением кровавых повторяющихся групп. – ProfK

+0

Я согласен с ProfK. Повторяющиеся группы для вечеринок и т. Д. - это боль. – Kelly

+0

Кроме того, большинство людей пытается «разобрать» сообщение FIX, разделяя SOH, что полностью игнорирует проблему RawData (тег 96). Кстати, использование TreeMap, вероятно, не самый лучший подход, потому что это затрудняет распознавание и поддержку повторяющихся тегов в вашем сообщении. Я думаю, что список, вероятно, является лучшим представлением структуры данных. – noahlz

Смежные вопросы