私はPythonとQuickfixを使用してFIXエンジンから読み込もうとしていますが、必要なメッセージグループを使用して、使用されているデータ辞書を変更してエンジンにカスタムメッセージを認識させました。Pythonを使用してカスタムメッセージの繰り返しグループを読むQuickfix
私が今直面している問題は、カスタムメッセージから繰り返されるグループを読むことです。 quickfix documentationには、次の情報が表示されます。
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
...アイデア誰ですか?
あなたの編集は、あなたの質問に対する確かな解決策です。市場データのスナップショットメッセージのようなクイックフィックス標準は、リピータとデリミタの標準的なフィールドエントリを遵守しているのと同じように、quickfix.Groupのカスタムインスタンスを内部的に呼び出します。 1つのヒントは、グループエントリは一度だけインスタンス化する必要があり、ループの外で実行できることです。 (グループエントリの単一インスタンシエーションパターンについては、クイックフィックスドキュメントのパターンを参照してください:http://www.quickfixengine.org/quickfix/doc/html/python/repeating_groups_2.html)。 – chinnychinchin