Ich verwende QuickFIX und Python, um eine Verbindung zu einem Fixserver-Prozess zu initiieren, der FIX5.0SP2 verarbeitet. Wenn ich versuche, eine Verbindung herzustellen, erhalte ich eine Verbindung, nachdem ich die folgende Nachricht erhalten habe: (Message 1 Rejected: Required tag missing:1137)
. Dieses Tag ist für meinen Fixserver-Prozess nicht obligatorisch und ich versuche, es aus dem Anmeldeprozess zu entfernen. Ich entfernte es aus der FIXT11.xml und erstellte ein benutzerdefiniertes XML dafür, aber ohne Erfolg. Vermisse ich etwas? Ich dachte, Sie können sie in dieser Datei leicht von obligatorisch zu nicht obligatorisch wechseln?QuickFIX Remove-Tag aus dem Anmeldeprozess
Hier ist meine config:
[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`
Hier ist die quickfix Ausgabe mit der Meldung fix:
<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: Ich habe versucht, das Feld <field name='DefaultApplVerID' required='Y'/>
-required='N'
in meinem Wörterbuch zu ändern, aber ohne bewirken. In anderen Feldern können Sie sie in nicht obligatorisch ändern und sie werden übersprungen, wenn sie nicht festgelegt sind. Ist das spezifische obligatorische 5.0SP2-Feld fest codiert und kann nicht obligatorisch sein?
Ich habe es in UseDataDictionary = Y geändert, aber das Problem ist immer noch das gleiche. – e30
Haben Sie überprüft, dass der erforderliche Wert für 'DefaultApplVerID' in der Logon-Nachricht im Datenwörterbuch auf N und nicht auf eine andere Nachricht gesetzt ist? – rupweb