如何回答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 |


MarketData的请求

    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);
    }

解决方法

听起来您需要掌握PrimeXM的连接规范并更新您的DataDictionary XML文件以使其匹配。

例如,如果他们的规范指示他们不打算在MassQuote消息中发送117,则您需要从字典的MassQuote定义中删除117。

,

我的.cfg是UseDataDictionary = Y,但是有时PrimeXM似乎在没有QuoteID(117)的情况下回答MassQuote(MsgType = i),但是在我的FIX44.xml中按需设置了117。这就是导致错误的原因。

所以我更改了.cfg UseDataDictionary = N,它停止给出错误。

我不知道为什么PrimeXM会在没有QuoteID的情况下发送MassQuote,但我想我已经解决了问题。

谢谢。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...