简体   繁体   English

消息日志中的quickfixn执行报告35 = 8,但未从应用程序或破解中被击中

[英]quickfixn executionreport 35=8 in message log but didn't hit fromapp or crack

So we send a FIX deal message without a side, and the bank rejects with a 35=8 execution report with 150=8 reject, and text FIX Tag 54 (Side) has invalid value (0). Reason (should be either 1 or 2) 因此,我们发送没有交易的FIX交易消息,银行以35 = 8的执行报告拒绝交易,并以150 = 8的拒绝交易拒绝,并且文本FIX Tag 54 (Side) has invalid value (0). Reason (should be either 1 or 2) FIX Tag 54 (Side) has invalid value (0). Reason (should be either 1 or 2) and then a 35=3 reject message with Value is incorrect (out of range) for this tag . FIX Tag 54 (Side) has invalid value (0). Reason (should be either 1 or 2) ,然后Value is incorrect (out of range) for this tag的35 = 3拒绝消息的Value is incorrect (out of range) for this tag The 35=3 message is cracked but the 35=8 message never gets to fromapp. 35 = 3消息被破解,但35 = 8消息从未到达fromapp。

Am I missing a setting? 我是否缺少设置?

在此处输入图片说明

35=3 indicates a transport-level (aka admin-level) reject. 35 = 3表示传输级别(也称为管理员级别)拒绝。 The message was rejected at a lower parsing layer, which means that it's so malformed that it wasn't even passed up to your application. 该消息在较低的解析层被拒绝,这意味着该消息格式错误,甚至没有传递给您的应用程序。

Usually this kind of reject means that the message was messed up in a way such that the engine can't even parse it correctly, or that the header fields can't resolve to a known session. 通常,这种拒绝意味着消息被某种方式弄乱了,使得引擎甚至无法正确解析它,或者标头字段无法解析为已知会话。 I'm a little surprised that your particular situation triggered a 35=3 instead of a 35=j. 令您惊讶的是,您的特定情况触发了35 = 3而不是35 = j。

I suppose you could check the FIX spec to see what it mandates when an enum-type tag has an unknown value. 我想您可以检查FIX规范,以查看枚举类型标记具有未知值时它要求执行的操作。 Maybe the engine is following spec in this case? 也许在发动机下面的规范在这种情况下?

I guess the reason why the 35=8 message with the incorrect 54=0 tag doesn't get to FromApp or FromAdmin is because of a data dictionary constraint, but this gave me a chance to implement the public void FromEarlyIntercept(Message msg, SessionID s) interface, and that has solved the problem that a bad 35=8 report is now reported back to the user... but introduced a new problem that a good report is now reported twice. 我猜为什么不正确的 54 = 0标记的35 = 8消息无法到达FromApp或FromAdmin的原因是由于数据字典约束,但这给了我实现public void FromEarlyIntercept(Message msg, SessionID s)界面,这解决了现在向用户报告错误的 35 = 8报告的问题...但是引入了一个新的问题,即现在报告了两次良好的报告。

So I added <value enum="0" description="ERROR"/> to the enumeration for <field number="54" name="Side" type="CHAR"> and now the 35=8 message is not rejected by a 35=3 message. 因此,我在<field number="54" name="Side" type="CHAR"> <value enum="0" description="ERROR"/>添加了<value enum="0" description="ERROR"/> <field number="54" name="Side" type="CHAR"> ,现在35 = 8消息未被拒绝35 = 3的消息。

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

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