我收到以下错误,无法弄清楚原因(没有其他错误):
QuickFix.FieldConvertError: Could not convert field: Could not convert string to int (N): The first character must be a digit or a minus sign
at QuickFix.Fields.Converters.IntConverter.Convert(String i)
at QuickFix.FieldMap.GetInt(Int32 tag)
at QuickFix.DataDictionary.DataDictionary.CheckGroupCount(IField field, FieldMap map, String msgType)
at QuickFix.DataDictionary.DataDictionary.Iterate(FieldMap map, String msgType)
at QuickFix.DataDictionary.DataDictionary.Validate(Message message, DataDictionary sessionDataDict, DataDictionary appDataDict, String beginString, String msgType)
at QuickFix.Session.Next(MessageBuilder msgBuilder)
at QuickFix.Session.NextMessage(String msgStr)
at QuickFix.SocketInitiatorThread.ProcessStream()
at QuickFix.SocketInitiatorThread.Read()
我正在将此消息发送到我的应用程序(它要长得多,但我删除了很多消息以尝试找到有问题的标签并将消息减少到下面的剩余标签,但看起来问题不在于消息本身):
8=FIX.4.49=342135=CG49=SENDER34=352=20200513-19:34:28.76856=528357=TARGET1510=11505=11511=01513=50
这是我的数据字典的一部分:
<message name="ParticipantList" msgtype="CG" msgcat="app">
<field name="PartyDetailsListReportID" required="Y"/>
<field name="PartyDetailsListRequestID" required="Y"/>
<field name="PartyDetailsRequestResult" required="Y"/>
<field name="Text" required="N"/>
<field name="NoPartyList" required="N"/>
<group name="LastFragment" required="N">
<field name="PartyID" required="N"/>
<field name="PartyIDSource" required="N"/>
<field name="PartyRole" required="N"/>
<field name="PartyName" required="N"/>
<field name="AccountStatus" required="N"/>
<field name="MobileAccess" required="N"/>
<field name="SMAGroupingName" required="N"/>
<field name="SMAGroupMargin" required="N"/>
<field name="SMAGroupCurrency" required="N"/>
<group name="NoClrDetails" required="N">
<field name="ClrHouseCode" required="N"/>
<field name="RIMnemonic" required="N"/>
<field name="LIFFERIMnemonic" required="N"/>
<field name="IFADRIMnemonic" required="N"/>
<field name="AccountCode" required="N"/>
<field name="CTICode" required="N"/>
<field name="RiskLimitAmount" required="N"/>
<field name="Currency" required="N"/>
</group>
<group name="NoPartySubIDs" required="N">
<field name="PartySubID" required="N"/>
<field name="PartySubIDType" required="N"/>
</group>
<group name="NoAccountLimits" required="N">
<field name="SecurityID" required="N"/>
<field name="PhysicalCode" required="N"/>
<field name="UnderlyingSecurityExchange" required="N"/>
<field name="FloatBuyLotsBid" required="N"/>
<field name="FloatSellLotsOffer" required="N"/>
<field name="MaxTradeBuyLotsLong" required="N"/>
<field name="MaxTradeSellLotsShort" required="N"/>
<field name="AbsBuyLimitAbsLong" required="N"/>
<field name="AbsSellLimitAbsShort" required="N"/>
<field name="TradeNetLotsBalance" required="N"/>
<field name="SpreadBuyLimit" required="N"/>
<field name="SpreadSellLimit" required="N"/>
<field name="ProductAccountCode" required="N"/>
<field name="BlockLimit" required="N"/>
<field name="StrategyBlockLimit" required="N"/>
</group>
</group>
</message>
我已经尝试将标签的类型从“int”切换到“string”,但仍然出现该错误。我很困惑。
我正在使用 QuickFix v1.9.0.0。我的应用程序是用 C# 编写的,但这并不重要,因为传入的消息甚至没有击中我的代码。
非常感谢任何建议/建议。