QuickFix/n - MDStreamID

QuickFix/n - MDStreamID

我第一次尝试使用 ESP(可执行流媒体价格)在 C#.NET(使用 QuickFIX/n)中开发 FIX 客户端,但是我收到了 Market数据请求拒绝 ,在 标签 58 中包含以下文本:

58=Stream [DEV_px.123] invalid venuestream symbol [test EUR/USD]

DEV_px是我的SenderCompID123是我的MDReqID(标签262),test是我的MDStreamID(标签1500 ),EUR/USDNoRelatedSymGroup(标签 146)内 Symbol(标签 55)的货币对。

出于某种原因,看起来 MDStreamIDNoRelatedSymGroup 正在合并。我检查了 Market Data Request 的结构,但它没有显示 MDStreamID 的任何标记。这是我的组织要求的“价格流的标识符”(由我的组织提供)。

这是 sent/received 进出服务器的相关消息:

<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☺

这里是相关的代码片段:

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

解决方案:我需要使用我的组织提供的 DataDictionary 文件,而不是从网上下载的文件 (FIX44.xml),后者显然缺少 MDStreamID。我还为 MDStreamID 标签选择了错误的地点。

完成这两件事后,我收到了预期的市场数据快照完全刷新!

编辑:This 所以问题和答案帮助我确定我的标签没有被正确读取然后我开始进一步挖掘我的 DD。