Quickfixn-FIXT1.1 And FIX5.0 Version MarketDataSnapshotFullRefresh 360T “Tag appears more than once”

I am using Quickfixn with FIXT1.1 as TradeClient to get fx market datas from 360T.

I get this error “Tag appears more than once” 8=FIXT.1.19=14835=334=1249=XXXXXXX50=XXXXXXX.EDF.API52=20200804-16:22:11.47156=360T_SEP142=QUOTE145=1258=Tag appears more than once371=423372=373=1310=117

I am using the attached FIX50.xml file for AppDataDictionary. I am using to FIX50.xml and FIXT11.xml data dictionary file on github/Quickfixn. I have tried all the solutions for this error in Stack Overflow. It was not successful. Any help would be appreciated.

tradeclient.cfg

[DEFAULT]  PersistMessages=Y  ConnectionType=initiator  UseDataDictionary=Y FileStorePath=store  FileLogPath=log   [SESSION]  ConnectionType=initiator  BeginString=FIXT.1.1  DefaultApplVerID=FIX.5.0 TransportDataDictionary= C:\Projects\FixApi\QuickFIXn\spec\fix\FIXT11.xml  AppDataDictionary= C:\Projects\FixApi\QuickFIXn\spec\fix\FIX50.xml  SenderCompID=XXXXXXX SenderSubID=XXXXXXX.EDF.API TargetCompID=360T_SEP SenderLocationID=QUOTE1 SocketConnectHost= XXX.XXX.XX.XX SocketConnectPort= XXXXX StartTime=00:01:00 EndTime=23:59:00 HeartBtInt=20 ReconnectInterval=30  ResetOnLogon=Y  ResetOnLogout=Y  ResetOnDisconnect=Y 

TradeClientApp.cs

  private QuickFix.FIX50.MarketDataRequest QueryMarketDataRequest(string reqId)     {         MDReqID mdReqID = new MDReqID(reqId);         SubscriptionRequestType subType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);                  MarketDepth marketDepth = new MarketDepth(0);         QuickFix.FIX50.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX50.MarketDataRequest.NoMDEntryTypesGroup();         marketDataEntryGroup.Set(new MDEntryType(MDEntryType.MID_PRICE));          QuickFix.FIX50.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX50.MarketDataRequest.NoRelatedSymGroup();         symbolGroup.Set(new Symbol(reqId));           QuickFix.FIX50.MarketDataRequest message = new QuickFix.FIX50.MarketDataRequest(mdReqID, subType, marketDepth);         message.AddGroup(marketDataEntryGroup);         message.AddGroup(symbolGroup);          return message;     } 
Add Comment
1 Answer(s)

Yes, I added CustomFieldTimeSlots field on fields tag and MarketDataSnapshotFullRefresh message tag in FIX50.xml DataDictionary file.

<field number='7080' name='CustomFieldTimeSlots' type='STRING' /> <message name='MarketDataSnapshotFullRefresh' msgcat='app' msgtype='W'>        <field name='MDReqID' required='N' />        <field name='CustomFieldTimeSlots' required='N' />        <component name='Instrument' required='Y' />        <component name='UndInstrmtGrp' required='N' />        <component name='InstrmtLegGrp' required='N' />        <field name='FinancialStatus' required='N' />        <field name='CorporateAction' required='N' />        <field name='NetChgPrevDay' required='N' />        <component name='MDFullGrp' required='Y' />        <field name='ApplQueueDepth' required='N' />        <field name='ApplQueueResolution' required='N' />        <field name='MDReportID' required='N' />        <field name='ClearingBusinessDate' required='N' />        <field name='MDBookType' required='N' />        <field name='MDFeedType' required='N' />        <field name='TradeDate' required='N' />        <component name='RoutingGrp' required='N' />       </message> 

I added PriceType on NoMDEntries group in MDFullGrp component in FIX50.xml DataDictionary file and I overcome this problem.

<component name='MDFullGrp'>    <group name='NoMDEntries' required='Y'>     <field name='MDEntryType' required='Y' />     <field name='MDEntryPx' required='N' />     <field name='Currency' required='N' />     <field name='MDEntrySize' required='N' />     <field name='MDEntryDate' required='N' />     <field name='MDEntryTime' required='N' />     <field name='PriceType' required='N' />     <field name='TickDirection' required='N' />     <field name='MDMkt' required='N' />     <field name='TradingSessionID' required='N' />     <field name='TradingSessionSubID' 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='OpenCloseSettlFlag' 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='Scope' required='N' />     <field name='PriceDelta' required='N' />     <field name='Text' required='N' />     <field name='EncodedTextLen' required='N' />     <field name='EncodedText' required='N' />     <field name='MDPriceLevel' required='N' />     <field name='OrderCapacity' required='N' />     <field name='MDOriginType' required='N' />     <field name='HighPx' required='N' />     <field name='LowPx' required='N' />     <field name='TradeVolume' required='N' />     <field name='SettlType' required='N' />     <field name='SettlDate' required='N' />     <field name='MDQuoteType' required='N' />     <field name='RptSeq' required='N' />     <field name='DealingCapacity' required='N' />     <field name='MDEntrySpotRate' required='N' />     <field name='MDEntryForwardPoints' required='N' />     <field name='MDEntryID' required='N' />     <component name='Parties' required='N' />     <field name='SecondaryOrderID' required='N' />     <field name='OrdType' required='N' />    </group>   </component> 
Answered on August 31, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.