// 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;
		}