public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var api = ApiProviderPrivate.GetApi(context);

            var body = CreatePostBody();

            body.Add("method", ApiMethodsConfig[ApiMethodNamesTiLiWe.ActiveOrders]);
            if (context.HasMarket)
            {
                body.Add("pair", context.Market.ToTicker(this).ToLower());
            }

            var r = await api.GetActiveOrders(body).ConfigureAwait(false);

            CheckResponse(r);

            var orders = new List <TradeOrderStatus>();

            if (r.return_ != null)
            {
                foreach (var order in r.return_)
                {
                    orders.Add(ParseTradeOrderStatus(order.Key, order.Value));
                }
            }

            return(new OpenOrdersResponse(orders));
        }
예제 #2
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = context.HasMarket
                ? await api.GetOpenOrdersAsync(context.Market.ToTicker(this)).ConfigureAwait(false)
                : await api.GetOpenOrdersAsync().ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var rOrders = rRaw.GetContent();

            var orders = new List <TradeOrderStatus>();

            foreach (var rOrder in rOrders)
            {
                var isBuy             = rOrder.side.Equals("BUY", StringComparison.OrdinalIgnoreCase);
                var isOpen            = rOrder.status.Equals("NEW", StringComparison.OrdinalIgnoreCase) || rOrder.status.Equals("PARTIALLY_FILLED", StringComparison.OrdinalIgnoreCase);
                var isCancelRequested = rOrder.status.Equals("PENDING_CANCEL", StringComparison.OrdinalIgnoreCase);
                orders.Add(new TradeOrderStatus(Network, rOrder.orderId.ToString(), isBuy, isOpen, isCancelRequested)
                {
                    AmountInitial   = rOrder.origQty,
                    Rate            = rOrder.price,
                    AmountRemaining = rOrder.origQty - rOrder.executedQty
                });
            }

            return(new OpenOrdersResponse(orders)
            {
                ApiHitsCount = 1
            });
        }
예제 #3
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var body = new BitfinexSchema.OpenOrdersRequest.Descriptor();

            var rRaw = await api.GetActiveOrdersAsync(body).ConfigureAwait(false);

            CheckBitfinexResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var orders = new List <TradeOrderStatus>();

            foreach (var rOrder in r)
            {
                var isBuy = rOrder.side.Equals("buy", StringComparison.OrdinalIgnoreCase);
                orders.Add(new TradeOrderStatus(Network, rOrder.id.ToString(), isBuy, rOrder.is_live, rOrder.is_cancelled)
                {
                    Rate            = rOrder.type.Equals("exchange limit", StringComparison.OrdinalIgnoreCase) ? rOrder.price : rOrder.avg_execution_price,
                    Market          = rOrder.symbol.ToAssetPair(this, 3),
                    AmountInitial   = rOrder.original_amount,
                    AmountRemaining = rOrder.remaining_amount
                });
            }

            return(new OpenOrdersResponse(orders));
        }
예제 #4
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var rAllOrders = await GetBuysAndSellsAsync(context).ConfigureAwait(false);

            var allOrders = rAllOrders.Result;

            var orders = new List <TradeOrderStatus>();

            foreach (var rOpenOrder in allOrders.Where(x => x.status.Equals("created", StringComparison.OrdinalIgnoreCase)))
            {
                var isBuy = rOpenOrder.resource.Equals("buy", StringComparison.OrdinalIgnoreCase);

                orders.Add(new TradeOrderStatus(Network, rOpenOrder.id, isBuy, true, false)
                {
                    AmountInitial = rOpenOrder.amount.amount,
                    Market        = new AssetPair(rOpenOrder.amount.currency, rOpenOrder.total.currency, this),
                    Rate          = rOpenOrder.subtotal.amount / rOpenOrder.amount.amount
                });
            }

            return(new OpenOrdersResponse(orders)
            {
                ApiHitsCount = rAllOrders.ApiHitsCount
            });
        }
예제 #5
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = context.HasMarket
                ? await api.GetOpenOrdersAsync(context.Market.ToTicker(this).ToUpper()).ConfigureAwait(false)
                : await api.GetOpenOrdersAsync().ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var orders = new List <TradeOrderStatus>();

            foreach (var rOrder in r)
            {
                var order = ParseOrderResponse(rOrder);

                if (context.HasMarket)
                {
                    order.Market = context.Market;
                }

                orders.Add(order);
            }

            return(new OpenOrdersResponse(orders));
        }
예제 #6
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rOpenOrdersRaw = await api.GetMarketOpenOrders().ConfigureAwait(false);

            CheckResponseErrors(rOpenOrdersRaw);

            var rOpenOrders = rOpenOrdersRaw.GetContent();

            var orders = new List <TradeOrderStatus>();

            orders.AddRange(GetTradeOrderStatusFromResponse(rOpenOrders.result.Select(x => x as BittrexSchema.OrderCommonBase).ToList(), true, order => ((BittrexSchema.OpenOrderEntry)order).CancelInitiated));

            return(new OpenOrdersResponse(orders));
        }
예제 #7
0
        private void GetOpenOrdersTest(IOrderLimitProvider provider, AssetPair market = null)
        {
            var context = new OpenOrdersContext(UserContext.Testing)
            {
                Market = market
            };

            OutputWriter.WriteLine("Open orders:\n");

            var orders = AsyncContext.Run(() => provider.GetOpenOrdersAsync(context)).Orders.ToArray();

            if (orders.Length == 0)
            {
                OutputWriter.WriteLine("No open orders returned");
            }
            else
            {
                orders.ForEach(DisplayOrderStatusInfo);
            }
        }
예제 #8
0
 public Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
 {
     throw new NotImplementedException();
 }
예제 #9
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var orders = await GetOrdersAsync(context, true).ConfigureAwait(false);

            return(new OpenOrdersResponse(orders));
        }
예제 #10
0
        public async Task <OpenOrdersResponse> GetOpenOrdersAsync(OpenOrdersContext context)
        {
            var openOrders = await GetOpenOrders(context, context.Market).ConfigureAwait(false);

            return(new OpenOrdersResponse(openOrders));
        }