简体   繁体   English

QuickFixn传出连接

[英]QuickFixn Outgoing Connection

I was hoping someone can shed some light on how the Quickfixn engine handles outgoing FIX messages... I have an outgoing connection set up, and I'm getting heartbeats. 我希望有人能对Quickfixn引擎如何处理传出的FIX消息有所了解...我已经建立了传出连接,并且心跳加速。 When I generate an outgoing message however, it gets rejected because it says that tag 58 is invalid for this message type... (35=AE) ... Normally, if this was an inbound connection, I could just modify the Data Dictionary and everything would be fine... but seeing as how this is an outgoing connection, plus I have my UseDataDictionary property set to 'N' ... what does the quickfix engine use to validate the outgoing message? 但是,当我生成外发消息时,它会被拒绝,因为它说标记58对于此消息类型无效...(35 = AE)...通常,如果这是入站连接,我可以修改数据字典一切都会好起来的。。。但是,这是一个传出连接,再加上我的UseDataDictionary属性设置为“ N” ... quickfix引擎用来验证传出消息的内容是什么? Can something be changed to allow the engine to pass the message ? 可以更改某些内容以允许引擎传递消息吗? Or is the only resolution not to include this tag in my outgoing message? 还是唯一的解决方案,不在我的外发邮件中包含此标签?

Any help on this matter would be greatly appreciated. 在此问题上的任何帮助将不胜感激。

Edit- 编辑-

The message is getting rejected by the quickfix engine. 该消息被quickfix引擎拒绝。 The message that I'm constructing and the respective reject message are: 我正在构造的消息以及相应的拒绝消息是:

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=EUR 120=USD 10=082 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 = 3448 = LP1-DBAB 447 = D 452 = 17448 = XXX 447 = D 452 = 1 448 = XXX 447 = D 452 = 19 15 = EUR 120 = USD 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=Tag not defined for this message type 371=58 372=AE 373=2 10=033 8 = FIX.4.4 9 = 130 35 = 3 34 = 38 49 = YYY 52 = 20130528-23:11:04.283 56 = XXX 45 = 38 58 =未为此消息类型定义标签371 = 58372 = AE 373 = 2 10 = 033

I've seen incoming messages get rejected by the quickfix engine because the data dictionary didn't have the correct specs for the message... I thought this might be the same thing but the outgoing connection doesn't seem to use the data dictionary. 我已经看到传入消息被quickfix引擎拒绝了,因为数据字典没有正确的消息规范...我以为这可能是同一回事,但是传出连接似乎没有使用数据字典。

Your FIX library does not reject a message. FIX库不会拒绝消息。 The message is sent to the counter-party instead, which then rejects your message as invalid upon receiving and validating it. 该消息将被发送给对方,然后,对方会在收到并验证消息后将其视为无效消息。 And the reason for that is because tag 58, if present, must be a part of “NoSides repeating group (tag 552), which in your case it is not, making the message ill-formed. 这样做的原因是,标签58(如果存在)必须是“ NoSides重复组(标签552)”的一部分,在您的情况下不是,这会使消息格式错误。 What you have to do is send a "logically" correct message. 您要做的是发送“逻辑上正确”的消息。 I recommend you refer to the appropriate FIX protocol specification for a reference on how to construct a correct message. 我建议您参考适当的FIX协议规范,以获取有关如何构造正确消息的参考。

Vlad's answer is correct, but I want to alert you to one other danger in your question. 弗拉德的回答是正确的,但我想提醒您注意您的问题中的另一个危险。

I have my UseDataDictionary property set to 'N' 我的UseDataDictionary属性设置为“ N”

I am 90% sure you don't want to do this. 我90%确信您不想这样做。 Whatever you think you're gaining by using =N is probably based on a misunderstanding of something. 无论您认为使用=N所获得的收益,都可能基于对某些事物的误解。

Without a DD, you can't read messages with repeating groups, because the engine won't know what fields go in what group. 没有DD,您将无法读取具有重复组的消息,因为引擎不会知道哪个字段进入哪个组。

In practice, every venue uses repeating groups. 实际上, 每个场所都使用重复组。 Therefore, you'll need to set UseDataDictionary=Y and you need to specify an xml file with DataDictionary=<file> . 因此,您需要设置UseDataDictionary=Y 并且需要使用DataDictionary=<file>指定xml文件。

The only reason we allow =N in QF/n is to be consistent with QF/C++ and QF/j. 我们在QF / n中允许=N的唯一原因是与QF / C ++和QF / j一致。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM