c# - FIX 阅读重复组

标签 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));
    ....
}

但这不是它的工作方式,我还没有找到有更好解释的文档。

感谢您的帮助, 约纳坦。

最佳答案

根据您的代码片段,我认为您正在使用 QuickFIX/n , native 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

关于c# - FIX 阅读重复组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341693/

相关文章:

c# - wpf 中的文本框验证

c# - 关于 ComponentModel 和反射

python - Quickfix 读取自定义重复组

quickfix - 修复传输登录消息、用户名/密码配置

quickfix - Quick Fix 基于 Java 的 Fix 客户端 - 发送消息和接收响应是否都需要套接字发起者和接受者

c# - 支持和反对使用 Java/C#(包括 XNA)/Unity 开发游戏的原因是什么?

c# - System.InvalidOperationException : Value must be set. 为 SQLite 设置空参数

java - fastfix.Message 无法转换为quickfix.fix50sp2.Message

mysql - Windows 上的 QuickFix 使用 Python - 使用 MYSQL 处理事件和消息

java - quickfix/field/HaltReason 不可分配给 'quickfix/IntField