2015-04-01 10 views
7

Ricevo dal server FIX il seguente messaggio di 'W':QuickFix errore: Tag appare più di una volta in un messaggio '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 

che ha tag 58 volte

e la mia domanda QuickFix automaticamente invia il messaggio di rifiuto al server:

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 

Dalla lettura in internet ho capito che c'è un problema con il dizionario.

Non ho alcuna configurazione di dizionario nel mio file di configurazione QuickFix. Io non sono esattamente sicuro in cui risiede il dizionario predefinito, ma quella che ho trovato (FIX42.xml) definisce il tag 58 è una parte del gruppo per il messaggio '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> 

cosa simile accade quando 'W' messaggio non arriva con due 58 etichette, ma con due 269 (MDEntryType) tags:

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 

nuovo quickfix automaticamente invia rifiutano:

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 

Allora, cosa si può fare qui?

risposta

6

Utilizzare il seguente flag nel file di configurazione. Per impostazione predefinita, è Y, ma controllare per sicurezza.

ValidateFieldsOutOfOrder=N

Confermare se il seguente c'è nella configurazione, di default è Y anyway.You dovrebbe sempre usare un DataDictionary se si utilizza gruppi ripetuti, citati nella pagina di configurazione Quickfix.

UseDataDictionary=Y

E questo ha il percorso in cui è presente il dizionario dei dati.

DataDictionary=/path_to_data_dictionary_file

+0

Grazie mille! UseDataDictionary = Y e il percorso del dizionario ha funzionato. –

+0

Ho incluso tutti questi valori nel mio file di configurazione ma, continuo a ricevere il messaggio "Tag compare più di una volta". – Crt