private async Task <OrderBook> GetOrderBookLocalAsync(IKrakenApi api, AssetPair assetPair, int?maxCount) { var pair = assetPair; var remotePair = new AssetPair(pair.Asset1.ToRemoteCode(this), pair.Asset2.ToRemoteCode(this)); var r = await api.GetOrderBookAsync(remotePair.ToTicker(this), maxCount ?? 0).ConfigureAwait(false); CheckResponseErrors(r); var data = r.result.FirstOrDefault(); var orderBook = new OrderBook(Network, assetPair); var asks = maxCount.HasValue ? data.Value.asks.Take(maxCount.Value / 2).ToArray() : data.Value.asks; var bids = maxCount.HasValue ? data.Value.bids.Take(maxCount.Value / 2).ToArray() : data.Value.bids; foreach (var i in bids.Select(GetBidAskData)) { orderBook.Add(OrderType.Bid, i.Price, i.Volume); } foreach (var i in asks.Select(GetBidAskData)) { orderBook.Add(OrderType.Ask, i.Price, i.Volume); } return(orderBook); }
public string RemotePairOrNull(IDescribesAssets provider) { return(HasPair ? Pair.ToTicker(provider) : null); }