FIX阅读重复组

时间:2013-03-11 14:55:42

标签: c# quickfix fix-protocol

我有一个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。

1 个答案:

答案 0 :(得分:4)

从您的代码段开始,我认为您正在使用QuickFIX/n,即本地C#实现,因此我将做出相应的回答。

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