Exemple #1
0
        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>());
        }
Exemple #2
0
        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;
        }