public static OrderResult ToOrderResult(this ExchangeAPIOrderResult result) { switch (result) { case ExchangeAPIOrderResult.Canceled: return(OrderResult.Canceled); case ExchangeAPIOrderResult.Error: return(OrderResult.Error); case ExchangeAPIOrderResult.Filled: return(OrderResult.Filled); case ExchangeAPIOrderResult.FilledPartially: return(OrderResult.FilledPartially); case ExchangeAPIOrderResult.Pending: return(OrderResult.Pending); case ExchangeAPIOrderResult.PendingCancel: return(OrderResult.PendingCancel); default: return(OrderResult.Unknown); } }
private List <ExchangeOrderResult> ParseOrderList(JToken orderList, ExchangeAPIOrderResult status) { JToken orders = orderList["orders"]; List <ExchangeOrderResult> orderResultList = new List <ExchangeOrderResult>(); foreach (JToken order in orders) { ExchangeOrderResult orderResult = ParseOrder(order); if (orderResult.Result == status || status == ExchangeAPIOrderResult.Unknown) //ApiOrderResult.Unknown - any states { orderResultList.Add(orderResult); } } return(orderResultList); }
private ExchangeOrderResult SimulateOrderResult(Coin baseCoin, Coin coin, decimal amount, ExchangeAPIOrderResult result) { return(new ExchangeOrderResult { Amount = amount, AmountFilled = amount, AveragePrice = 9.99M, IsBuy = true, Message = "Simulated order", OrderDate = DateTime.UtcNow, Symbol = $"{baseCoin.Code}-{coin.Code}", OrderId = Guid.NewGuid().ToString(), Result = result, }); }
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; }
public static bool IsCompleted(this ExchangeAPIOrderResult eaor) => Completed.Contains(eaor);
/// <summary> /// Simulate a result from an exchange /// </summary> /// <param name="symbol"></param> /// <param name="quantity"></param> /// <param name="price"></param> /// <param name="IsBuy"></param> /// <param name="simulatedResult">GDAX will send back a pending result on a new order </param> /// <returns></returns> private ExchangeOrderResult SimulateOrderResult(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool IsBuy, ExchangeAPIOrderResult simulatedResult) { Log($"Using simulated exchange {_exchangeApi.Name }"); _simulatedOrderResult = new ExchangeOrderResult { Amount = quantity, AmountFilled = quantity, AveragePrice = price.GetValueOrDefault(0), IsBuy = IsBuy, Message = "Simulated order", OrderDate = DateTime.UtcNow, Symbol = $"{baseCoin.Code}-{coin.Code}", OrderId = Guid.NewGuid().ToString(), Result = simulatedResult }; return(_simulatedOrderResult); }