简体   繁体   English

QuickFix无法识别和拒绝自定义FIX字段类型

[英]Custom FIX Field Type not recognized and rejected by QuickFix

I am working on an application using QuickFIX for .NET (ver 1.7). 我正在使用使用QuickFIX for .NET(1.7版)的应用程序。 Due to the large amount of custom fields defined in our counterparty's data dictionary which are rejected by our FIX app, I decided to simply use their data dictionary. 由于在交易对手的数据字典中定义的大量自定义字段被FIX应用程序拒绝,因此我决定只使用其数据字典。

However, they have a custom field type "TENOR" which caused exception so I followed the suggestion from this forum: QuickFIX counterparty DataDictionary gieves invalid type exception 但是,它们具有导致异常的自定义字段类型“ TENOR”,因此我遵循了该论坛的建议: QuickFIX交易对手DataDictionary导致无效的类型异常

and replaced TENOR type with STRING like this: 并用STRING替换TENOR类型,如下所示:

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

It was <field number="12345" name="tenor" type="TENOR"/> 这是<field number="12345" name="tenor" type="TENOR"/>

But again when our app tried to log on to FIX host, it threw exception:"Object reference not set to an instance of an object." 但是当我们的应用再次尝试登录FIX主机时,它抛出了异常:“对象引用未设置为对象的实例。”

Any idea how to fix this? 任何想法如何解决这个问题? Thank you. 谢谢。

[here are more stack trace from the exception:] [这里有来自异常的更多堆栈跟踪:]

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()

Sorry, I was sidetracked by other tasks. 抱歉,我被其他任务所困扰。 I worked on this issue again yesterday and made it work. 昨天,我再次解决了这个问题,并使它起作用。 As you know, starting from FIX 5, the convention is to keep app and session messages in two different data dictionaries. 如您所知,从FIX 5开始,约定是将应用程序消息和会话消息保留在两个不同的数据字典中。 The counterparty's data dictionary has both session and app level messages. 交易对手的数据字典同时包含会话和应用程序级别的消息。 So I initially decided to clean it up and tried to remove the session level messages from application DD but obviously I didn't do a clean job - this is the reason I got this "Object reference not set to an instance of an object." 因此,我最初决定对其进行清理,并尝试从应用程序DD中删除会话级别的消息,但显然我没有做干净的工作-这就是我得到此“对象引用未设置为对象实例”的原因。 exception. 例外。

When I simply used counterparty's DD as is, and replaced TENOR type with STRING, the application stopped crashing and logged on FIX host. 当我按原样使用对手方的DD,并用STRING替换TENOR类型时,应用程序停止崩溃并登录FIX主机。

Grant, it seems your Java version does support TENOR type. 格兰特,看来您的Java版本确实支持TENOR类型。 When do you plan to upgrade .NET version to support it as well? 您打算什么时候升级.NET版本以支持它? Thank you. 谢谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM