예제 #1
0
        public override async Task <OrderbookResponse> GetOrderbooks(OrderbookRequest request, ServerCallContext context)
        {
            var assetPairResult = await _validationService.ValidateAssetPairAsync(request.AssetPairId);

            if (assetPairResult != null)
            {
                return(new OrderbookResponse
                {
                    Error = new Error
                    {
                        Code = (int)assetPairResult.Code,
                        Message = assetPairResult.Message
                    }
                });
            }

            var orderbooks = await _orderbooksService.GetAsync(request.AssetPairId, request.Depth);

            var result = new OrderbookResponse();

            foreach (var orderbook in orderbooks)
            {
                var resOrderBook = _mapper.Map <Orderbook>(orderbook);
                resOrderBook.Asks.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(orderbook.Asks));
                resOrderBook.Bids.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(orderbook.Bids));
                result.Payload.Add(resOrderBook);
            }

            return(result);
        }
예제 #2
0
        public override async Task <OrderbookResponse> GetOrderbook(OrderbookRequest request, ServerCallContext context)
        {
            var orderbook = (await _orderbooksService.GetAsync(request.AssetPairId)).FirstOrDefault();

            return(new OrderbookResponse {
                Body = orderbook
            });
        }
        public override async Task <Orderbook> GetOrderbook(OrderbookRequest request, ServerCallContext context)
        {
            var book = _marketDataService.OrderBook(DefaultTenantId, request.AssetPairId);

            if (book == null || book.OrderBook == null)
            {
                return(new Orderbook
                {
                    AssetPairId = request.AssetPairId,
                    Timestamp = Timestamp.FromDateTime(DateTime.UtcNow)
                });
            }

            var response = new Orderbook
            {
                AssetPairId = book.OrderBook.Symbol,
                Timestamp   = Timestamp.FromDateTime(DateTime.SpecifyKind(book.OrderBook.Timestamp, DateTimeKind.Utc)),
                Asks        =
                {
                    book.OrderBook.LimitOrders.Where(o => o.Volume < 0).OrderBy(o => o.Price).Select(o => new Orderbook.Types.PriceVolume
                    {
                        P = o.Price.ToString(CultureInfo.InvariantCulture),
                        V = Math.Abs(o.Volume).ToString(CultureInfo.InvariantCulture)
                    })
                },
                Bids =
                {
                    book.OrderBook.LimitOrders.Where(o => o.Volume > 0).OrderByDescending(o => o.Price).Select(o => new Orderbook.Types.PriceVolume
                    {
                        P = o.Price.ToString(CultureInfo.InvariantCulture),
                        V = Math.Abs(o.Volume).ToString(CultureInfo.InvariantCulture)
                    })
                }
            };

            return(response);
        }