2013-03-11 55 views
1

我有一個FIX日誌文件。我迭代上線,將每個字符串轉換成FIX閱讀重複組

Message m = new Message(str, false) 

由於某種原因,驗證該文件(甚至第一行)失敗。現在,我看到它是一個35 = X類型,268 = 4(即NoMDEntries = 4,所以我應該有4組消息)

但是,在調試顯示中,我沒有看到任何組。 m.base._groups具有0

字符串中的問題計數是:

1128=9 | 9=363 | 35=X | 49=CME | 34=3151 | 52=20121216223556363 | 75=20121217 | 268=4 | 279=0 | 22=8 | 48=43585 | 83=902 | 107=6EH3 | 269=4 | 270=13186 | 273=223556000 | 286=5 | 279=0 | 22=8 | 48=43585 | 83=903 | 107=6EH3 | 269=E | 270=13186 | 271=9 | 273=223556000 | 279=0 | 22=8 | 48=43585 | 83=904 | 107=6EH3 | 269=F | 270=13185 | 273=223556000 | 279=1 | 22=8 | 48=43585 | 83=905 | 107=6EH3 | 269=0 | 270=13186 | 271=122 | 273=223556000 | 336=0 | 346=10 | 1023=1 | 10=179 | 

另一件事是我怎麼看的羣體?出於本能,我想這樣做

for (int i = 1; i <= noMDEntries; i++) { 
    Group g = m.GetGroup(i); 
    int action = Int32.Parse(g.GetField(279)); 
    .... 
} 

但是,這豈不是如何工作的,我還沒有發現的文件提供更好的解釋。

感謝您的幫助, Yonatan。

+0

您是否使用原始的QuickFIX(C++包裝器)或QuickFIX/n(原生C#impl)? – 2013-03-11 15:22:02

回答

3

從您的代碼片段中,我認爲您使用的是原生C#實現QuickFIX/n,因此我會相應地回答。

1)您的消息構造失敗,因爲您沒有提供DataDictionary。

使用Message::FromString代替:

Message m = new Message(); 
m.FromString(msg_str, false, data_dic, data_dic, someMsgFactory); 

更妙的是,使用MarketDataIncrementalRefresh::FromString得到正確的類型。

這裏你可以看到這個功能的一些用法:
https://github.com/connamara/quickfixn/blob/master/UnitTests/MessageTests.cs

2)閱讀羣體......嗯,QF/N對一個文檔頁面,我想解釋這非常好。
http://quickfixn.org/tutorial/repeating-groups

+0

我使用了組測試中的代碼,將FIX44.xml加載到數據字典中,但FromString引發「UnsupportedVersion:9」 查看日誌,沒有標籤8。可以這樣做嗎?如果我手動將它添加到每個日誌行的前面會發生什麼? – 2013-03-11 18:24:12

+0

我不知道你用什麼樣的日誌作爲輸入,但是如果你的FIX消息沒有以「8 =」開頭,那麼它們就是無效的FIX消息。 – 2013-03-11 19:45:07