我正在使用quickfix和python绑定。在使用FIX44.xml
初始化时,我收到以下错误:
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
错误源自以下代码中的最后一行:
settings = fix.SessionSettings('FIX44.xml')
storeFactory = fix.FileStoreFactory( settings )
logFactory = fix.ScreenLogFactory(settings)
initiator = fix.SocketInitiator(self, storeFactory, settings, logFactory )
使用FIX43.xml
时出现同样的错误,但是FIX42.xml
工作正常。这些xml文件使用XML验证器签出。由于我正在使用来自quickfix网站的示例xml文件,我怀疑问题与文件有关。
什么可能导致此错误?
答案 0 :(得分:14)
令人遗憾的是,quickfix与quickfix网站的xml不兼容。我在FIX44.xml
中找到了以下行:
<message name='XMLnonFIX' msgcat='admin' msgtype='n' />
哪个确实没有字段。因为我不需要这条消息,所以我只是删除了该行并且它有效。