0

我正在开发一个使用 QuickFIX for .NET(1.7 版)的应用程序。由于我们的交易对手数据字典中定义的大量自定义字段被我们的 FIX 应用程序拒绝,我决定简单地使用他们的数据字典。

但是,他们有一个导致异常的自定义字段类型“TENOR”,所以我遵循了这个论坛的建议:QuickFIX 交易对手 DataDictionary gieves invalid type exception

并用 STRING 替换 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()
4

1 回答 1

0

抱歉,我被其他任务牵制了。我昨天再次处理了这个问题并使它工作。如您所知,从 FIX 5 开始,约定是将应用程序和会话消息保存在两个不同的数据字典中。交易对手的数据字典既有会话级消息,也有应用级消息。所以我最初决定清理它并尝试从应用程序 DD 中删除会话级消息,但显然我没有做干净的工作 - 这就是我得到这个“对象引用未设置为对象实例”的原因。例外。

当我简单地使用交易对手的 DD 并将 TENOR 类型替换为 STRING 时,应用程序停止崩溃并登录 FIX 主机。

授予,看来您的 Java 版本确实支持 TENOR 类型。您打算什么时候升级 .NET 版本以支持它?谢谢你。

于 2017-03-08T22:01:34.633 回答