public virtual void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh message, SessionID session) { try { enqueueToSplit(message); // Requisita a proxima lista de papeis if (message.IsSetLastFragment() && message.LastFragment.ToString().ToUpper().Equals("Y")) { if (message.IsSetMDReqID()) { logger.Info("Final do snapshot ID [" + message.MDReqID.ToString() + "]"); } if (_marketDataRequested >= _channelUmdfConfig.Markets.Count) { logger.Info("Final das requisicoes de snapshot"); } } } catch (Exception ex) { logger.Error("onMessage(MarketDataSnapshotFullRefresh): " + ex.Message, ex); } }
public void OnMessage(QuickFix.FIX44.MarketDataSnapshotFullRefresh marketDataSnapshot, SessionID session) { MarketPrice marketPrice = new MarketPrice { Symbol = marketDataSnapshot.Symbol.getValue() }; var nomdentries = marketDataSnapshot.NoMDEntries; // message.GetGroup(1, noMdEntries); var grp = new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup(); for (int i = 1; i <= nomdentries.getValue(); i++) { grp = (QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup)marketDataSnapshot.GetGroup(i, grp); // var grp = marketDataSnapshot.GetGroup(i, new QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup()) as QuickFix.FIX44.MarketDataSnapshotFullRefresh.NoMDEntriesGroup; MDEntryType priceType = grp.Get(new MDEntryType()); MDEntryPx mdEntryPx = grp.Get(new MDEntryPx()); if (priceType.getValue() == MDEntryType.BID) { marketPrice.Bid = mdEntryPx.getValue(); } else if (priceType.getValue() == MDEntryType.OFFER) { marketPrice.Offer = mdEntryPx.getValue(); } else if (priceType.getValue() == MDEntryType.TRADE) { marketPrice.TradedPrice = mdEntryPx.getValue(); } else if (priceType.getValue() == MDEntryType.TRADING_SESSION_LOW_PRICE) { marketPrice.LowPx = mdEntryPx.getValue(); } else if (priceType.getValue() == MDEntryType.TRADING_SESSION_HIGH_PRICE) { marketPrice.HighPx = mdEntryPx.getValue(); } } if (OnMarketPrice != null) { OnMarketPrice(marketPrice); } }