[Quickfix-developers] Market Data Request is rejected because Symbol field is being dropped
Brought to you by:
orenmnero
From: John D. <jd...@so...> - 2009-06-24 07:11:25
|
Hi there, The results I'm seeing look like the Symbol field is being dropped by the FIX engine when sending the MarketDataRequest message from an initiator to an acceptor. Here is the relevant source code... Message message = new Message(); Message.Header header = message.getHeader(); header.setField(new BeginString("FIX.4.2")); header.setField(new SenderCompID("AlexInitiator")); header.setField(new TargetCompID("AlexAcceptor")); header.setField(new MsgType("V")); //Market_Data_Request...MsgType <35> = V message.setField(new Symbol("SPY")); //passed to here by local app MDReqIDnum = MDReqIDnum + 1; //Unique identifier for Market Data Request message.setField(new MDReqID(MDReqIDnum.ToString())); message.setField(new SubscriptionRequestType('1')); //Snapshot + Updates (Subscribe) message.setField(new MDUpdateType(1)); //0 = Full Refresh, easier to process //1 = Incremental Refresh, less bandwidth consumed message.setField(new MarketDepth(1)); //Top of Book message.setField(new NoMDEntryTypes(2)); //Number of MDEntryType fields requested. Bid and Offer message.setField(new MDEntryType('0')); //Bid message.setField(new MDEntryType('1')); //Offer message.setField(new NoRelatedSym(0)); //number of repeating symbols specified. //useful with option strike prices, but not used in stocks Session.sendToTarget(message); //transmit the message to the other end of link This is what is seen at toApp 22:29:47 toApp 8=FIX.4.29=11935=V34=2849=AlexInitiator52=20090624- 02:29:47.00056=AlexAcceptor55=SPY146=0262=32263=1264=1265=1267=2269=110=133 This is what is seen at fromAdmin 22:26:54 fromAdmin 8=FIX.4.29=13335=334=649=AlexAcceptor52=20090624- 02:26:56.98456=AlexInitiator45=658=Tag not defined for this message type371=55372=V373=210=188 FIX.4.2:AlexInitiator->AlexAcceptor Notice that the symbol is defined at toApp where 55=SPY but fromAdmin complains 58=Tag not defined for this message type 371=55 Symbol <tag 55> is unrecognized 372=V MsgType = V, MarketDataRequest 373=2 SessionRejectReason = '2' = Tag not defined for this message type Notice that tag 55=SPY is not included in fromAdmin. It looks like toApp sees that I am defining tag 55 = "SPY", but the FIX engine is dropping that field in the message. Then the message fails to parse properly and is thus rejected. Message types other than MarketDataRequest <MsgType = V> which involve Symbol field <tag 55> are being sent and received properly. As a workaround I tried the following variation but got the same results message.setField(new StringField(55, "SPY")); The code shown in the "most safe" example does not compile in C#, else I would be happy to try that style. The compile error message is: Expected ; or = (cannot specify constructor arguments in declaration) Has anyone seen this type of problem before where the Symbol field gets dropped from a message? Do you see anything wrong in the source code? I'm wondering if my shared code sample would cause the same problem in other developers applications or if it is unique to my environment. Any clues, comments, or code examples would be greatly appreciated. Thanks, John Devron |