与此问题相关,交易对手提供商引擎以某种方式设置为检查 FIX 标签的组顺序并拒绝任何超出预期顺序的内容。
- 为什么预期的标签组顺序很重要?我想以给定的顺序验证标签会更快。
- 预期标签组顺序如何设置?我知道这是一个随机哈希集,除了没有意义,它不依赖于数据字典中标签的顺序吗?
- 除了重写一个类来设置组顺序之外,还有一个 quickfix 设置可以使用吗?
确切地说是 QuickFix 版本2.2.0
,我发送以下消息
8=FIX.4.4 9=173 35=R 34=2 49=CLIENT 52=20200909-18:11:10.426 56=SIMULATOR 131=EEB85F9C 146=1 55=EUR/USD 460=4 167=FOR 38=1000.0 64=SP 15=EUR 1=FOR 553=test 1300=XOFF 10=086
并收到拒绝
8=FIX.4.4 9=145 35=3 34=2 49=SIMULATOR 52=20200909-18:11:10.427 56=CLIENT 45=2 58=The group 146 must set the delimiter field 460 371=55 372=R 373=15 10=224
因此,在发送的消息中,标签460
在标签之后55
,我无法以相反的方式获取这些标签。在代码中我设置了重复组g
QuickFix.FIX44.QuoteRequest.NoRelatedSymGroup g = new QuickFix.FIX44.QuoteRequest.NoRelatedSymGroup();
并按我要查找的顺序将数据添加到组中,例如:
Product product = new Product(4);
g.Product = product;
Symbol symbol = new Symbol("EUR/USD");
g.SetField(symbol);
等等...我正在看,g.getFieldOrder
但是g.SetFields
还有其他方法吗?
据我所知,在其他 quickfix 版本1.6.2
中,例如拒绝消息也是出于同样的原因。Out of order repeating group members