private bool TryHandleUpdateMessages(string message) { if (MarketByPriceUpdateMessage.TryParse(Serializer, message, out var marketByPrice)) { Streams.MarketByPriceUpdateSubject.OnNext(marketByPrice); return(true); } return(false); }
private void FillBulk(MarketByPriceUpdateMessage message, OrderBookLevelBulk bulk) { if (message == null) { return; } bulk.ExchangeName = ExchangeName; bulk.ServerTimestamp = message.Timestamp.DateTime; }
private void Handle(MarketByPriceUpdateMessage msg) { if (msg.Tick?.Bids != null) { for (var i = 0; i < msg.Tick.Bids.Length; ++i) { var bid = msg.Tick.Bids[i]; _logger.LogInformation($"Market by price update {msg.ParseSymbolFromTopic()} | [bid {i}: price={bid.Price} size={bid.Size}]"); } } if (msg.Tick?.Asks != null) { for (var i = 0; i < msg.Tick.Asks.Length; ++i) { var bid = msg.Tick.Asks[i]; _logger.LogInformation($"Market by price update {msg.ParseSymbolFromTopic()} | [ask {i}: price={bid.Price} size={bid.Size}]"); } } }
private void HandleUpdate(MarketByPriceUpdateMessage response) { // TODO: how to force refresh when sequence number does not match? BufferData(response); }
private OrderBookLevel[] ConvertLevels(MarketByPriceUpdateMessage response) { var symbol = response.ParseSymbolFromTopic(); return(ConvertLevels(symbol, response.Tick?.Bids, response.Tick?.Asks)); }