2017-08-30 83 views
1

我想使用ESP(可执行流动价格)制定的在C#.NET第一次FIX客户端(与QuickFIX/n),但是我收到一个市场数据拒绝请求与在标签以下文本58的QuickFix/N - MDStreamID

58 =流[DEV_px.123]无效venuestream符号[试验EUR/USD]

DEV_px是我SenderCompID123是我MDReqID(标记262),test是我的MDStreamID(标记1500),而EUR/USDSymbol(标记55)在NoRelatedSymGroup(标记146)内的货币对。

出于某种原因,它看起来像MDStreamIDNoRelatedSymGroup正在合并。我回顾了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()); 

回答

1

解决方案:I需要使用我的组织提供的DataDictionary文件,而不是从网上下载的文件(FIX44.xml),它显然缺少MDStreamID。我也为MDStreamID标签选择了不正确的位置。

做完这两件事后,我收到了市场数据快照全面刷新!

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

+3

干得好!作为一般的经验法则,NOBODY使用默认的DataDictionary。每个交易对手至少有一点螺丝钉。始终阅读他们的文档,并始终确保您的DD匹配! –

相关问题