我希望有人可以了解Quickfixn引擎如何处理传出的FIX消息......我有一个传出的连接设置,我正在获得心跳。然而,当我生成传出消息时,它会被拒绝,因为它表示标记58对于此消息类型无效...(35 = AE)...通常,如果这是入站连接,我只能修改数据字典一切都会好的......但看看这是一个传出的连接,加上我有我的 UseDataDictionary属性设置为'N'... quickfix引擎用于验证传出消息的内容是什么?是否可以更改某些内容以允许引擎传递消息?或者是唯一不在我的外发邮件中包含此标记的解决方案?
对此事的任何帮助将不胜感激。
编辑 -
该邮件被quickfix引擎拒绝。我正在构建的消息和相应的拒绝消息是:
8 = FIX.4.4 9 = 400 35 = AE 34 = 38 49 = XXX 52 = 20130528-23:11:04.040 56 = YYY 31 = 1.3022 32 = 1000000.00 39 = 0 55 = EUR / USD 58 = ABCD 60 = 20130528-22:34:52.000 64 = 20130531 75 = 20130529 570 = N 571 = ABCD 5495 = 0 5971 = 1302200.00 552 = 1 54 = 2 37 = ABCD 453 = 3 448 = LP1-DBAB 447 = D 452 = 17 448 = XXX 447 = D 452 = 1 448 = XXX 447 = D 452 = 19 15 = 120欧元= 10美元= 082
8 = FIX.4.4 9 = 130 35 = 3 34 = 38 49 = YYY 52 = 20130528-23:11:04.283 56 = XXX 45 = 38 58 =此消息类型未定义标签371 = 58 372 = AE 373 = 2 10 = 033
我看到传入的消息被quickfix引擎拒绝了,因为数据字典没有正确的消息规范......我认为这可能是同一件事,但传出连接似乎没有用数据字典。
答案 0 :(得分:1)
您的FIX库不会拒绝邮件。该消息将被发送到对方,然后在收到并验证时将其拒绝为无效。原因是因为标签58(如果存在)必须是“NoSides重复组(标签552)的一部分,在您的情况下它不是,使消息格式错误。你要做的是发送一个“逻辑”正确的消息。我建议您参考相应的FIX协议规范,以获取有关如何构造正确消息的参考。
答案 1 :(得分:0)
弗拉德的回答是正确的,但我想在你的问题中提醒你另一个危险。
我的UseDataDictionary属性设置为'N'</ p>
我90%确定你不想这样做。无论你认为使用=N
获得什么,都可能是基于对某事的误解。
如果没有DD,则无法读取包含重复组的邮件,因为引擎无法知道哪些字段位于哪个组中。
在实践中,每个场所都使用重复的组。因此,您需要设置UseDataDictionary=Y
和,您需要使用DataDictionary=<file>
指定xml文件。
我们在QF / n中允许=N
的唯一原因是与QF / C ++和QF / j一致。