internal void marketDataReturned(QuickFix.FIX42.MarketDataSnapshotFullRefresh m) { String id = m.MDReqID.ToString(); QuickFix.FIX42.NewOrderSingle order = orderHashSet[id]; //get price from market snapshot var bid = new QuickFix.FIX42.MarketDataSnapshotFullRefresh.NoMDEntriesGroup(); bool setBid = false; //m.GetGroup(1, bid); var offer = new QuickFix.FIX42.MarketDataSnapshotFullRefresh.NoMDEntriesGroup(); bool setOffer = false; //m.GetGroup(2, offer); for (int grpIndex = 1; grpIndex <= m.GetInt(Tags.NoMDEntries); grpIndex += 1) { if (grpIndex == 1) { m.GetGroup(grpIndex, bid); setBid = true; } else { m.GetGroup(grpIndex, offer); setOffer = true; } } decimal price = 0; //if (order.Side.Obj == Side.BUY) switch (order.Side.Obj) { case QuickFix.Fields.Side.BUY: Console.Write("buy"); if (setBid) { price = bid.GetDecimal(Tags.MDEntryPx); } break; case QuickFix.Fields.Side.SELL: Console.Write("sell"); if (setOffer) { price = offer.GetDecimal(Tags.MDEntryPx); } break; } if (!setBid && !setOffer) { price = orderPriceHashSet[id]; } order.Price = new Price(price); if (OrderEvent != null) { OrderEvent(order); } if (_fixConnectionSystem.InitiatorRunning && _connectionViewModel.IsOrderConnected) { Thread sendToTargetThreading = new Thread(new ParameterizedThreadStart(sendToOrderToTarget)); sendToTargetThreading.IsBackground = true; sendToTargetThreading.Start(order); //QuickFix.Session.SendToTarget(order, _fixConnectionSystem.orderSession.SessionID); } }