private bool TryHandleUpdateMessages(string message)
        {
            if (MarketByPriceUpdateMessage.TryParse(Serializer, message, out var marketByPrice))
            {
                Streams.MarketByPriceUpdateSubject.OnNext(marketByPrice);
                return(true);
            }

            return(false);
        }
Example #2
0
        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}]");
                }
            }
        }
Example #4
0
 private void HandleUpdate(MarketByPriceUpdateMessage response)
 {
     // TODO: how to force refresh when sequence number does not match?
     BufferData(response);
 }
Example #5
0
        private OrderBookLevel[] ConvertLevels(MarketByPriceUpdateMessage response)
        {
            var symbol = response.ParseSymbolFromTopic();

            return(ConvertLevels(symbol, response.Tick?.Bids, response.Tick?.Asks));
        }