// aktualizacja informacji o bieżących notowaniach private void MarketUpdateHandler(MarketData[] marketData) { var updatedInstruments = new HashSet<BosInstrument>(); foreach (var data in marketData) { var instrument = BosInstrument.Create(data.Instrument); instrument.Update(data); updatedInstruments.Add(instrument); } foreach (var instrument in updatedInstruments) { InvokeUpdate(instrument); } }
// aktualizacja danych obiektu po odebraniu ich z sieci internal void Update(DTO.MarketData data) { if (data.BuyOffer != null) { BuyOffers.Update(data.BuyOffer); } if (data.SellOffer != null) { SellOffers.Update(data.SellOffer); } if (data.Trade != null) { Trades.Update(data.Trade); } if (data.Stats != null) { Session.Update(data.Stats); } if (data.OpenInt != null) { Trades.UpdateLop(data.OpenInt.Value); } }
// funkcja pomocnicza konwertująca obiekt Fixml.MDEntry na DTO.MarketData private static MarketData MarketData_GetData(MDEntry entry) { var data = new MarketData(); data.Instrument = entry.Instrument.Convert(); switch (entry.EntryType) { case MDEntryType.Buy: data.BuyOffer = MarketData_GetOfferData(entry); break; case MDEntryType.Sell: data.SellOffer = MarketData_GetOfferData(entry); break; case MDEntryType.Trade: data.Trade = MarketData_GetTradeData(entry); break; case MDEntryType.Lop: data.OpenInt = entry.Size; break; case MDEntryType.Vol: case MDEntryType.Open: case MDEntryType.Close: case MDEntryType.High: case MDEntryType.Low: case MDEntryType.Ref: data.Stats = MarketData_GetStatsData(entry); break; default: return null; // pozostałe pomijamy } return data; }