首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuickFix市场数据请求错误

QuickFix市场数据请求错误
EN

Stack Overflow用户
提问于 2016-06-22 17:42:41
回答 2查看 2.7K关注 0票数 1

我是新修的。我在我的应用程序中使用quickfix库。我能登入并交换心跳。但是当我发送市场数据请求时,我会得到以下错误。

代码语言:javascript
复制
8=FIX.4.49=13035=V34=249=PrimoDEMOFIX52=20160622-17:35:14.62256=CfhDemoPrices262=PrimoApp123263=1264=0265=0269=0146=155=GBPUSD267=110=129
8=FIX.4.49=14435=334=249=CfhDemoPrices52=20160622-17:35:18.36756=PrimoDEMOFIX45=258=Incorrect NumInGroup count for repeating group371=267372=V373=1610=043

下面是生成消息的代码。

代码语言:javascript
复制
Message msg = new Message();
QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup group = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup(); 
msg.Header.SetField(new MsgType("V"));
msg.SetField(new MDReqID("PrimoApp123"));
msg.SetField(new SubscriptionRequestType('1'));
msg.SetField(new MarketDepth(0));
msg.SetField(new MDUpdateType(0));
// msg.SetField(new NoMDEntryTypes(2));
group.SetField(new NoMDEntryTypes(1));
msg.SetField(new MDEntryType('0'));
msg.SetField(new NoRelatedSym(1));
group.SetField(new Symbol("GBPUSD"));
//msg.SetField(new Symbol("GBPUSD"));
msg.AddGroup(group);
Session.SendToTarget(msg, FeederApp.mysession);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-22 17:57:01

想帮忙。试试下面的代码。如果它不能工作,请通知修复日志文件和修复事件文件以及任何错误消息。请再次检查类型是否正常(我使用了记事本)和编译器是否工作。

代码语言:javascript
复制
// Create message instance
// If you create a specific FIX Message new QuickFix.FIX44.MarketDataRequest() instead of new Message()
// you don't need set the MessageType and your intelisense is better.
QuickFix.FIX44.MarketDataRequest msg = new QuickFix.FIX44.MarketDataRequest();

// Fill message fields
msg.SetField(new MDReqID("PrimoApp123")); 
msg.SetField(new SubscriptionRequestType('1')); 
msg.SetField(new MarketDepth(0)); 
msg.SetField(new MDUpdateType(0)); 

// Add the MDEntryTypes group
QuickFix.FIX44.MarketDataRequest.NoMDEntryTypes noMDEntryTypes = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypes();
noMDEntryTypes.SetField(new MDEntryType('0')); 
msg.addGroup(noMDEntryTypes);

// Add the NoRelatedSym group
QuickFix.FIX44.MarketDataRequest.NoRelatedSym noRelatedSym = new QuickFix.FIX44.MarketDataRequest.NoRelatedSym();
noRelatedSym.setSymbol("GBPUSD");
msg.addGroup(noRelatedSym);

// Send message
Session.SendToTarget(msg, FeederApp.mysession);
票数 4
EN

Stack Overflow用户

发布于 2016-06-22 18:09:19

您的邮件请求被错误地组装,错误消息正在告诉您。拒绝消息35=3上的字段35=3显示哪个标记不正确,在您的示例中是NoMDEntryType (267)组。之所以会出现这种情况,是因为您在NoRelatedSym组中添加了这个组,而没有添加到消息中。

有关正确创建的消息,请参见下面的代码:

代码语言:javascript
复制
var marketDataRequest = new MarketDataRequest();
marketDataRequest.set(new QuickFix.MDReqID(Utility.GetNewUniqueId()));
marketDataRequest.set(new QuickFix.SubscriptionRequestType('1'));
//if market depth require
marketDataRequest.set(new QuickFix.MarketDepth(1));
marketDataRequest.set(new QuickFix.MDUpdateType(1));
marketDataRequest.set(new QuickFix.AggregatedBook(true));
var noMDEntryTypes = new MarketDataRequest.NoMDEntryTypes();
var mdEntryType_bid = new QuickFix.MDEntryType('0');
noMDEntryTypes.set(mdEntryType_bid);
marketDataRequest.addGroup(noMDEntryTypes);
var mdEntryType_offer = new QuickFix.MDEntryType('1');
noMDEntryTypes.set(mdEntryType_offer);
marketDataRequest.addGroup(noMDEntryTypes);
var relatedSymbol = new MarketDataRequest.NoRelatedSym();
relatedSymbol.set(new QuickFix.Symbol(instrument));
marketDataRequest.addGroup(relatedSymbol);
//Send message
Session.sendToTarget(marketDataRequest, _admin.TradeSessionId);

我从码射获得了这段代码,但我还没有对它进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37974918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档