2017-02-13 3 views
0

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?

Antwort

0

Sie haben

bekommen
UseDataDictionary=N 

und ich würde vermuten, das ist das Problem, solange die Initiator/Akzeptor-Datenworte synchron sind.

+0

Ich habe es in UseDataDictionary = Y geändert, aber das Problem ist immer noch das gleiche. – e30

+0

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

Verwandte Themen