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