2014-04-08 13 views
5

Używam quickfix z powiązaniami Pythona. Po inicjalizacji podczas korzystania FIX44.xml pojawia się następujący błąd:quickfix - Błąd konfiguracji: <message> nie zawiera pól

Traceback (most recent call last): 
    File "C:\dev\my_proj\quickfix_app.py", line 1227, in start_app 
    initiator = fix.SocketInitiator(self, storeFactory, settings, logFactory) 
    File "C:\Users\Me\virtual_environments\my_env\lib\site-packages\quickfix.py", line 34432, in __init__ 
    SocketInitiatorBase.__init__(self, application, storeFactory, settings, logFactory) 
    File "C:\Users\Me\virtual_environments\my_env\lib\site-packages\quickfix.py", line 34316, in __init__ 
    this = _quickfix.new_SocketInitiatorBase(*args) 
ConfigError: Configuration failed: FIX44.xml: Configuration failed: <message> contains no fields 

Błąd pochodzi z ostatniej linii w następującym kodzie:

settings  = fix.SessionSettings('FIX44.xml') 
storeFactory = fix.FileStoreFactory(settings) 
logFactory = fix.ScreenLogFactory(settings) 
initiator = fix.SocketInitiator(self, storeFactory, settings, logFactory) 

uzyskać ten sam błąd za korzystanie FIX43.xml jednak FIX42.xml działa prawidłowo . Te pliki XML można sprawdzić za pomocą walidatora XML. Ponieważ używam przykładowych plików xml z witryny quickfix, wątpię, aby problem dotyczył plików.
Co może spowodować ten błąd?

Odpowiedz

10

Niewiarygodne, quickfix nie jest zgodny z xml z witryny quickfix. Znalazłem następującą linię w FIX44.xml:

<message name='XMLnonFIX' msgcat='admin' msgtype='n' /> 

która rzeczywiście nie ma żadnego pola. Ponieważ nie potrzebuję tego komunikatu, po prostu usunąłem linię i działa.

Powiązane problemy