2013-03-19 30 views
2

我使用Python API運行QuickFix並使用FIX4.2連接到TT FIX適配器quickfix:如何從消息中獲得符號(標誌55)?

我登錄併發送兩個儀器的市場數據請求。這工作正常,儀器的數據按預期進入。我可以從消息中獲得各種信息。

但是,我無法獲取符號(標誌55)字段。

import quickfix as fix 

    def fromApp(self, message, sessionID): 

     ID = fix.Symbol() 
     message.getField(ID) 
     print ID 

這適用於我的第一條消息[初始市場數據快照(標誌35 = W)]。一旦我開始獲得增量刷新(標誌35 = X),我不能再獲得符號字段。每個到達的消息都會導致「未找到字段」錯誤。

這是混淆我,因爲在日誌中,該符號字段總是存在,消息類型是否是W或X.

思考的符號是在刷新消息的報頭中,我試圖get.Field(ID)當35 = W和get.Header().getField(ID)當35 = X時,但是這不起作用。

有人能幫我弄清楚這裏發生了什麼嗎?我希望能夠明確地告訴我的電腦它正在看什麼工具。

謝謝

回答

4

你的問題很簡單,但你也混淆了一些誤解。

1)符號將永不在標題中。這是一個身體領域。

2)在X消息中,符號位於重複組中。你首先必須得到一個組對象msg.GetGroup(),然後從得到的符號。見this example code,來自repeating groups doc page

3)在W消息中,符號不在一個組中。這就是爲什麼它適合你。

看起來你很清楚QuickFIX和FIX是相當新的。我想你應該花幾分鐘時間瀏覽the docs的「使用郵件」部分。

此外,FIXimate網站可以成爲你最好的朋友。

+0

Hi @Grant, 是的,我對一切都很陌生,編程本身。我自己解決了大約四十個問題,只問我什麼時候完全被困住了。我感謝您的幫助。 我已經從重複組中獲取數據,一直在QuickFix文檔中上下移動,並且始終訪問FIXimate。只是讓你知道我並不想讓別人爲我解決我的問題。 我不認爲Symbol是在一個組中,因爲在我的日誌中,它從來沒有重複過。這必定是一種特質,或者可能是滾動,我沒有達到它重複的那幾條消息。 再次感謝。 – Wapiti 2013-03-19 01:13:54

+2

重複組的大小可能爲1,例如它實際上並沒有重複:)看看字段268;它會告訴MDIncGroup中有多少個MDEntries。我敢打賭,你正在分析的特定消息是268 = 1。 – 2013-03-19 01:45:01

+1

(如果我的答案解決了您的問題,請不要忘記將其標記爲「已接受」。) – 2013-03-19 01:46:02