public async Task <IEnumerable <IOrder> > OrdersAsync(IPair pair, bool bOnlyOwned, System.Threading.CancellationToken cancellationToken) { if (!pair.Name.Equals("bio_btc") && !pair.Name.Equals("bio_rur")) { throw new InvalidOperationException($"Pair {pair.Name} not supported."); } YOBIT.API.Data.Stock.OrderBook orders = await _stock.GetOrderBookAsync(pair.Name, cancellationToken); IEnumerable <YobitOrder> asks = orders.BIOBTC.ASKS.GroupBy(rate => rate[0]).Select(g => new YobitOrder(g.Key.ToString(), OrderType.sell, g.Key, orders.BIOBTC.ASKS.Where(rate => rate[0] == g.Key).Sum(o => o[1]))); IEnumerable <YobitOrder> bids = orders.BIOBTC.BIDS.GroupBy(rate => rate[0]).Select(g => new YobitOrder(g.Key.ToString(), OrderType.buy, g.Key, orders.BIOBTC.BIDS.Where(rate => rate[0] == g.Key).Sum(o => o[1]))); return(asks.Concat(bids)); }
public async Task <IOrder> OrderAsync(IPair pair, string Id, System.Threading.CancellationToken cancellationToken) { if (!pair.Name.Equals("bio_btc") && !pair.Name.Equals("bio_rur")) { throw new InvalidOperationException($"Pair {pair.Name} not supported."); } YOBIT.API.Data.Stock.OrderBook orders = await _stock.GetOrderBookAsync(pair.Name, cancellationToken); IEnumerable <YobitOrder> asks = orders.BIOBTC.ASKS.GroupBy(rate => rate[0]).Select(g => new YobitOrder(g.Key.ToString(), OrderType.sell, g.Key, orders.BIOBTC.ASKS.Where(rate => rate[0] == g.Key).Sum(o => o[1]))); IOrder order = asks.Where(o => o.Id.Equals(Id)).FirstOrDefault(); if (order != null) { return(order); } IEnumerable <YobitOrder> bids = orders.BIOBTC.BIDS.GroupBy(rate => rate[0]).Select(g => new YobitOrder(g.Key.ToString(), OrderType.buy, g.Key, orders.BIOBTC.BIDS.Where(rate => rate[0] == g.Key).Sum(o => o[1]))); order = bids.Where(o => o.Id.Equals(Id)).FirstOrDefault(); return(order); }