如何回答 MassQuoteAck?
how to answer a MassQuoteAck?
我正在尝试出价并询问 primeXM 经纪人。但我不知道我做错了什么。任何人都可以向我展示 Massquote 的答案示例吗?
一收到 MassQuote 响应,我就发送了 MassQuoteAsk,但出现错误“缺少必需的标签”。
日志:
ToApp 8=FIX.4.4 |9=86 |35=V |34=2 |49=XXXX|52=20200826-15:10:02.528 |56=XXXX |262=0 |263=1 |264=0 |146=1 |55=USD/JPY |10=205 |
FromApp 8=FIX.4.4 |9=135 |35=i |34=2 |49=XC80 |52=20200826-15:10:02.769 |56=Q097 |117=1 |296=1 |302=0 |295=1 |299=0 |106=10 |134=3000000 |135=1000000 |188=106.11 |190=106.112 |10=048 |
OnMessage MassQuote 8=FIX.4.4 |9=135 |35=i |34=2 |49=XC80 |52=20200826-15:10:02.769 |56=Q097 |117=1 |296=1 |302=0 |295=1 |299=0 |106=10 |134=3000000 |135=1000000 |188=106.11 |190=106.112 |10=048 |
ToApp 8=FIX.4.4 |9=57 |35=b |34=3 |49=XXXX|52=20200826-15:10:02.814 |56=XXXX |117=1 |10=002 |
ToAdmin 8=FIX.4.4 |9=100 |35=3 |34=4 |49=XXXX|52=20200826-15:10:02.931 |56=XXXX |45=3 |58=Required tag missing |371=117 |372=i |373=1 |10=238 |
市场数据请求:
private void QueryMarketDataRequest() {
MDReqID mdReqId = new MDReqID(GetFreeID);
SubscriptionRequestType subscriptionRequestType =
new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
MarketDepth marketDepth = new MarketDepth(0);
MarketDataRequest.NoRelatedSymGroup symbolGroup = new MarketDataRequest.NoRelatedSymGroup();
symbolGroup.Set(new Symbol("USD/JPY"));
MarketDataRequest message = new MarketDataRequest(mdReqId, subscriptionRequestType, marketDepth);
message.AddGroup(symbolGroup);
SendMessage(message);
}
MassQuote 消息回复:
public void OnMessage(MassQuote message, SessionID sessionId) {
_logger.LogDebug($"OnMessage MassQuote {message}");
MassQuoteAcknowledgement m = new MassQuoteAcknowledgement();
m.QuoteID = message.QuoteID;
SendMessage(m);
}
我的 .cfg 是 UseDataDictionary=Y,但有时 PrimeXM 似乎在没有 QuoteID (117) 的情况下回答 MassQuote (MsgType=i),但在我的 FIX44.xml 中,117 是按要求设置的。这是导致错误的原因。
所以我更改了 .cfg UseDataDictionary=N,它不再给出错误。
我不知道为什么 PrimeXM 发送的 MassQuote 没有 QuoteID,但我想我的问题已经解决了。
谢谢。
dbug: QuickFix.IApplication[0]
FromApp 8=FIX.4.4╔9=95╔35=i╔34=63╔49=XC80╔52=20200826-16:58:12.444╔56=Q097╔106=10╔190=106.008╔295=1╔296=1╔299=0╔302=0╔10=229╔
dbug: QuickFix.IApplication[0]
OnMessage MassQuote 8=FIX.4.4╔9=95╔35=i╔34=63╔49=XC80╔52=20200826-16:58:12.444╔56=Q097╔106=10╔190=106.008╔295=1╔296=1╔299=0╔302=0╔10=229╔
warn: QuickFix.IApplication[0]
field not found for tag: 117
听起来您需要了解 PrimeXM 的连接规范并更新您的 DataDictionary XML 文件以匹配它。
例如,如果他们的规范表明他们不会在他们的 MassQuote 消息中发送 117,那么您需要从字典中的 MassQuote 定义中删除 117。
我正在尝试出价并询问 primeXM 经纪人。但我不知道我做错了什么。任何人都可以向我展示 Massquote 的答案示例吗?
一收到 MassQuote 响应,我就发送了 MassQuoteAsk,但出现错误“缺少必需的标签”。
日志:
ToApp 8=FIX.4.4 |9=86 |35=V |34=2 |49=XXXX|52=20200826-15:10:02.528 |56=XXXX |262=0 |263=1 |264=0 |146=1 |55=USD/JPY |10=205 |
FromApp 8=FIX.4.4 |9=135 |35=i |34=2 |49=XC80 |52=20200826-15:10:02.769 |56=Q097 |117=1 |296=1 |302=0 |295=1 |299=0 |106=10 |134=3000000 |135=1000000 |188=106.11 |190=106.112 |10=048 |
OnMessage MassQuote 8=FIX.4.4 |9=135 |35=i |34=2 |49=XC80 |52=20200826-15:10:02.769 |56=Q097 |117=1 |296=1 |302=0 |295=1 |299=0 |106=10 |134=3000000 |135=1000000 |188=106.11 |190=106.112 |10=048 |
ToApp 8=FIX.4.4 |9=57 |35=b |34=3 |49=XXXX|52=20200826-15:10:02.814 |56=XXXX |117=1 |10=002 |
ToAdmin 8=FIX.4.4 |9=100 |35=3 |34=4 |49=XXXX|52=20200826-15:10:02.931 |56=XXXX |45=3 |58=Required tag missing |371=117 |372=i |373=1 |10=238 |
市场数据请求:
private void QueryMarketDataRequest() {
MDReqID mdReqId = new MDReqID(GetFreeID);
SubscriptionRequestType subscriptionRequestType =
new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
MarketDepth marketDepth = new MarketDepth(0);
MarketDataRequest.NoRelatedSymGroup symbolGroup = new MarketDataRequest.NoRelatedSymGroup();
symbolGroup.Set(new Symbol("USD/JPY"));
MarketDataRequest message = new MarketDataRequest(mdReqId, subscriptionRequestType, marketDepth);
message.AddGroup(symbolGroup);
SendMessage(message);
}
MassQuote 消息回复:
public void OnMessage(MassQuote message, SessionID sessionId) {
_logger.LogDebug($"OnMessage MassQuote {message}");
MassQuoteAcknowledgement m = new MassQuoteAcknowledgement();
m.QuoteID = message.QuoteID;
SendMessage(m);
}
我的 .cfg 是 UseDataDictionary=Y,但有时 PrimeXM 似乎在没有 QuoteID (117) 的情况下回答 MassQuote (MsgType=i),但在我的 FIX44.xml 中,117 是按要求设置的。这是导致错误的原因。
所以我更改了 .cfg UseDataDictionary=N,它不再给出错误。
我不知道为什么 PrimeXM 发送的 MassQuote 没有 QuoteID,但我想我的问题已经解决了。
谢谢。
dbug: QuickFix.IApplication[0]
FromApp 8=FIX.4.4╔9=95╔35=i╔34=63╔49=XC80╔52=20200826-16:58:12.444╔56=Q097╔106=10╔190=106.008╔295=1╔296=1╔299=0╔302=0╔10=229╔
dbug: QuickFix.IApplication[0]
OnMessage MassQuote 8=FIX.4.4╔9=95╔35=i╔34=63╔49=XC80╔52=20200826-16:58:12.444╔56=Q097╔106=10╔190=106.008╔295=1╔296=1╔299=0╔302=0╔10=229╔
warn: QuickFix.IApplication[0]
field not found for tag: 117
听起来您需要了解 PrimeXM 的连接规范并更新您的 DataDictionary XML 文件以匹配它。
例如,如果他们的规范表明他们不会在他们的 MassQuote 消息中发送 117,那么您需要从字典中的 MassQuote 定义中删除 117。