2015-04-01 92 views
7

我從FIX服務器收到下面的「W」消息:的QuickFix錯誤:標籤出現在「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 

自動擁有標籤58兩次

和我的QuickFix應用將拒絕消息發送到服務器:

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 

從互聯網上的閱讀中,我瞭解到字典存在問題。

我的QuickFix配置文件中沒有任何字典配置。 我不完全肯定這個默認詞典所在,但一個我發現(FIX42.xml)定義了標籤58組的「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> 

類似的事情發生在「W」消息到達不具有兩個58標籤,但有兩個269(MDEntryType)標籤:

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 

再次自動發送的QuickFix拒絕:

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 

那麼,什麼可以在這裏完成?

回答

6

在配置文件中使用以下標誌。默認情況下爲Y,但請檢查確定。

ValidateFieldsOutOfOrder=N

確認,如果下面有沒有在您的配置,默認的是,如果你使用的是重複的組,在quickfix配置頁提到Ÿanyway.You應始終使用數據字典。

UseDataDictionary=Y

而這有你的數據字典存在的路徑。

DataDictionary=/path_to_data_dictionary_file

+0

非常感謝! UseDataDictionary = Y並給出字典的路徑。 – 2015-04-01 09:56:39

+0

我將所有這些值都包含在我的配置文件中,但仍然出現「標籤出現多次」錯誤。 – Crt 2017-04-24 14:55:11