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); } }
public override void onMessage(QuickFix44.MarketDataSnapshotFullRefresh message, SessionID session) { // getting attributes Symbol symbol = message.getSymbol(); SendingTime sendingTime = new SendingTime(message.getHeader().getUtcTimeStamp(SendingTime.FIELD)); NoMDEntries noMDEntries = message.getNoMDEntries(); decimal ask = 0m; decimal bid = 0m; decimal askSize = 0m; decimal bidSize = 0m; for (int i = 0; i < noMDEntries.getValue(); i++) { QuickFix44.MarketDataSnapshotFullRefresh.NoMDEntries group = new QuickFix44.MarketDataSnapshotFullRefresh.NoMDEntries(); message.getGroup((uint)i + 1, group); MDEntryType mdEntryType = group.getMDEntryType(); MDEntryPx mdEntryPx = group.getMDEntryPx(); MDEntrySize mdEntrySize = group.getMDEntrySize(); if (mdEntryType.getValue() == MDEntryType.BID) { bid = (decimal)mdEntryPx.getValue(); bidSize = (decimal)mdEntrySize.getValue(); } else if (mdEntryType.getValue() == MDEntryType.OFFER) { ask = (decimal)mdEntryPx.getValue(); askSize = (decimal)mdEntrySize.getValue(); } } // firing event Console.WriteLine("QuickFix44.MarketDataSnapshotFullRefresh: {0}, {1}/{2}, {3}/{4}, {5}", symbol, ask, bid, askSize, bidSize, sendingTime); this.fixServices.NotifyQuote(Counterpart.Dukascopy, symbol.getValue(), ask, askSize, bid, bidSize, sendingTime.getValue()); }