的QuickFix/N - MDStreamID
我想使用ESP(可执行流动价格)制定的在C#.NET第一次FIX客户端(与QuickFIX/n),但是我收到一个市场数据拒绝请求与在标签以下文本58:的QuickFix/N - MDStreamID
58 =流[DEV_px.123]无效venuestream符号[试验EUR/USD]
DEV_px
是我SenderCompID
,123
是我MDReqID
(标记262),test
是我的MDStreamID
(标记1500),而EUR/USD
是Symbol
(标记55)在NoRelatedSymGroup
(标记146)内的货币对。
出于某种原因,它看起来像MDStreamID
和NoRelatedSymGroup
正在合并。我回顾了Market Data Request的结构,但它没有显示任何MDStreamID
的标签。这是我的组织要求的“价格流的标识符”(由我的组织提供)。
下面是正在发送相关消息/接收向和从服务器:
<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());
解决方案:I需要使用我的组织提供的DataDictionary文件,而不是从网上下载的文件(FIX44.xml),它显然缺少MDStreamID。我也为MDStreamID标签选择了不正确的位置。
做完这两件事后,我收到了市场数据快照全面刷新!
编辑:This所以问题和答案帮助我确定我的标签没有被正确读取,然后我开始深入挖掘DD。
干得好!作为一般的经验法则,NOBODY使用默认的DataDictionary。每个交易对手至少有一点螺丝钉。始终阅读他们的文档,并始终确保您的DD匹配! –