private void Handle(MarketDepthUpdateMessage msg) { var len = Math.Min(Math.Min(10, msg.Tick?.Bids.Length ?? 0), msg.Tick?.Asks.Length ?? 0); for (var i = 0; i < len; ++i) { var bid = msg.Tick !.Bids[i]; var ask = msg.Tick !.Asks[i]; _logger.LogInformation( $"Market depth update {msg.ParseSymbolFromTopic()} | [bid {i}: price={bid.Price} size={bid.Size}] [ask {i}: price={ask.Price} size={ask.Size}]"); } }
private bool TryHandleUpdateMessages(string message) { if (MarketCandlestickUpdateMessage.TryParse(Serializer, message, out var marketCandlestick)) { Streams.CandlestickUpdateSubject.OnNext(marketCandlestick); return(true); } if (MarketDepthUpdateMessage.TryParse(Serializer, message, out var marketDepth)) { Streams.DepthUpdateSubject.OnNext(marketDepth); return(true); } if (MarketByPriceRefreshUpdateMessage.TryParse(Serializer, message, out var marketByPriceRefresh)) { Streams.MarketByPriceRefreshUpdateSubject.OnNext(marketByPriceRefresh); return(true); } if (MarketBestBidOfferUpdateMessage.TryParse(Serializer, message, out var marketBestBidOffer)) { Streams.BestBidOfferUpdateSubject.OnNext(marketBestBidOffer); return(true); } if (MarketTradeDetailUpdateMessage.TryParse(Serializer, message, out var marketTradeDetail)) { Streams.TradeDetailUpdateSubject.OnNext(marketTradeDetail); return(true); } if (MarketDetailsUpdateMessage.TryParse(Serializer, message, out var marketDetails)) { Streams.MarketDetailsUpdateSubject.OnNext(marketDetails); return(true); } return(false); }