user3691061
user3691061

Reputation: 21

Tag appears more than once while using Quickfix market data incremental refresh

I have implemented the fix client that request for market data. I have successfully logged on to the server but when the server sends us a MarketDataIncrementalRefresh message my application rejects with the message "Tag appears more than once" tag for which it is indicating is 55. Can you please help me in resolving it? The message it rejects is: 8=FIX.4.2 9=196 35=X 34=14 49=Xenfin 56=newchange.api -price 52=20140528-08:54:32.144 262=156 268=2 279=1 269=0 278=B 55=EUR/USD 270=1.36201 271=1000000.00 279=1 269=1 278=A 55=EUR/USD 270=1.36205 271=1000000.00 10=133

and in my config file I have used no data dictionary and set UseDataDictionary=N

Upvotes: 2

Views: 2414

Answers (2)

Grant Birchmeier
Grant Birchmeier

Reputation: 18484

This usually means you have a configuration or DataDictionary problem, or both.

Configuration problem: Your config should have UseDataDictionary=Y, and DataDictionary=path/to/xml (or AppDataDictionary= and TransportDataDictionary= if you're on FIX5).

DataDictionary problem: Your counterparty has probably added custom fields to the message, and your DD hasn't been properly updated to reflect them. When parsing repeating groups, when the QF/n parser finds a field that doesn't belong (per DD) to the group, it assumes the group has ended. Any fields after that are considered to be outside the group.

You need to edit your DD file to reflect any changes that your counterparty has made to the standard message set. This will probably include adding custom fields, and may include rearranging field orderings or adding fields to groups that they don't normally belong in. See this page for more info about editing your DD:
http://quickfixn.org/tutorial/custom-fields-groups-and-messages

Upvotes: 3

rupweb
rupweb

Reputation: 3328

That's because you have a repeating group, once for bid, once for offer

8=FIX.4.2  
9=196  
35=X  
34=14  
49=Xenfin  
56=newchange.api -price  
52=20140528-08:54:32.144  
262=156  
268=2   
279=1 269=0 278=B 55=EUR/USD 270=1.36201 271=1000000.00  
279=1 269=1 278=A 55=EUR/USD 270=1.36205 271=1000000.00   
10=133  

and you're not handling it properly.

Upvotes: 0

Related Questions