我第一次尝试用ESP (可执行流媒体价格)在C#.NET (使用快速固定/n)中开发一个FIX客户端,但是我正在接收市场数据请求拒绝,并在标记58中使用以下文本
58=Stream DEV_px.123无效的venuestream符号测试
DEV_px是my SenderCompID,123是my MDReqID (tag 262),test是my MDStreamID (tag 1500),EUR/USD是NoRelatedSymGroup (Ta146)内Symbol (tag 55)的货币对。
出于某种原因,看起来MDStreamID和NoRelatedSymGroup都在合并。我查看了市场数据请求的结构,但它没有为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());发布于 2017-08-30 14:07:53
解决方案:我需要使用我的组织提供的DataDictionary文件,而不是从web下载的文件(FIX44.xml),后者显然缺少MDStreamID。我还为MDStreamID标签选择了不正确的地点。
在做了这两件事后,我收到了一个市场数据快照完全刷新的意图!
编辑:这,所以问题和答案帮助我识别我的标签没有被正确读取,然后我开始进一步挖掘我的DD。
https://stackoverflow.com/questions/45961973
复制相似问题