簡體   English   中英

QuickFIX/n 錯誤:標簽出現不止一次(字段=523)

[英]QuickFIX/n error: Tag appears more than once (Field=523)

我的 QuickFIX/n 5.0SP2 應用程序拒絕 R 錯誤消息 - 標簽出現不止一次(字段 = 523)。 我查看了該站點上的所有類似問題,但建議的解決方案對我不起作用。 我在設置中有 UseDataDictionary=Y。 我已嘗試將驗證選項設置為 Y 和 N。該消息包含我已添加到應用程序數據字典中的自定義字段。 我檢查了所有字段的順序,看起來不錯。 我嘗試使用 QuickFix.Net.NETCore.FIX50SP2 和 QuickFIXn.FIX5.0SP2 nuget 包,以防消息解析存在差異。

根據標准 FIX 協議,某些字段未按正確順序接收。 我更新了數據字典字段的順序以匹配消息中字段的順序。 訂單是否仍會導致消息被拒絕?

為了確認選擇了正確的數據字典,我嘗試添加一個新的必填字段,但我的應用程序按預期拒絕了消息,說缺少必填標簽。

我已經被這個錯誤困了一個星期了,非常感謝任何幫助!

被拒絕的消息:20210924-05:09:21.123: 8=FIXT.1.1 9=123 35=R 34=234 52=20210924-05:09:21.721 49=XYZ 56=ABC 131=LST1 46=1 55=110K MAX 828=57 60=20210924-05:09:21 75=20210924 464=Y 20086=1 20073=REQ 20074=N 20075=N 20076=N 20077=[N/A] 20078=[N/A] 20079=5 20081=300 453=2 448=xyz 447=C 452=3 802=3 523=Shruti B 803=2 523=NY 803=25 523=US 803=4000 448=客戶 447=C 452=1 802=1 523 =123 803=4002 5745=1 48=123ABC 22=1 460=10 167=MBS 762=MBSSPL 15=美元 64=20211015 541=20510920 223=2 38=1000000 54=1 699=1ABC2 761=12 423 228=1.0 58=測試 DN 092401 10=209

會話設置

# default settings for sessions-->
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
ResetOnLogon=N
ResetOnLogout=Y
LogonTimeout=60
UseLocalTime=Y
FileLogPath=/fix_logs

# session definition
[SESSION]
# inherit FileLogPath, ConnectionType,
#    ReconnectInterval from default
BeginString=FIXT.1.1
SenderCompID=XYZ
TargetCompID=ABC
StartDay=monday
EndDay=saturday
StartTime=00:30:00
EndTime=18:16:00
HeartBtInt=60
CheckLatency=N
MaxLatency=240
UseDataDictionary=Y
DefaultApplVerID=FIX.5.0SP2
SocketConnectPort=xxxxx
SocketConnectHost=xxx.xx.xx.xxx
FileStorePath=/file_store
TransportDataDictionary=FIXT11.xml
AppDataDictionary=FIX50SP2.xml
ValidateFieldsOutOfOrder=Y
ValidateFieldsHaveValues=Y
ValidateUserDefinedFields=Y

部分詞典

<fix type="FIX" major="5" minor="0" servicepack="2">
    <header/>
    <messages>
        <message name="QuoteRequest" msgtype="R" msgcat="app">
            <field name="QuoteReqID" required="Y"/>
            <component name="QuotReqGrp" required="Y"/>
            <component name="Parties" required="Y"/>
            <field name="MultipleTickets" required="N"/>
            <field name="SecurityID" required="N"/>
            <field name="SecurityIDSource" required="N"/>
            <field name="Product" required="N"/>
            <field name="SecurityType" required="N"/>
            <field name="SecuritySubType" required="N"/>
            <field name="Currency" required="N"/>
            <field name="SettlDate" required="N"/>
            <field name="MaturityDate" required="N"/>
            <field name="CouponRate" required="N"/>
            <component name="OrderQtyData" required="N"/>
            <field name="Side" required="N"/>
            <component name="SpreadOrBenchmarkCurveData" required="N"/>
            <field name="PriceType" required="N"/>
            <field name="Factor" required="N"/>
            <field name="Text" required="N"/>
            <field name="EncodedTextLen" required="N"/>
            <field name="EncodedText" required="N"/>
            <field name="BookingType" required="N"/>
            <field name="OrderRestrictions" required="N"/>
        </message>
    </messages>
    <trailer/>
    <components>
        <component name="QuotReqGrp">
                <field name="NoRelatedSym" required="Y"/>
                <field name="Symbol" required="Y"/>
                <field name="SymbolSfx" required="N"/>
                <field name="TrdType" required="N"/>
                <field name="TransactTime" required="Y"/>
                <field name="TradeDate" required="Y"/>
                <field name="TestMessageIndicator" required="N"/>
                <field name="NoOfDealers" required="N"/>
                <field name="NegotiationType" required="N"/>
                <field name="CanRespond" required="N"/>
                <field name="CanQuote" required="N"/>
                    <field name="CanRequote" required="N"/>
                    <field name="BookName" required="N"/>
                    <field name="TraderList" required="N"/>
                    <field name="TimeoutPeriod" required="N"/>
                    <field name="NewTimePeriod" required="N"/>
                    <field name="QuoteTimePeriod" required="N"/>
                    <field name="ConfirmTimePeriod" required="N"/>
                    <field name="RequoteTimePeriod" required="N"/>
                <!--<field name="Price" required="Y"/>-->
        </component>
        <component name="Parties">
            <group name="NoPartyIDs" required="Y">
                <!--<field name="NoPartyIDs" required="Y"/>-->
                <field name="PartyID" required="Y"/>
                <field name="PartyIDSource" required="N"/>
                <field name="PartyRole" required="N"/>
                <component name="PtysSubGrp" required="Y"/>
            </group>
        </component>
        <component name="PtysSubGrp">
            <group name="NoPartySubIDs" required="Y">
                <field name="PartySubID" required="Y"/>
                <field name="PartySubIDType" required="Y"/>
            </group>
        </component>
        <component name="OrderQtyData">
            <field name="OrderQty" required="N"/>
            <field name="CashOrderQty" required="N"/>
            <field name="OrderPercent" required="N"/>
            <field name="RoundingDirection" required="N"/>
            <field name="RoundingModulus" required="N"/>
        </component>
        <component name="SpreadOrBenchmarkCurveData">
            <field name="Spread" required="N"/>
            <field name="BenchmarkCurveCurrency" required="N"/>
            <field name="BenchmarkCurveName" required="N"/>
            <field name="BenchmarkCurvePoint" required="N"/>
            <field name="BenchmarkPrice" required="N"/>
            <field name="BenchmarkPriceType" required="N"/>
            <field name="BenchmarkSecurityID" required="N"/>
            <field name="BenchmarkSecurityIDSource" required="N"/>
        </component>
    </components>
    <fields>
    </fields>
</fix>

問題是傳入消息中存在我的數據字典中缺少的自定義字段。 在某些時候,在嘗試添加這些自定義字段和清理字典時,我從 QuotReqGrp 組件中刪除了 Parties 組件並將其放在 QuotReqGrp 之后。 我重新開始使用數據字典的新副本並添加自定義字段來解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM