2016-08-16 2 views
1

Bietet QuickFIX die Möglichkeit, alle vorhandenen Felder einer eingehenden FIX-Nachricht in einem einzigen Schritt zu erhalten? (. I Version 1.14.3 für Python)Abrufen aller vorhandenen Felder einer empfangenen FIX-Nachricht mit QuickFIX

Nach QuickFIX Dokumentation ist es möglich, einen Feldwert in einer bestimmten Art und Weise zu erhalten:

price = quickfix.Price() 
field = message.getField(price) 
field.getValue() 

verschiedene Nachrichtentypen unterschiedliche Felder enthalten, so dass dabei für jedes Feld wäre peinlich. Außerdem ist manchmal nicht bekannt, ob einige Felder in einer Nachricht vorhanden sind. Wie bekomme ich alle Felder einer Nachricht, die nicht wissen, welche Felder es enthält?

+0

Warum benötigen Sie alle Felder in einer Nachricht? Quickfix überprüft die Gültigkeit einer Nachricht, d. H. Prüft, ob erforderliche Felder vorhanden sind und weist sie dann zurück/akzeptiert sie. Spielen Sie mit Ihrer Konfiguration, um dies zu tun, anstatt es im Code zu tun. Wenn Sie möchten, dass bestimmte Felder vorhanden sind, markieren Sie diese als obligatorisch und veranlassen Sie Ihre Gegenpartei (en), damit einverstanden zu sein. – DumbCoder

+0

Ich möchte es, weil ich viele verschiedene Arten von FIX-Nachrichten erhalten, die viele verschiedene Arten von Feldern enthalten können, so dass alle Felder in einem Scoop zu bekommen viel einfacher wäre als festlegen, welche Felder ich für jede Art von Nachricht erhalten soll. Das würde viel Zeit in Anspruch nehmen und den Code ohne guten Grund verkomplizieren. –

+0

'verschiedene Arten von FIX-Nachrichten' Was meinst du? Verschiedene Versionen? Oder verschiedene FIX Nachrichten? – DumbCoder

Antwort

0

Ich bin mir einer Methode nicht bewusst. Das ist, was ich tue, mit message die eingehende Nachricht FIX:

tags = re.findall(r'(?<=\x01).*?(?==)', str(message))

Dann wo FIX = {'1':fix.Account(), '2':fix.AdvId(), ...} können Sie alle Werte erhalten, indem

for tag in set(tags)&set(FIX.keys()): 
    message.getField(FIX[tag]) 

Offensichtlich tun Sie das re Modul importieren müssen.

Verwandte Themen