QuickFix错误:标签在“W”消息中出现多次

时间:2015-04-01 09:21:15

标签: quickfix fix-protocol

我从FIX服务器收到以下' 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>

类似的事情发生在&#39; W&#39;消息到达的不是两个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

那么可以在这做什么?

1 个答案:

答案 0 :(得分:6)

在配置文件中使用以下标志。默认情况下为Y,但请检查以确定。

  

ValidateFieldsOutOfOrder = N

确认您的配置中是否存在以下内容,默认为Y.如果您使用Quickfix配置页中提到的重复组,则应始终使用DataDictionary。

  

UseDataDictionary = Y

这就是你的数据字典存在的路径。

  

数据字典= / path_to_data_dictionary_file