public async Task <List <OpenOrder> > GetOpenOrders(string market) { var orders = await _api.GetOpenOrderDetailsAsync(market); if (orders.Count() > 0) { return(orders.Select(x => new OpenOrder { Exchange = _exchange.ToString(), OriginalQuantity = x.Amount, ExecutedQuantity = x.AmountFilled, OrderId = x.OrderId, Side = x.IsBuy ? OrderSide.Buy : OrderSide.Sell, Market = x.Symbol, Price = x.Price, OrderDate = x.OrderDate, Status = x.Result.ToOrderStatus() }).ToList()); } return(new List <OpenOrder>()); }
public override async void pollOrders(object source, ElapsedEventArgs e) { if (pollingOrders) { return; } else { pollingOrders = true; } try { for (bool open_completed = false; open_completed; open_completed = !open_completed) { IEnumerable <ExchangeOrderResult> resultOrders; if (open_completed) { resultOrders = await api.GetCompletedOrderDetailsAsync(); } else { resultOrders = await api.GetOpenOrderDetailsAsync(); } foreach (ExchangeOrderResult orderOpen in resultOrders) { String orderID = orderOpen.OrderId; Decimal amount = orderOpen.Amount; Decimal amountFilled = orderOpen.AmountFilled; Decimal averagePrice = orderOpen.AveragePrice; Boolean isBuy = orderOpen.IsBuy; DateTime orderDate = orderOpen.OrderDate; ExchangeAPIOrderResult result = orderOpen.Result; String symbol = orderOpen.Symbol; COrder order = null; if (server.dctIdToOrder.ContainsKey(orderID)) { order = server.dctIdToOrder[orderID]; } if (order != null) { order.OrderID = orderID; order.DealPrice = (Double)averagePrice; //order.Fee = fee; //order.FeeRate = feeRate; order.Size = (double)amount; order.Filled = (Double)amountFilled; switch (result) { case ExchangeAPIOrderResult.Canceled: order.Status = COrder.OrderState.Cancelled; break; case ExchangeAPIOrderResult.Error: order.Status = COrder.OrderState.Error; break; case ExchangeAPIOrderResult.Filled: order.Status = COrder.OrderState.Filled; break; case ExchangeAPIOrderResult.FilledPartially: order.Status = COrder.OrderState.Partial; break; case ExchangeAPIOrderResult.Pending: order.Status = COrder.OrderState.Queued; break; case ExchangeAPIOrderResult.Unknown: order.Status = COrder.OrderState.Unknown; break; } order.TimeStampFilled = orderDate; order.updateGUI(); } } } } catch (Exception ex) { server.AddLog(ex.Message); } pollingOrders = false; }