QuickFix/n - MDStreamID

648 views Asked by At

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());
1

There are 1 answers

1
Sean On BEST ANSWER

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.