2012-02-15 159 views
1

我試圖從使用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 

...想法嗎?

+0

你的編輯是一個堅實的解決你的問題。與市場數據快照消息一樣,quickfix標準以與您類似的方式在內部調用quickfix.Group的自定義實例 - 只需遵守中繼器和分隔符的標準字段條目即可。一個技巧是組條目只需要實例化一次,並且可以在循環之外完成! (對於組入口單實例化模式,請參閱quickfix文檔中的模式:http://www.quickfixengine.org/quickfix/doc/html/python/repeating_groups_2.html)。 – chinnychinchin 2017-01-13 16:53:20

回答

0

不確定你提供的Python存根,但我看到一個問題。

group = quickfix42.MarketDataSnapshotFillRefresh.NoMDEntries() 

在這裏,你得到MarketDataSnapshotFullRefresh內側的內部類對象(你可能已經拼錯它MarketDataSnapshotFillRefresh)對象。

group = quickfix.CustomMessage.NoMDEntries() 

在這裏,你可能得到的是重複重複組內的組數(計數),而不是類對象。

Quickfix提供了getGroup方法來瀏覽組成員,所以使用它而不是自己做。

+0

感謝您的指針...但是,我無法從字典訪問CUSTOMMESSAGE ...我怎麼可以參考的自定義消息字段和/或團體的任何想法? – pynoob 2012-02-16 10:15:59