在 QuickFix 中,由什么设置的 RelatedSymGroup 顺序
In QuickFix what is the RelatedSymGroup order set by
与 相关,交易方提供者引擎以某种方式设置为检查 FIX 标签的组顺序并拒绝任何超出预期顺序的内容。
- 为什么预期的标签组顺序很重要?我猜按给定顺序验证标签会更快。
- 标签组的预期顺序是如何设置的?我理解这是一个随机哈希集,除了没有意义,它不依赖于数据字典中标签的顺序吗?
- 除了重写一个 class 来设置组顺序之外,是否有一个 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
但是还有其他方法吗?
在 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
。
与
- 为什么预期的标签组顺序很重要?我猜按给定顺序验证标签会更快。
- 标签组的预期顺序是如何设置的?我理解这是一个随机哈希集,除了没有意义,它不依赖于数据字典中标签的顺序吗?
- 除了重写一个 class 来设置组顺序之外,是否有一个 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
但是还有其他方法吗?
在 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
。