public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var api = ApiProviderPrivate.GetApi(context);

            var body = CreatePostBody();

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

            var r = await api.GetOrderHistoryAsync(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 TradeOrdersResponse(orders));
        }
Exemplo n.º 2
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            if (!context.HasMarket)
            {
                throw new MarketNotSpecifiedException(this);
            }

            var ticker = context.Market.ToTicker(this);
            var api    = ApiProvider.GetApi(context);

            var rRaw = await api.GetAllOrdersAsync(ticker).ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var rOrders = rRaw.GetContent();

            var orders = new List <TradeOrderStatus>();

            foreach (var rOrder in rOrders.Where(x => !x.status.Equals("NEW") && !x.status.Equals("PARTIALLY_FILLED")))
            {
                var isBuy = rOrder.side.Equals("BUY", StringComparison.OrdinalIgnoreCase);
                orders.Add(new TradeOrderStatus(Network, rOrder.orderId.ToString(), isBuy, false, false)
                {
                    AmountInitial   = rOrder.origQty,
                    Rate            = rOrder.price,
                    AmountRemaining = rOrder.origQty - rOrder.executedQty,
                    Market          = context.Market
                });
            }

            return(new TradeOrdersResponse(orders)
            {
                ApiHitsCount = 5 // From API docs: Weight = 5.
            });
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the history of trade orders.
        /// Limited to last 3 days and 1 request per minute. Affects rate limiter only for this endpoint.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

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

            var rRaw = await api.GetOrdersHistoryAsync(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, false, 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 TradeOrdersResponse(orders));
        }
Exemplo n.º 4
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = context.HasMarket
                ? await api.GetOrdersHistoryAsync(context.Market.ToTicker(this).ToUpper()).ConfigureAwait(false)
                : await api.GetOrdersHistoryAsync().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 TradeOrdersResponse(orders));
        }
Exemplo n.º 5
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var historyOrders = (await GetOrdersHistory((NetworkProviderPrivateContext)context).ConfigureAwait(false)).ToList();
            var openOrders    = (await GetOpenOrders(context).ConfigureAwait(false)).ToList();

            return(new TradeOrdersResponse(historyOrders.Concat(openOrders))
            {
                ApiHitsCount = 2
            });
        }
Exemplo n.º 6
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var api = ApiProvider.GetApi(context);

            var rRaw = await api.GetOrderHistory().ConfigureAwait(false);

            CheckResponseErrors(rRaw);

            var r = rRaw.GetContent();

            var orders =
                GetTradeOrderStatusFromResponse(r.result.Select(x => x as BittrexSchema.OrderCommonBase)
                                                .ToList());

            return(new TradeOrdersResponse(orders));
        }
Exemplo n.º 7
0
        private void GetOrdersHistoryTest(IOrderLimitProvider provider, AssetPair market = null)
        {
            var context = new TradeOrdersContext(UserContext.Testing)
            {
                Market = market
            };

            OutputWriter.WriteLine("Orders history: \n");

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

            if (orders.Length == 0)
            {
                OutputWriter.WriteLine("No trade orders returned");
            }
            else
            {
                orders.ForEach(DisplayOrderStatusInfo);
            }
        }
Exemplo n.º 8
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var rAllOrders = await GetBuysAndSellsAsync(context).ConfigureAwait(false);

            var orders = rAllOrders.Result.Where(x => !x.status.Equals("created", StringComparison.OrdinalIgnoreCase)).Select(x =>
            {
                var isBuy      = x.resource.Equals("buy", StringComparison.OrdinalIgnoreCase);
                var isCanceled = x.status.Equals("canceled", StringComparison.OrdinalIgnoreCase);
                return(new TradeOrderStatus(Network, x.id, isBuy, false, isCanceled)
                {
                    AmountInitial = x.amount.amount,
                    Market = new AssetPair(x.amount.currency, x.total.currency, this),
                    Rate = x.subtotal.amount / x.amount.amount
                });
            });

            return(new TradeOrdersResponse(orders)
            {
                ApiHitsCount = rAllOrders.ApiHitsCount
            });
        }
Exemplo n.º 9
0
 public Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 10
0
        public async Task <TradeOrdersResponse> GetOrdersHistory(TradeOrdersContext context)
        {
            var orders = await GetOrdersAsync(context, false).ConfigureAwait(false);

            return(new TradeOrdersResponse(orders));
        }