使用 QuickFIX/n 获得每个 tick/price 运动的 Bid/Offer 价格的最佳方式是什么

What is the best way to receive the Bid/Offer price for every tick/price movement using QuickFIX/n

我目前使用以下代码来获取当前价格。然后我收到 public void OnMessage(QuickFix.FIX44.MassQuote m, SessionID s)

上的值
            QuickFix.FIX44.MarketDataRequest msg = new QuickFix.FIX44.MarketDataRequest();

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

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

            // Add the NoRelatedSym group
            QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup noRelatedSym = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup();
            noRelatedSym.SetField(new Symbol(pair.Insert(3, "/")));
            msg.AddGroup(noRelatedSym);


            Console.WriteLine("Sending Market Request...");
            if(!_priceSession.SendRedundantResendRequests) _priceSession.SendRedundantResendRequests = true;
            SendMessagePrice(msg);

但是这个方法对我来说并不理想。我希望能够在更新后立即看到当前价格。 在这个小例子中,我想 Console.WriteLine() 最新的 Bid/Offer 价格一更新到控制台(我想一次只看到一个货币对的价格)。

如果有人能提出更好的方法来更快更轻松地获取数据,那就太好了。

提前致谢。

编辑:来自服务器的响应

8=FIX.4.4|9=378|35=i|34=2|49=XXXXX|52=20200122-10:09:26.537|56=QXXX|117=1|296=1|302=001|295=5|299=0|106=0|134=2000000|135=1000000|188=1.10914|190=1.10916|299=1|106=10|134=1800000|135=1000000|188=1.10914|190=1.10916|299=2|106=11|134=1500000|135=500000|188=1.10914|190=1.10916|299=3|106=6|134=1000000|135=100000|188=1.10914|190=1.10916|299=4|106=6|134=2000000|135=5400000|188=1.10913|190=1.10917|10=113|

编辑:一段时间后,我收到来自对方的消息后出现此错误

收到消息

incoming: 8=FIX.4.4|9=502|35=W|34=7|49=XXXXX|52=20200122-10:09:28.074|56=QXXX|55=EUR/USD|262=001|268=10|269=0|270=1.10914|271=1700000|299=1|106=6|269=0|270=1.10914|271=1000000|299=3|106=11|269=0|270=1.10914|271=1000000|299=0|106=10|269=0|270=1.10913|271=3000000|299=4|106=10|269=0|270=1.10913|271=1500000|299=2|106=9|269=1|270=1.10916|271=1000000|299=0|106=0|269=1|270=1.10916|271=1000000|299=1|106=10|269=1|270=1.10916|271=500000|299=2|106=11|269=1|270=1.10916|271=100000|299=3|106=6|269=1|270=1.10917|271=4500000|299=4|106=13|10=232

event: Message 7 Rejected: Tag appears more than once (Field=106)

由于您使用的是 PrimeXM,因此市场数据更新的传达方式略有不同。他们正在发送 MassQuote 条消息 (msgtype i),您需要回复 MassQuoteAck 条消息 (msgtype b)。

记得回显 MassQuoteAck 上的 MassQuote 中的 117/QuoteID

这应该会导致价格更新不断出现。我假设 PrimeXM 在发送新更新之前等待每个 ACK​​。