在 QuickFix 中,由什么设置的 RelatedSymGroup 顺序

In QuickFix what is the RelatedSymGroup order set by

相关,交易方提供者引擎以某种方式设置为检查 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 但是还有其他方法吗?

1.6.2 等其他 quickfix 版本中,拒绝消息是 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