public override bool ProcessObject(FuturesLevel2Update obj)
        {
            if (disposedValue || fullDepth == null)
            {
                return(false);
            }

            lock (lockObj)
            {
                try
                {
                    if (obj.Change.Side == Side.Buy)
                    {
                        SequencePieces(obj, fullDepth.Bids);
                    }
                    else
                    {
                        SequencePieces(obj, fullDepth.Asks);
                    }

                    fullDepth.Sequence = obj.Sequence;
                }
                catch (Exception ex)
                {
                    string e = ex.Message;
                }
            }

            if (updVol)
            {
                decimal price = (decimal)fullDepth.Bids[0].Price;

                if (!Candle.IsTimeInCandle(candle, fullDepth.Timestamp.ToUniversalTime()))
                {
                    candle.ClosePrice = price;
                    LastCandles.Add(candle);

                    Candle        = new Candle();
                    Candle.Volume = 0;

                    Candle.OpenPrice = Candle.ClosePrice = Candle.HighPrice = Candle.LowPrice = price;
                    KlineTime        = Candle.Timestamp = klineType.GetCurrentKlineStartTime();
                }
                else
                {
                    Candle.ClosePrice = price;

                    if (price > Candle.HighPrice)
                    {
                        Candle.HighPrice = price;
                    }
                    else if (price < Candle.LowPrice)
                    {
                        Candle.LowPrice = price;
                    }
                }
            }

            return(true);
        }