Esempio n. 1
0
        public async Task <IActionResult> PutMyOrders([FromRoute] int id, [FromBody] MyOrders myOrders)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != myOrders.MyOrderId)
            {
                return(BadRequest());
            }

            _context.Entry(myOrders).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MyOrdersExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 2
0
        /// <summary>
        /// Cancel orders. Send multiple order IDs to cancel in bulk.
        /// </summary>
        /// <param name="order_ids"></param>
        /// <returns></returns>
        public async ValueTask <MyOrders> CancelOrders(string[] order_ids)
        {
            var _result = new MyOrders();

            var _params = new Dictionary <string, object>();
            {
                _params.Add("orderID", order_ids);
            }

            var _response = await privateClient.CallApiDelete2Async("/api/v1/order", _params);

            if (_response != null)
            {
#if RAWJSON
                _result.rawJson = _response.Content;
#endif
                if (_response.IsSuccessful == true)
                {
                    var _orders = privateClient.DeserializeObject <List <BPlaceOrderItem> >(_response.Content);
                    if (_orders != null)
                    {
                        _result.result.AddRange(_orders);
                        _result.SetSuccess();
                    }
                }
                else
                {
                    var _message = privateClient.GetResponseMessage(_response);
                    _result.SetFailure(_message.message);
                }
            }

            return(_result);
        }
        private async Task LoadMoreOrders()
        {
            if (HasMoreOrders)
            {
                await Task.Delay(200);

                PageIndex += 1;
                var orderHistoryRequest = new OrderHistoryRequest
                {
                    CustomerId = GlobalSettings.User.Id,
                    Page       = PageIndex,
                    PageSize   = GlobalSettings.AppConst.PageSize
                };

                await WebRequestExecuter.Execute(async() => await _wooCommerceService.GetOrders(orderHistoryRequest), myOrders =>
                {
                    if (myOrders != null && myOrders.Any())
                    {
                        foreach (var order in myOrders)
                        {
                            MyOrders.Add(order);
                        }

                        HasMoreOrders = myOrders.Count >= orderHistoryRequest.PageSize ? true : false;
                    }
                    else
                    {
                        PageIndex    -= 1;
                        HasMoreOrders = false;
                    }
                    return(Task.CompletedTask);
                });
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Create a new limit bulk order.
        /// </summary>
        /// <param name="orders"></param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public async Task <MyOrders> CreateBulkOrder(List <BBulkOrderItem> orders, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders();

            tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);
            {
                var _params = tradeClient.MergeParamsAndArgs(
                    new Dictionary <string, object>
                {
                    { "orders", orders }
                },
                    args
                    );

                var _json_value = await tradeClient.CallApiPost1Async("/api/v1/order/bulk", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _orders = tradeClient.DeserializeObject <List <BMyOrderItem> >(_json_value.Content);
                    {
                        _result.result = _orders.ToList <IMyOrderItem>();
                    }
                }

                _result.SetResult(_json_result);
            }

            return(_result);
        }
Esempio n. 5
0
        /// <summary>
        /// Cancels all of your orders.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> CancelAllOrdersAsync(Dictionary <string, object> args = null)
        {
            var _result = new MyOrders();

            var _markets = await publicApi.LoadMarketsAsync();

            if (_markets.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = tradeClient.MergeParamsAndArgs(args);

                var _json_value = await tradeClient.CallApiDelete1Async("/api/v1/order/all", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <List <BPlaceOrderItem> >(_json_value.Content);
                    {
                        _result.result.AddRange(_json_data);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 6
0
        /// <summary>
        /// View Exchange Orders
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limit">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> FetchMyOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limit = 20, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _timeframe = tradeClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = tradeClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency_pair", _market.result.symbol);
                    _params.Add("offset", 0);
                    _params.Add("limit", limit);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiGet1Async("/user/orders", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <List <KMyOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(o => o.symbol == _market.result.symbol && o.timestamp >= since)
                                      .OrderByDescending(o => o.timestamp)
                                      .Take(limit);

                        foreach (var _o in _orders)
                        {
                            if (_o.price == 0)
                            {
                                _o.price = _o.avg_price;
                            }

                            _o.amount = _o.price * _o.quantity;
                            _result.result.Add(_o);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 7
0
        /// <summary>
        /// Returns your open orders for a given market.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> FetchOpenOrders(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("command", "returnOpenOrders");
                    _params.Add("currencyPair", _market.result.symbol);

                    if (args != null)
                    {
                        foreach (var _a in args)
                        {
                            if (_params.ContainsKey(_a.Key) == true)
                            {
                                _params.Remove(_a.Key);
                            }

                            _params.Add(_a.Key, _a.Value);
                        }
                    }
                }

                var _json_value = await tradeClient.CallApiPost1Async("", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _orders = tradeClient.DeserializeObject <List <PMyOrderItem> >(_json_value.Content);
                    {
                        foreach (var _o in _orders)
                        {
                            _o.orderStatus = OrderStatus.Open;
                            _o.orderType   = OrderType.Limit;
                            _o.symbol      = _market.result.symbol;

                            _result.result.Add(_o);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 8
0
        /// <summary>
        /// To get open orders on a symbol.
        /// </summary>
        /// <param name="symbol">Instrument symbol. Send a bare series (e.g. XBT) to get data for the nearest expiring contract in that series.</param>
        /// <param name="count">Number of results to fetch.</param>
        /// <param name="start">Starting point for results.</param>
        /// <returns></returns>
        public async ValueTask <MyOrders> GetOrders(string symbol, long count = 0, long start = 0)
        {
            var _result = new MyOrders();

            await Task.Delay(0);

            return(_result);
        }
Esempio n. 9
0
        /// <summary>
        /// Returns your open orders for all markets.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchAllOpenOrders(Dictionary <string, object> args = null)
        {
            var _result = new MyOrders();

            var _markets = await publicApi.LoadMarkets();

            if (_markets.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("command", "returnOpenOrders");
                    _params.Add("currencyPair", "all");

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _orders = tradeClient.DeserializeObject <Dictionary <string, List <PMyOrderItem> > >(_json_value.Content);
                    {
                        foreach (var _o in _orders)
                        {
                            var _market = _markets.GetMarketBySymbol(_o.Key);
                            if (_market == null)
                            {
                                continue;
                            }

                            foreach (var _order in _o.Value)
                            {
                                _order.symbol = _market.symbol;

                                _order.orderStatus = OrderStatus.Open;
                                _order.orderType   = OrderType.Limit;

                                _result.result.Add(_order);
                            }
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 10
0
        /// <summary>
        /// To get open orders on a symbol.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchOpenOrdersAsync(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("reverse", true);
                    _params.Add("filter", new CArgument
                    {
                        isJson = true,
                        value  = new Dictionary <string, object>
                        {
                            { "open", true }
                        }
                    });

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiGet1Async("/api/v1/order", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    //var _multiplier = publicApi.publicClient.ExchangeInfo.GetAmountMultiplier(_market.result.symbol, 1.0m);

                    var _orders = tradeClient.DeserializeObject <List <BMyOrderItem> >(_json_value.Content);
                    foreach (var _o in _orders)
                    {
                        _o.makerType = MakerType.Maker;

                        _o.amount = _o.price * _o.quantity;
                        _o.filled = Math.Max(_o.quantity - _o.remaining, 0);
                        _o.cost   = _o.price * _o.filled;

                        _result.result.Add(_o);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 11
0
        /// <summary>
        /// Get your orders.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchMyOrdersAsync(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _timeframe = tradeClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = tradeClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("count", limits);
                    if (since > 0)
                    {
                        _params.Add("startTime", CUnixTime.ConvertToUtcTimeMilli(since).ToString("yyyy-MM-dd HH:mm"));
                    }
                    _params.Add("reverse", true);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiGet1Async("/api/v1/order", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <List <BMyOrderItem> >(_json_value.Content);
                    {
                        var _orders = _json_data
                                      .Where(o => o.symbol == _market.result.symbol && o.timestamp >= since)
                                      .OrderByDescending(o => o.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.amount = _o.price * _o.quantity;
                            _result.result.Add(_o);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 12
0
        /// <summary>
        /// To get open orders on a symbol.
        /// </summary>
        /// <param name="symbol">Instrument symbol. Send a bare series (e.g. XBT) to get data for the nearest expiring contract in that series.</param>
        /// <param name="count">Number of results to fetch.</param>
        /// <param name="start">Starting point for results.</param>
        /// <returns></returns>
        public async ValueTask <MyOrders> GetOrders(string symbol, long count = 0, long start = 0)
        {
            var _result = new MyOrders();

            var _params = new Dictionary <string, object>();
            {
                _params.Add("symbol", symbol);
                if (count > 0)
                {
                    _params.Add("count", count);
                }
                _params.Add("start", start);
                _params.Add("reverse", true);
                _params.Add("filter", new CArgument
                {
                    isJson = true,
                    value  = new Dictionary <string, object>
                    {
                        { "open", true }
                    }
                });
            }

            var _response = await privateClient.CallApiGet2Async("/api/v1/order", _params);

            if (_response != null)
            {
#if RAWJSON
                _result.rawJson = _response.Content;
#endif
                if (_response.IsSuccessful == true)
                {
                    var _orders = privateClient.DeserializeObject <List <BMyOrderItem> >(_response.Content);
                    if (_orders != null)
                    {
                        foreach (var _o in _orders)
                        {
                            _o.makerType = MakerType.Maker;

                            _o.amount = _o.price * _o.quantity;
                            _o.filled = Math.Max(_o.quantity - _o.remaining, 0);
                            _o.cost   = _o.price * _o.filled;
                        }

                        _result.result = _orders.ToList <IMyOrderItem>();
                        _result.SetSuccess();
                    }
                }
                else
                {
                    var _message = privateClient.GetResponseMessage(_response);
                    _result.SetFailure(_message.message);
                }
            }

            return(_result);
        }
Esempio n. 13
0
        /// <summary>
        /// Cancel Open Orders
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="order_ids"></param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> CancelOrdersAsync(string base_name, string quote_name, string[] order_ids, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("order_id", String.Join(",", order_ids));

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/v1/cancel_order.do", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <OCancelOrders>(_json_value.Content);
                    foreach (var _o in _json_data.result)
                    {
                        var _order = new OPlaceOrderItem
                        {
                            symbol      = _market.result.symbol,
                            orderId     = _o.orderId,
                            orderType   = OrderType.Limit,
                            orderStatus = OrderStatus.Canceled,
                            //sideType = sideType,
                            //quantity = quantity,
                            //price = price,
                            //amount = quantity * price,
                            //fee = quantity * price * publicApi.ExchangeInfo.Fees.trading.maker,
                            timestamp = CUnixTime.NowMilli,
                            success   = _o.success
                        };

                        _result.result.Add(_order);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 14
0
 private void UIDeliveryInfoSetup(MyOrders o)
 {
     RP_straat.Text    = o._straatnaam;
     RP_postcode.Text  = o._postcode;
     RP_plaats.Text    = o._plaats;
     RP_ontvanger.Text = o._ontvanger;
     RP_land.Text      = o._land;
     RP_huisnr.Text    = o._huisnr;
 }
Esempio n. 15
0
 private void RefreshOrders()
 {
     if (_omniEve != null)
     {
         MyOrders myOrders = new MyOrders();
         myOrders.OnMyOrdersFinished += OnMyOrdersFinished;
         _omniEve.AddAction(myOrders);
     }
 }
Esempio n. 16
0
        /// <summary>
        /// Get all open orders on a symbol. Careful when accessing this with no symbol.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchOpenOrdersAsync(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                okexClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("order_id", -1); // if order_id is -1, then return all unfilled orders, otherwise return the order specified

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _end_point = okexClient.CheckFuturesUrl(_market.result, "/order_info.do", "/future_order_info.do", _params);

                var _json_value = await okexClient.CallApiPost1Async(_end_point.endPoint, _end_point.args);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = okexClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = okexClient.DeserializeObject <OMyOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        var _orders = _json_data.result
                                      .Where(o => o.symbol == _market.result.symbol)
                                      .OrderByDescending(o => o.timestamp);

                        foreach (var _o in _orders)
                        {
                            _o.amount = _o.price * _o.quantity;
                            _result.result.Add(_o);
                        }
                    }
                    else
                    {
                        _json_result.SetResult(_json_data);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 17
0
        /// <summary>
        /// Cancel Open Orders
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="order_ids"></param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> CancelOrders(string base_name, string quote_name, string[] order_ids, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency_pair", _market.result.symbol);
                    _params.Add("id", new CArgument {
                        isArray = true, value = order_ids
                    });

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/user/orders/cancel", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <List <KCancelOrderItem> >(_json_value.Content);
                    {
                        foreach (var _o in _json_data)
                        {
                            var _order = new KMyOrderItem
                            {
                                orderId   = _o.orderId,
                                symbol    = _market.result.symbol,
                                timestamp = CUnixTime.NowMilli,

                                orderStatus = _o.status == "success" ? OrderStatus.Canceled : OrderStatus.Unknown,
                                orderType   = OrderType.Limit
                            };

                            _result.result.Add(_order);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 18
0
        /// <summary>
        /// List Open Orders
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> FetchOpenOrders(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency_pair", _market.result.symbol);
                    _params.Add("offset", 0);
                    _params.Add("limit", 50);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiGet1Async("/user/orders/open", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _orders = tradeClient.DeserializeObject <List <KMyOpenOrderItem> >(_json_value.Content);
                    {
                        foreach (var _o in _orders)
                        {
                            _o.symbol   = _market.result.symbol;
                            _o.quantity = _o.totalValue.value;
                            _o.price    = _o.priceValue.value;
                            _o.amount   = _o.quantity * _o.price;

                            _o.filled = _o.quantity - _o.openValue.value;
                            _o.cost   = _o.filled * _o.price;

                            _o.orderStatus = OrderStatus.Open;

                            _result.result.Add(_o);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 19
0
        /// <summary>
        /// Get all orders that you currently have opened. A specific market can be requested.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> FetchOpenOrders(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                if (args.ContainsKey("account-id") && args["account-id"].ToString() != "")
                {
                    tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                    var _params = new Dictionary <string, object>();
                    {
                        _params.Add("account-id", args["account-id"].ToString());
                        _params.Add("symbol", _market.result.symbol);

                        tradeClient.MergeParamsAndArgs(_params, args);
                    }

                    var _json_value = await tradeClient.CallApiGet1Async("/v1/order/openOrders", _params);

#if DEBUG
                    _result.rawJson = _json_value.Content;
#endif
                    var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                    if (_json_result.success == true)
                    {
                        var _orders = tradeClient.DeserializeObject <HMyOrders>(_json_value.Content);
                        {
                            foreach (var _order in _orders.result)
                            {
                                _order.orderStatus = OrderStatus.Open;
                                //_order.filled = _order.quantity - _order.remaining;
                                _order.amount = _order.price * _order.quantity;

                                _result.result.Add(_order);
                            }
                        }
                    }

                    _result.SetResult(_json_result);
                }
                else
                {
                    _result.SetFailure("required args[account-id]");
                }
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 20
0
        private void RunMyOrders()
        {
            Logging.Log("Automation:RunMyOrders", "MyOrders State - Begin", Logging.Debug);

            MyOrders myOrders = new MyOrders();

            myOrders.OnMyOrdersFinished += MyOrdersFinished;
            myOrders.OnMyOrdersFinished += OnMyOrdersFinished;
            RunAction(myOrders);
            ChangeState(State.Processing);
        }
Esempio n. 21
0
 public HttpResponseMessage postall(MyOrders objMyOrders)
 {
     try
     {
         DataTable dt = objMyOrdersBL.postAllData(objMyOrders);
         return(Request.CreateResponse(HttpStatusCode.OK, dt));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
     }
 }
Esempio n. 22
0
        /// <summary>
        /// View your latest inactive orders.
        /// Limited to last 3 days and 1 request per minute.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="timeframe">time frame interval (optional): default "1d"</param>
        /// <param name="since">return committed data since given time (milli-seconds) (optional): default 0</param>
        /// <param name="limits">maximum number of items (optional): default 20</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchMyOrders(string base_name, string quote_name, string timeframe = "1d", long since = 0, int limits = 20, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _timeframe = tradeClient.ExchangeInfo.GetTimeframe(timeframe);
                var _timestamp = tradeClient.ExchangeInfo.GetTimestamp(timeframe);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("states", "pre-submitted,submitted,partial-filled,partial-canceled,filled,canceled");

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiGet1Async("/v1/order/orders", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <HMyOrders>(_json_value.Content);
                    {
                        var _orders = _json_data.result
                                      .Where(o => o.symbol == _market.result.symbol && o.timestamp >= since)
                                      .OrderByDescending(o => o.timestamp)
                                      .Take(limits);

                        foreach (var _o in _orders)
                        {
                            _o.amount = _o.price * _o.quantity;
                            _result.result.Add(_o);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 23
0
        public async Task <IActionResult> PostMyOrders([FromBody] MyOrders myOrders)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.MyOrders.Add(myOrders);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetMyOrders", new { id = myOrders.MyOrderId }, myOrders));
        }
Esempio n. 24
0
        /// <summary>
        /// With best effort, cancel open orders. The response is a list of ids of the canceled orders.
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="order_ids"></param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> CancelOrders(string base_name, string quote_name, string[] order_ids, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("product_id", _market.result.symbol);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiDelete1Async($"/orders", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <JArray>(_json_value.Content);
                    {
                        foreach (var _o in _json_data)
                        {
                            var _order = new GMyOrderItem
                            {
                                orderId   = _o.Value <string>(),
                                symbol    = _market.result.symbol,
                                timestamp = CUnixTime.NowMilli,

                                orderStatus = OrderStatus.Canceled,
                                orderType   = OrderType.Limit
                            };

                            _result.result.Add(_order);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 25
0
        /// <summary>
        /// 주문 리스트 조회
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchOpenOrdersAsync(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarketAsync(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("symbol", _market.result.symbol);
                    _params.Add("status", 0);
                    _params.Add("current_page", 1);
                    _params.Add("page_length", 100);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/v1/order_history.do", _params);

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <OMyOrders>(_json_value.Content);
                    if (_json_data.success == true)
                    {
                        foreach (var _o in _json_data.result)
                        {
                            _o.amount = _o.price * _o.quantity;
                            _result.result.Add(_o);
                        }
                    }
                    else
                    {
                        _json_result.SetFailure(_json_data.message);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }
Esempio n. 26
0
        /// <summary>
        /// Get all open orders
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchAllOpenOrdersAsync(Dictionary <string, object> args = null)
        {
            var _result = new MyOrders();

            var _markets = await publicApi.LoadMarketsAsync();

            if (_markets.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = tradeClient.MergeParamsAndArgs(args);

                var _json_value = await tradeClient.CallApiPost1Async("/0/private/OpenOrders", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _json_data = tradeClient.DeserializeObject <KResponse <KMyOpenOrders> >(_json_value.Content);
                    {
                        var _orders = _json_data.result.open
                                      .OrderByDescending(o => o.Value.timestamp);

                        foreach (var _o in _orders)
                        {
                            _o.Value.orderId = _o.Key;

                            var _market = _markets.result.Values.Where(m => (m as KMarketItem).altname == _o.Value.symbol).SingleOrDefault();
                            if (_market != null)
                            {
                                _o.Value.symbol = _market.symbol;
                            }

                            _o.Value.price  = _o.Value.descr.price != 0.0m ? _o.Value.descr.price : _o.Value.price;
                            _o.Value.amount = _o.Value.price * _o.Value.quantity;

                            _result.result.Add(_o.Value);
                        }
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_markets);
            }

            return(_result);
        }
Esempio n. 27
0
        private void GetMyOrders()
        {
            // получаем все отзывы
            var reviews = _unitOfWork.ClientReviews.GetAll().ToList();

            // получаем заказы. далее для отображения ищем заказы определенного пользователя
            var orders = _unitOfWork.Orders.GetAll().ToList().Where(o => o.UserId == ClientReview.UserId)
                         //такие, на которые еще нет отзывов
                         .Where(o => !reviews.Exists(r => r.OrderId == o.Id));

            MyOrders.Clear();
            MyOrders.AddItems(orders);
        }
Esempio n. 28
0
        public UserIndex Update(IUserOrder newUserOrder)
        {
            var index = MyOrders.IndexOf(newUserOrder);

            if (index >= 0)
            {
                throw new InvalidOperationException(string.Format("MyOrders already contains user order {0}.", newUserOrder));
            }

            var newMyOrder = MyOrders.Add(newUserOrder);

            return(new UserIndex(User, newUserOrder.Transaction, newMyOrder, AssigningOrders));
        }
Esempio n. 29
0
        public UserIndex Update(IAssignedUserOrder assignedUserOrder)
        {
            var index = MyOrders.IndexOf(assignedUserOrder);

            if (index < 0)
            {
                throw new InvalidOperationException(string.Format("MyOrders does not contains user order {0}.", assignedUserOrder));
            }

            var newMyOrders = MyOrders.SetItem(index, assignedUserOrder);

            return(new UserIndex(User, LastTransaction, newMyOrders, AssigningOrders));
        }
Esempio n. 30
0
        /// <summary>
        /// Order_V2 - My Limit Orders
        /// </summary>
        /// <param name="base_name">The type of trading base-currency of which information you want to query for.</param>
        /// <param name="quote_name">The type of trading quote-currency of which information you want to query for.</param>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> FetchOpenOrders(string base_name, string quote_name, Dictionary <string, object> args = null)
        {
            var _result = new MyOrders(base_name, quote_name);

            var _market = await publicApi.LoadMarket(_result.marketId);

            if (_market.success == true)
            {
                tradeClient.ExchangeInfo.ApiCallWait(TradeType.Trade);

                var _params = new Dictionary <string, object>();
                {
                    _params.Add("currency", _market.result.symbol);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/v2/order/limit_orders", _params);

#if RAWJSON
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    var _orders = tradeClient.DeserializeObject <CMyOpenOrders>(_json_value.Content);
                    if (_orders.success == true)
                    {
                        foreach (var _order in _orders.limitOrders)
                        {
                            _order.symbol = _market.result.symbol;
                            _order.amount = _order.quantity * _order.price;

                            _result.result.Add(_order);
                        }
                    }
                    else
                    {
                        _json_result.SetResult(_orders);
                    }
                }

                _result.SetResult(_json_result);
            }
            else
            {
                _result.SetResult(_market);
            }

            return(_result);
        }