微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在QuickFix中,RelatedSymGroup的顺序是什么

如何解决在QuickFix中,RelatedSymGroup的顺序是什么

this question相关,对方提供者引擎已设置为检查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.getFieldOrderg.SetFields,但是还有另一种方法吗?

enter image description here

据我所知,出于相同的原因,在其他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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。