Чтение повторяющихся групп в пользовательских сообщениях с использованием Python Quickfix - PullRequest
2 голосов
/ 15 февраля 2012

Я пытаюсь читать из механизма FIX, используя Python и Quickfix, и мне удалось заставить механизм распознавать пользовательские сообщения путем изменения используемого словаря данных (с необходимыми группами сообщений).

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

import quickfix
import quickfix42

noMDEntries = quickfix.NoMDEntries()
message.getField(noMDEntries)

group = quickfix42.MarketDataSnapshotFillRefresh.NoMDEntries()
MDEntryType = quickfix.MDEntryType()
MDEntryPx = quickfix.MDEntryPx()
MDEntrySize = quickfix.MDEntrySize()
orderID = quickfix.OrderID();

message.getGroup(1, group);
group.getField(MDEntryType);
group.getField(MDEntryPx);
group.getField(MDEntrySize);
group.getField(orderID);

... что хорошо для сообщений FIX. Когда я пытаюсь сослаться на свое собственное сообщение, вот так:

group = quickfix.CustomMessage.NoMDEntries()

... Я получаю ошибку атрибута.

Есть идеи, как читать повторяющиеся группы в пользовательских сообщениях?

Редактировать 1:

Я нашел взлом, но уверен, что есть лучший способ сделать это ...

for i in range(int(message.getField(NoMDEntries):
    group = quickfix.Group(int(message.repeatingField), int(message.delimField))
    message.getGroup(i+1, group)
    print group.getField(MDEntryPx)
    #do something with repeating fields etc

... идеи кто-нибудь?

1 Ответ

1 голос
/ 15 февраля 2012

Не уверен насчет заглушки Python, которую вы предоставили, но я вижу, возможно, проблему.

group = quickfix42.MarketDataSnapshotFillRefresh.NoMDEntries()

Здесь вы получаете внутренний объект класса внутри MarketDataSnapshotFullRefresh (вы, вероятно, ошиблись в его объекте MarketDataSnapshotFillRefresh).

group = quickfix.CustomMessage.NoMDEntries()

Здесь вы, вероятно, получите число (количество) повторяющихся групп внутри повторяющейся группы вместо объекта класса.

Quickfix предоставляет метод getGroup для просмотра членов группы, поэтому используйте его вместо того, чтобы делать это самостоятельно.

...