private void ProcessMessageTicker(ISerializedValue[] arguments) { var currencyPair = CurrencyPair.Parse(arguments[0].Deserialize <string>()); var priceLast = arguments[1].Deserialize <double>(); var orderTopSell = arguments[2].Deserialize <double>(); var orderTopBuy = arguments[3].Deserialize <double>(); var priceChangePercentage = arguments[4].Deserialize <double>(); var volume24HourBase = arguments[5].Deserialize <double>(); var volume24HourQuote = arguments[6].Deserialize <double>(); var isFrozenInternal = arguments[7].Deserialize <byte>(); var marketData = new MarketData { PriceLast = priceLast, OrderTopSell = orderTopSell, OrderTopBuy = orderTopBuy, PriceChangePercentage = priceChangePercentage, Volume24HourBase = volume24HourBase, Volume24HourQuote = volume24HourQuote, IsFrozenInternal = isFrozenInternal }; if (Tickers.ContainsKey(currencyPair)) { Tickers[currencyPair] = marketData; } else { Tickers.Add(currencyPair, marketData); } OnTickerChanged?.Invoke(this, new TickerChangedEventArgs(currencyPair, marketData)); }