使用Python Quickfix读取自定义消息中的重复字段
我正在用Python和Quickfix从一个FIX引擎读取数据,已经通过修改数据字典(包括必要的消息组)让引擎识别自定义消息。
现在我遇到的问题是如何从这些自定义消息中读取重复组。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
...有没有人有什么想法?
2 个回答
0
请在你的文档中删除下面的代码:
message.getField(noMDEntries)
然后它就能正常工作,帮你获取你想要的值。
1
我不太确定你提供的Python代码,但我觉得可能有个问题。
group = quickfix42.MarketDataSnapshotFillRefresh.NoMDEntries()
在这里,你可以获取到MarketDataSnapshotFullRefresh这个对象里的内部类对象(你可能把它拼错成了MarketDataSnapshotFillRefresh)。
group = quickfix.CustomMessage.NoMDEntries()
这里你得到的可能是重复组里面的重复组数量,而不是类对象。
Quickfix提供了一个getGroup方法,可以用来查看组成员,所以最好用这个方法,而不是自己去实现。