В настоящее время я использую следующий код для получения текущих цен. Тогда я получаю значения на 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 на консоли, как только они обновляются (я хочу видеть цены только одной валютной пары за раз).
It было бы здорово, если бы кто-то мог предложить лучший способ получить данные быстрее и проще.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Ответ от сервера
8 = FIX.4.4 | 9 = 378 | 35 = я | 34 = 2 | 49 = ХХХХХ | 52 = 20200122-10: 09: 26,537 | 56 = QXXX | 117 = 1 | = 1 296 | 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 |
РЕДАКТИРОВАТЬ: Через некоторое время я получаю эту ошибку после получения этого сообщения от контрагента
Получено сообщение
Входящие: 8 = FIX.4.4 | 9 = 502 | 35 = W | 34 = 7 | 49 = XXXXX | 52 = 20200122-10: 09: 2 8,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
событие: сообщение 7 отклонено: тег появляется более одного раза (поле = 106)