public TickPrice ToTickPrice(OrderBook orderBook) { if (orderBook.Asks != null && orderBook.Asks.Any() && orderBook.Bids != null && orderBook.Bids.Any()) { return(new TickPrice(new Instrument(IcmExchange.Name, orderBook.Asset), orderBook.Timestamp, orderBook.Asks.Select(x => x.Price).Min(), orderBook.Bids.Select(x => x.Price).Max() )); } return(null); }
private async Task HandleOrderBook(OrderBook orderBook) { if (_instruments.Contains(orderBook.Asset) || _config.UseSupportedCurrencySymbolsAsFilter == false) { var tickPrice = _modelConverter.ToTickPrice(orderBook); if (tickPrice != null) { await _tickPriceHandler.Handle(tickPrice); } await TrySendOrderBook(orderBook); } }
private async Task TrySendOrderBook(OrderBook orderBook) { if ((orderBook.Asks == null || !orderBook.Asks.Any()) && (orderBook.Bids == null || !orderBook.Bids.Any())) { return; } var orderBookDto = new Trading.OrderBook( IcmExchange.Name, orderBook.Asset, orderBook.Asks?.Select(e => new VolumePrice(e.Price, e.Volume)).ToArray() ?? new VolumePrice[] { }, orderBook.Bids?.Select(e => new VolumePrice(e.Price, e.Volume)).ToArray() ?? new VolumePrice[] { }, orderBook.Timestamp); await _orderBookHandler.Handle(orderBookDto); }