2017-03-01 30 views
0

我正在研究使用QuickFIX for .NET(版本1.7)的應用程序。由於我們的交易對手數據字典中定義的大量自定義字段被我們的FIX應用拒絕,我決定只使用他們的數據字典。自定義FIX字段類型無法識別並被QuickFix拒絕

然而,他們造成異常的自定義字段類型「TENOR」所以我跟着從這個論壇的建議:QuickFIX counterparty DataDictionary gieves invalid type exception

用繩子這樣的替換TENOR類型:

<field number="12345" name="tenor" type="STRING"/> 

這是<field number="12345" name="tenor" type="TENOR"/>

但是,當我們的應用程序嘗試登錄到FIX主機時,它拋出了異常:「對象引用未設置爲對象的實例」。

任何想法如何解決這個問題?謝謝。

[這裏有來自異常的詳細堆棧跟蹤:]

at QuickFix.DataDictionary.DataDictionary.parseMsgEl(XmlNode node, DDMap ddmap, Nullable`1 componentRequired) 
at QuickFix.DataDictionary.DataDictionary.Load(Stream stream) 
at QuickFix.SessionFactory.createDataDictionary(SessionID sessionID, Dictionary settings, String settingsKey, String beginString) 
at QuickFix.SessionFactory.ProcessFixTDataDictionaries(SessionID sessionID, Dictionary settings, DataDictionaryProvider provider) 
at QuickFix.SessionFactory.Create(SessionID sessionID, Dictionary settings) 
at QuickFix.AbstractInitiator.CreateSession(SessionID sessionID, Dictionary dict) 
at QuickFix.AbstractInitiator.Start() 
+1

這裏還不夠。有堆棧跟蹤? –

+0

不幸的是,唯一的堆棧跟蹤是這個「對象引用未設置爲對象的實例」。你們是如何解決這個問題的? – YCYC

+0

格蘭特,你是如何將STREN取代TENOR的?像這樣:? – YCYC

回答

0

對不起,我被其他任務牽制。我昨天再次處理這個問題,並使其工作。如您所知,從FIX 5開始,約定是將應用程序和會話消息保存在兩個不同的數據字典中。交易對手的數據字典包含會話和應用程序級別的消息。所以我最初決定清理它,並試圖從應用程序DD中刪除會話級別的消息,但顯然我沒有做一個乾淨的工作 - 這就是我得到這個「對象引用未設置爲對象實例」的原因。例外。

當我簡單地使用交易對手的DD並將TENOR類型替換爲STRING時,應用程序停止崩潰並登錄到FIX主機。

格蘭特,看來你的Java版本確實支持TENOR類型。您計劃何時升級.NET版本以支持它?謝謝。