我正在使用QuickFIX和Python启动到fixserver进程的连接,该进程处理FIX5.0SP2。当我尝试启动连接时,收到以下消息后会断开连接:(Message 1 Rejected: Required tag missing:1137)
。
此标记不是fixserver进程所必需的,我正试图从登录过程中删除它。我从FIXT11.xml中删除了它,并为此创建了一个自定义xml,但是没有成功。我错过什么了吗?我想你可以很容易地将它们从强制转换为非强制?在
以下是我的配置:
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
DefaultApplVerID=FIX.5.0SP2
UseDataDictionary=N
ResetOnLogout=Y
ResetOnLogon=Y
AppDataDictionary=/home/foo/Documents/QuickFix/fix_specs/FIX50SP2CustomTags.xml
TransportDataDictionary=/home/foo/Documents/QuickFix/fix_specs/FIXT11CustomTags.xml
[SESSION]
BeginString=FIXT.1.1
ConnectionType=initiator
SenderCompID=FIXSRV
TargetCompID=RTD
ReconnectInterval=30
HeartBtInt=30
StartTime=00:30:00
EndTime=23:30:00
SocketConnectProtocol=TCP
SocketConnectPort=1284
SocketConnectHost=X.X.X.X
FileStorePath=/home/foo/Documents/QuickFix/data
FileLogPath=/home/foo/Documents/QuickFix/logs
ValidateFieldsOutOfOrder=N
ValidateFieldsHaveValues=N
#ValidateUserDefinedFields=N`
下面是带有fix消息的quickfix输出:
^{pr2}$更新:
我试图将字典中的字段<field name='DefaultApplVerID' required='Y'/>
更改为required='N'
,但没有任何效果。其他字段可以更改为非强制字段,如果未设置,则跳过这些字段。这个特定的强制fix5.0SP2字段是硬编码的,不能是非强制性的?在
你有
我想只要发起方/接受方数据字典是同步的,这就是问题所在。在
你的理解是正确的。字段
DefaultApplVerID(1137)
的检查是在QuickFix的引擎中硬编码的,因为它是必需的,如@Christian Quisbert的标题规范所述。在我没有Python版本的QuickFix,只有Java版本。但我认为实现应该相互协调,没有太大的差异。在
如果看一下Java版本中
quickfixj-core
(我指的是quickfix-2.1.0)项目下的Session.java
,有一个方法名为:从第953行开始,有一个用于处理回复登录消息的代码部分,如下所示:
^{pr2}$这意味着,如果}。在
BeginString(8)
等于FIXT.1.1
,并且您不能简单地通过配置跳过此验证,则quickfixj引擎预期传入登录响应中存在字段{必须配置DefaultApplVerID。检查文件: Configuring QuickFIX
如果删除[DEFAULT]配置的DefaultApplVerID=FIX.5.0SP2行,quickfix将显示以下内容:
在任何情况下,请尝试将其置于[SESSION]中并按如下方式设置:
相关问题 更多 >
编程相关推荐