I'm trying to develop a FIX Client for the first time in C#.NET (with QuickFIX/n) using ESP (Executable Streaming Prices), however i'm receiving a Market Data Request Reject with the following text in tag 58:
58=Stream [DEV_px.123] invalid venuestream symbol [test EUR/USD]
DEV_px
is my SenderCompID
, 123
is my MDReqID
(tag 262), test
is my MDStreamID
(tag 1500), and EUR/USD
is the currency pair for Symbol
(tag 55) inside NoRelatedSymGroup
(tag 146).
For some reason, it looks like both MDStreamID
and NoRelatedSymGroup
are being combined. I reviewed the structure for a Market Data Request but it doesn't show any tag for MDStreamID
. This is required by my organization as an "identifier of the price stream" (provided by my organization).
Here are the relevant messages that are being sent/received to and from the server:
<outgoing> 8=FIX.4.4☺9=135☺35=V☺34=2☺49=DEV_px ☺52=20170830-13:29:49.465☺56=COMPANY_DEV☺262=123☺263=1☺264=0☺265=0☺1500=test☺146=1☺55=EUR/USD☺64=20170831☺267=1☺269=0☺10=089☺
<incoming> 8=FIX.4.4☺9=134☺35=Y☺34=2☺49=COMPANY_DEV☺52=20170830-13:29:49.405☺56=DEV_px☺58=Stream [DEV_px.123] invalid venuestream symbol [test EUR/USD]☺262=123☺10=058☺
Here is the relevant code snippet:
QuickFix.FIX44.MarketDataRequest espRequest = new QuickFix.FIX44.MarketDataRequest(
new MDReqID("123"),
new SubscriptionRequestType('1'),
new MarketDepth(0)
);
espRequest.SetField(new MDUpdateType(0));
espRequest.SetField(new MDStreamID("test"));
// Add the NoRelatedSym group
var relatedSymbols = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup();
relatedSymbols.SetField(new Symbol("EUR/USD"));
relatedSymbols.SetField(new SettlDate("20170831"));
espRequest.AddGroup(relatedSymbols);
// Add the NoMDEntries group
var mdEntries = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup();
mdEntries.SetField(new MDEntryType('0'));
espRequest.AddGroup(mdEntries);
Session.SendToTarget(espRequest, app.GetSessionId());
Solution: I needed to use the DataDictionary file that my organization provided as opposed to the one downloaded from the web (FIX44.xml) which lacked MDStreamID apparently. I also chose the incorrect venue for the MDStreamID tag.
After doing those two things, I'm receiving a Market Data Snapshot Full Refresh as intended!
Edit: This SO question and answer helped me to identify that my tags were not being read correctly and then I started digging further into my DD.