C# 使用QuickFIX/n接收每个勾号/价格变动的投标/报价的最佳方式是什么

C# 使用QuickFIX/n接收每个勾号/价格变动的投标/报价的最佳方式是什么,c#,quickfix,fix-protocol,quickfixn,C#,Quickfix,Fix Protocol,Quickfixn,我目前使用以下代码来获取当前价格。然后我在messagequickfix.FIX44.MassQuote m,SessionID s上收到公共void上的值 但这种方法对我来说并不理想。我希望能够看到当前的价格尽快更新。 在这个小例子中,我想Console.WriteLine更新后立即将最新的出价/出价发送到控制台我想一次只查看一种货币对的价格 如果有人能提出一种更好的方法来更快更容易地获取数据,那就太好了 先谢谢你 编辑:来自服务器的响应 4.4四| 9 | 9 124; 9 | 9 1244

我目前使用以下代码来获取当前价格。然后我在messagequickfix.FIX44.MassQuote m,SessionID s上收到公共void上的值

但这种方法对我来说并不理想。我希望能够看到当前的价格尽快更新。 在这个小例子中,我想Console.WriteLine更新后立即将最新的出价/出价发送到控制台我想一次只查看一种货币对的价格

如果有人能提出一种更好的方法来更快更容易地获取数据,那就太好了

先谢谢你

编辑:来自服务器的响应

4.4四| 9 | 9 124; 9 | 9 1244 1244 | 4 | 52=20200122-10-10 10:09:52 12488 8 8 8 8 8 8 8 8 8 8 8 8 8=修修修修修修修修修4.4四四四四四四四四四四四四四\\1241010 10 \1241010 10 10 10 | 52=10 10 10 10 10 10 10 10 10 \1241010 10 10 10 10 10 10 10 10 10 10 10 \\124;; 52=10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 124; 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|

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

收到的信息

传入:4.4 | 9 124; 9 124; 9 | 9 1244 | 4 1244 | 52=20200122-10-10-10 10:10 10 1244 12444 12444 \1244| 4 124四四四四四四四四四四四四四四四四四四四四四四四四四四四四个固定固定现场现场现场现场现场现场8 8 8 8 8 8 8 \\12444 4 4 \12444 4 4 4四四四四四四四四四四四四\\\\\\\\\12444 4 4 4 4 4 4 4 4 4 4 4 4四四四四四四四四四四四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 299=0 1240=10|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 244=10 |

事件:消息7已拒绝:标记多次出现字段=106


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

记住从MassQuoteak上的MassQuote回显117/QuoteID


这将导致价格不断更新。我假设PrimeXM在发送新的更新之前正在等待每个确认。

什么意思是在更新后立即查看当前价格?您正在发送带有SubscriptionRequestType 1 Snapshot+更新的MarketDataRequest,这意味着您将在有更新时立即收到一条消息。感谢您的回复。但我没有得到更新。我只是在发送请求后才从服务器得到响应,然后该工具没有更新,或者您的交易对手行为错误。您确定发送请求时使用了有效的工具吗?编辑:来自服务器的响应是什么样子的?你能把它添加到你的问题中吗?当然,我会添加我在发送第一个MarketData请求时得到的初始响应。第一个是MassQuote。第二个是MarketDataSnapshotFullRefresh。它包含价格更新。但您没有正确处理它,而是拒绝了它。这就是为什么在应用程序中看不到更新的原因。看起来您的数据字典与您的交易对手发送的消息不匹配。你应该看看他们的交战规则,并相应地更新你的字典。聪明的克里斯托夫,非常感谢你的帮助。我真的很感激。
            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);