private void OrderBookHandler(OrderBookData data)
 {
     if (!TrackedSymbol.Equals(data.Symbol))
     {
         return;
     }
     SpotPrice         = data.MarkPrice;
     LastTradePrice    = data.LastTradePrice;
     LastTradeQuantity = data.LastTradeQuantity;
     Asks = new ConcurrentDictionary <decimal, decimal>(data.Asks);
     Bids = new ConcurrentDictionary <decimal, decimal>(data.Bids);
     LastFullUpdateTimestamp = DateTime.Now;
     OrderBookUpdated?.Invoke(this);
 }
 private void MarketStateUpdateHandler(MarketStateUpdateData data)
 {
     if (!TrackedSymbol.Equals(data.Symbol))
     {
         return;
     }
     LastTradePrice    = data.LastTradePrice;
     LastTradeQuantity = data.LastTradeQuantity;
     PayoutPerContract = data.PayoutPerContract;
     FundingRate       = data.FundingRate;
     FundingTime       = data.FundingTime;
     SpotPrice         = data.SpotPrice;
     OhlcvReceivedEvent?.Invoke(data.Ohlcvs);
 }
 private void OrderBookUpdateHandler(OrderBookFullUpdateData data)
 {
     if (!TrackedSymbol.Equals(data.Symbol))
     {
         return;
     }
     LastTradePrice    = data.LastTradePrice;
     LastTradeQuantity = data.LastTradeQuantity;
     SpotPrice         = data.MarkPrice;
     foreach (Tuple <decimal, decimal> ask in data.AskUpdates)
     {
         if (ask.Item2 == 0)
         {
             if (Asks.ContainsKey(ask.Item1))
             {
                 Asks.TryRemove(ask.Item1, out _);
             }
         }
         else
         {
             Asks[ask.Item1] = ask.Item2;
         }
     }
     foreach (Tuple <decimal, decimal> bid in data.BidUpdates)
     {
         if (bid.Item2 == 0)
         {
             if (Bids.ContainsKey(bid.Item1))
             {
                 Bids.TryRemove(bid.Item1, out _);
             }
         }
         else
         {
             Bids[bid.Item1] = bid.Item2;
         }
     }
     LastTrades = data.Trades;
     LastFullUpdateTimestamp = data.LastFullTimestamp;
     OrderBookUpdatedList?.Invoke(data.BidUpdates, data.AskUpdates);
     OrderBookUpdated?.Invoke(this);
 }