如何禁用quickfix验证

时间:2014-07-04 14:51:42

标签: quickfix fix-protocol

我需要禁用quickfix验证。

设置UseDataDictionary = N不起作用。 删除配置文件中的字典文件的路径不起作用。 将目录中的xml文件重命名为其他扩展名不起作用。

仍然根据验证失败拒绝邮件。

目录是正确的。请帮忙!我确定我错过了一些微不足道的事情。

谢谢!

PS - 回答一些问题: 我得到的错误是:58 =指定超出所需订单的标签371 = 143 372 = 8

实际上,客户端正在邮件正文中发送标记143,而不是标题。客户端不会更改代码。我尝试将标签143添加到ExecutionReport主体,但这没有帮助。我厌倦了为这些人带走标签143。

PS - 配置文件:

[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=N
DataDictionary=/xxxxxx
TransportDataDictionary=/xxxxx
ResetOnLogon=N
DefaultApplVerID=9

[SESSION]
BeginString=FIX.4.4
SenderCompID=xxxxxx
TargetCompID=xxxxxx
SocketConnectHost=xxxxxxxxx
SocketConnectPort=52400
HeartBtInt=30

2 个答案:

答案 0 :(得分:2)

您可以通过在配置文件中将ValidateFieldsOutOfOrder参数设置为N来禁用此特定检查。请参阅Configuring QuickFIX

答案 1 :(得分:0)

如果你有重复的组,你必须有UseDataDictionary = Y,它告诉QuickFIX如何处理重复组中的项目。 “指定超出所需订单的标签371 = 143 372 = 8”通常表示标头标签位于邮件正文中,正文标记位于标题中,重复的组标记位于正文中,正文标记位于重复组等中。由于客户端正在邮件正文中而不是标题中发送标记143,因此您需要编辑DataDictionary,以便该标记出现在邮件正文而不是标题中。由于您可以在每个连接的基础上设置DataDictionary,我会强烈建议您创建原始字典的副本,为其指定客户端特定名称并编辑该文件,然后将其连接到该连接保持原来干净了。