在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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...