相关这个问题 https://stackoverflow.com/questions/32012881/quickfixj-swaps-group-order交易对手提供商引擎以某种方式设置为检查 FIX 标签的组顺序并拒绝任何不符合预期顺序的内容。
- 为什么预期标签组顺序很重要?我想按给定的顺序验证标签会更快。
- 预期标签组顺序如何设置?我知道这是一个随机哈希集,但没有意义,它不依赖于数据字典中标签的顺序吗?
- 除了重写类来设置组顺序之外,是否还有可以使用的快速修复设置?
准确地说是 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
and g.SetFields
但还有别的办法吗?
在其他快速修复版本中,例如1.6.2
拒绝消息是Out of order repeating group members
据我所知,出于同样的原因。
感谢@ChristopheJohn,我在 QuickFixN 中使用了代码:
using QuickFix;
class MyGroup : Group
{
private static int[] FIELD_ORDER = { 460, 1300, 167, 55, 15, 38, 64, 1, 553, 0 };
public MyGroup() : base(146, 460, FIELD_ORDER) { }
}
我从我的消息构造方法中调用了它MyGroup g = new MyGroup();
请注意0
在字段顺序的末尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)