Я использую QuickFIX и Python для инициирования подключения к процессу fixserver, который обрабатывает FIX5.0SP2. Когда я пытаюсь инициировать соединение, я получаю сообщение об отключении после получения следующего сообщения: (Message 1 Rejected: Required tag missing:1137)
. Этот тег не является обязательным для моего процесса fixserver, и я пытаюсь удалить его из процесса входа в систему. Я удалил его из FIXT11.xml и создал для него собственный xml, но без каких-либо успехов. Я что-то пропустил? Я думал, вы можете легко переключить их с обязательного на необязательный в этом файле?QuickFIX удалить тег из процесса входа
Вот мой конфиг:
[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`
Вот выход QuickFix с починки сообщения:
<20170213-12:52:41.812, FIXT.1.1:FIXSRV->RTD, event>
(Created session)
<20170213-12:52:41.813, FIXT.1.1:FIXSRV->RTD, event>
(Connecting to X.X.X.X on port 1284)
Sent the Admin following message: 8=FIXT.1.1|9=77|35=A|34=1|49=FIXSRV|52=20170213-12:52:41.816|56=RTD|98=0|108=30|141=Y|1137=9|10=140|
<20170213-12:52:41.817, FIXT.1.1:FIXSRV->RTD, outgoing>
(8=FIXT.1.1|9=106|35=A|34=1|49=FIXSRV|52=20170213-12:52:41.816|56=RTD|50=FIX50|98=0|108=30|141=Y|553=FIX50|554=fix50|1137=9|10=083|)
<20170213-12:52:41.817, FIXT.1.1:FIXSRV->RTD, event>
(Initiated logon request)
<20170213-12:52:41.820, FIXT.1.1:FIXSRV->RTD, incoming>
(8=FIXT.1.1|9=000106|35=A|1128=7|49=RTD|56=FIXSRV|34=1|50=FIX50|52=20170213-12:52:41.639|98=0|108=30|141=Y|553=FIX50|554=fix50|10=228|)
<20170213-12:52:41.820, FIXT.1.1:FIXSRV->RTD, event>
(Message 1 Rejected: Required tag missing:1137)
<20170213-12:52:41.820, FIXT.1.1:FIXSRV->RTD, event>
(Tried to send a reject while not logged on)
<20170213-12:52:41.820, FIXT.1.1:FIXSRV->RTD, event>
(Required field missing from logon)
<20170213-12:52:41.820, FIXT.1.1:FIXSRV->RTD, event>
(Disconnecting)
Update: Я попытался изменить это поле <field name='DefaultApplVerID' required='Y'/>
к required='N'
в моем словаре, но без каких-либо эффект. В других областях можно изменить их на необязательные, и они пропускаются, если они не установлены. Является ли это обязательным полем исправления 5.0SP2 жестко закодированным и не может быть необязательным?
Я изменил его на UseDataDictionary = Y, но проблема все та же. – e30
Вы отметили, что для параметра «DefaultApplVerID» установлено значение N в сообщении «Вход в систему» в словаре данных, а не какое-либо другое сообщение? – rupweb