quickfixj 交换组顺序

rup*_*web 2 quickfix quickfixj

我想生成一个包含 2 个组NoMDEntryTypes(267) 和NoRelatedSym(146)的市场数据请求,如下所示:

267=2 269=0 269=1 146=1 55=EUR/USD
Run Code Online (Sandbox Code Playgroud)

但是当我以某种方式发送消息时,quickfixj 或我的数据字典将组的顺序交换为以下内容:

146=1 55=EUR/USD 267=2 269=0 269=1 
Run Code Online (Sandbox Code Playgroud)

即使我创建了一个直接字符串消息并通过我的数据字典对其进行验证,也会发生这种情况。

我该怎么做才能使组按我想要的顺序排列?!谢谢

Gra*_*ier 5

在 FIX 中,顶级正文中的标记顺序无关紧要。各种 QuickFIX 引擎的Message对象内部表示忽略了顶级标签顺序,因为存储它没有任何好处。当消息转换为字符串时,它按数字标记顺序对它们进行排序。 根据 FIX,它不会以任何有意义的方式更改消息。

(顺序在重复组内保留,因为 FIX 确实要求顺序在组内有意义。)

我该怎么做才能使组按我想要的顺序排列?!

对于 QuickFIX,答案是:不能

如果这对您的需求来说真的是一个大问题(没有理由应该这样做),那么我想您将不得不探索其他 FIX 引擎选项。

  • 因为 `Message` 类将顶级正文字段存储在一个由标签键控的 `HashMap`(我认为)中。哈希不保留顺序。它需要额外的编码来存储订单信息,这是不值得的,因为 FIX 不关心订单。 (3认同)