2015-04-01 7 views
7

otrzymam z serwera FIX następujący komunikat 'W':QuickFix błąd: Tag pojawia się więcej niż raz w komunikacie 'W'

8=FIX.4.2|9=141|35=W|34=98|49=CX|52=20150401-09:12:30.247|56=CACIB_MD2|55=608230|262=48|9883=IDB|268=2|269=0|58=No Bid Available|269=1|58=No Offer Available|10=249 

co automatycznie ma znacznik 58 dwukrotnie

i mój wniosek quickfix wysyła wiadomość o odrzuceniu na serwer:

8=FIX.4.2|9=104|35=3|34=91|49=CACIB_MD2|52=20150401-09:12:29.661|56=CX|45=90|58=Tag appears more than once|371=58|372=W|10=008 

Po przeczytaniu w Internecie zrozumiałem, że jest problem ze słownikiem.

Nie mam żadnej konfiguracji słownika w moim pliku konfiguracyjnym QuickFix. nie jestem do końca pewien, gdzie znajduje się słownik domyślny, ale znalazłem (FIX42.xml) określa, że ​​znacznik 58 jest częścią grupy do wiadomości „W”:

<message name='MarketDataSnapshotFullRefresh' msgcat='app' msgtype='W'> 
    <field name='MDReqID' required='N' /> 
    <field name='Symbol' required='Y' /> 
    <field name='SymbolSfx' required='N' /> 
    <field name='SecurityID' required='N' /> 
    <field name='IDSource' required='N' /> 
    <field name='SecurityType' required='N' /> 
    <field name='MaturityMonthYear' required='N' /> 
    <field name='MaturityDay' required='N' /> 
    <field name='PutOrCall' required='N' /> 
    <field name='StrikePrice' required='N' /> 
    <field name='OptAttribute' required='N' /> 
    <field name='ContractMultiplier' required='N' /> 
    <field name='CouponRate' required='N' /> 
    <field name='SecurityExchange' required='N' /> 
    <field name='Issuer' required='N' /> 
    <field name='EncodedIssuerLen' required='N' /> 
    <field name='EncodedIssuer' required='N' /> 
    <field name='SecurityDesc' required='N' /> 
    <field name='EncodedSecurityDescLen' required='N' /> 
    <field name='EncodedSecurityDesc' required='N' /> 
    <field name='FinancialStatus' required='N' /> 
    <field name='CorporateAction' required='N' /> 
    <field name='TotalVolumeTraded' required='N' /> 
    <group name='NoMDEntries' required='Y'> 
    <field name='MDEntryType' required='Y' /> 
    <field name='MDEntryPx' required='Y' /> 
    <field name='Currency' required='N' /> 
    <field name='MDEntrySize' required='N' /> 
    <field name='MDEntryDate' required='N' /> 
    <field name='MDEntryTime' required='N' /> 
    <field name='TickDirection' required='N' /> 
    <field name='MDMkt' required='N' /> 
    <field name='TradingSessionID' required='N' /> 
    <field name='QuoteCondition' required='N' /> 
    <field name='TradeCondition' required='N' /> 
    <field name='MDEntryOriginator' required='N' /> 
    <field name='LocationID' required='N' /> 
    <field name='DeskID' required='N' /> 
    <field name='OpenCloseSettleFlag' required='N' /> 
    <field name='TimeInForce' required='N' /> 
    <field name='ExpireDate' required='N' /> 
    <field name='ExpireTime' required='N' /> 
    <field name='MinQty' required='N' /> 
    <field name='ExecInst' required='N' /> 
    <field name='SellerDays' required='N' /> 
    <field name='OrderID' required='N' /> 
    <field name='QuoteEntryID' required='N' /> 
    <field name='MDEntryBuyer' required='N' /> 
    <field name='MDEntrySeller' required='N' /> 
    <field name='NumberOfOrders' required='N' /> 
    <field name='MDEntryPositionNo' required='N' /> 
    <field name='Text' required='N' /> 
    <field name='EncodedTextLen' required='N' /> 
    <field name='EncodedText' required='N' /> 
    </group> 
    </message> 

Podobnie rzecz się dzieje, gdy „W” wiadomość nie dotrze z dwoma 58 znaczników, ale z dwoma 269 (MDEntryType) tagi:

8=FIX.4.2|9=217|35=W|34=110|49=CX|52=20150401-09:23:19.787|56=CACIB_MD2|55=561832|262=26|9883=IDB|268=2|269=0|58=No Bid Available|269=1|270=123|271=1|272=20150401|273=09:23:19.551|59=0|126=20150401-19:23:19.551|290=1|9139=cacib_uat2|10=016 

ponownie quickfix automatycznie wysyła odrzucenia:

8=FIX.4.2|9=107|35=3|34=111|49=CACIB_MD2|52=20150401-09:23:19.848|56=CX|45=110|58=Tag appears more than once|371=269|372=W|10=153 

Więc co można zrobić tutaj?

Odpowiedz

6

Użyj następującej flagi w pliku konfiguracyjnym. Domyślnie jest to Y, ale sprawdź, czy masz pewność.

ValidateFieldsOutOfOrder=N

potwierdzić, czy po to tam w konfiguracji, domyślnie jest Y anyway.You należy zawsze używać DataDictionary jeśli używasz powtarzających się grup, wspominane na stronie konfiguracji quickfix.

UseDataDictionary=Y

I to jest ścieżka, w której znajduje się słownik danych.

DataDictionary=/path_to_data_dictionary_file

+0

Wielkie dzięki! UseDataDictionary = Y i podanie ścieżki do działającego słownika. –

+0

Zawarłem wszystkie te wartości w moim pliku konfiguracyjnym, ale nadal otrzymuję komunikat "tag pojawia się więcej niż jeden raz". – Crt

Powiązane problemy