Search code examples
quickfixquickfixjquickfixn

how to answer a MassQuoteAck?


i'm trying to get bid and ask a primeXM broker. but i don't know what i'm doing wrong. could anyone show me an example of an answer to Massquote?

As soon as I get a MassQuote response, I'm sending a MassQuoteAsk, but the error "Required tag missing" occurs.

The logs:

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 |


Request of 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 message response:

    public void OnMessage(MassQuote message, SessionID sessionId) {
      _logger.LogDebug($"OnMessage MassQuote {message}");

      MassQuoteAcknowledgement m = new MassQuoteAcknowledgement();
      m.QuoteID = message.QuoteID;
      SendMessage(m);
    }

Solution

  • It sounds like you need to get ahold of PrimeXM's connection specification and update your DataDictionary XML file to match it.

    For instance, if their spec indicates that they are not going to send 117 in their MassQuote message, then you need remove 117 from the MassQuote definition in your dictionary.