public static OrderWrapper Create(LimitOrder order) { return new OrderWrapper { Order = order }; }
public async Task RegisterLinkedLimitOrders(LimitOrder order1, LimitOrder order2) { await HandleCommonStuff(order1); await HandleCommonStuff(order2); order2.LinkedLimitOrder = order1.Id; order1.LinkedLimitOrder = order2.Id; await _ordersRepository.RegisterOrderAsync(order1); await _ordersRepository.RegisterOrderAsync(order2); await _orderExecuter.Execute(); }
private static LimitOrderBookModel ConvertOrderBook(string asset, LimitOrder[] orders) { var bid = orders.Where(o => o.Action == OrderAction.Buy) .GroupBy(o => o.Price) .Select( o => new LimitOrderBookItem { Rate = o.Key, Volume = o.Sum(i => i.Volume), Type = BookOrderType.Bid }) .ToArray(); var ask = orders.Where(o => o.Action == OrderAction.Sell) .GroupBy(o => o.Price) .Select( o => new LimitOrderBookItem { Rate = o.Key, Volume = o.Sum(i => i.Volume), Type = BookOrderType.Ask }) .ToArray(); var items = new List<LimitOrderBookItem>(bid.Length + ask.Length + 1); items.AddRange(bid); items.AddRange(ask); return new LimitOrderBookModel { Asset = asset, Items = items.OrderByDescending(itm => itm.Rate).ToArray() }; }