Example #1
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);
        }
Example #2
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);
        }
Example #3
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> 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("order_ids", Array.ConvertAll(order_ids, s => int.Parse(s)));

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _json_value = await tradeClient.CallApiPost1Async("/v1/order/cancel/multi", _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 <BCancelAllOrders>(_json_value.Content);
                    {
                        if (_json_data.result.IndexOf("Orders cancelled") < 0)
                        {
                            _result.SetFailure(_json_data.result);
                        }
                        else
                        {
                            _result.SetSuccess();
                        }
                    }

                    _json_result.SetResult(_result);
                }

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

            return(_result);
        }
Example #4
0
        /// <summary>
        /// Cancel all active orders at once.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async ValueTask <MyOrders> CancelAllOrders(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 = tradeClient.MergeParamsAndArgs(args);

                var _json_value = await tradeClient.CallApiPost1Async($"/v1/order/cancel/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 <BCancelAllOrders>(_json_value.Content);
                    {
                        if (_json_data.result.IndexOf("All orders cancelled") < 0)
                        {
                            _result.SetFailure(_json_data.result);
                        }
                        else
                        {
                            _result.SetSuccess();
                        }
                    }

                    _json_result.SetResult(_result);
                }

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

            return(_result);
        }
Example #5
0
        /// <summary>
        /// Cancel all active orders at once.
        /// </summary>
        /// <param name="args">Add additional attributes for each exchange</param>
        /// <returns></returns>
        public override async Task <MyOrders> CancelAllOrders(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 = tradeClient.MergeParamsAndArgs(args);

                var _json_value = await tradeClient.CallApiPost1Async($"/cancel_all_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 = _json_value.Content;
                    {
                        if (_json_data != "true")
                        {
                            _result.SetFailure();
                        }
                        else
                        {
                            _result.SetSuccess("success");
                        }
                    }

                    _json_result.SetResult(_result);
                }

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

            return(_result);
        }
Example #6
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>
        /// <returns></returns>
        public async ValueTask <MyOrders> GetOrders(string base_name, string quote_name)
        {
            var _result = new MyOrders();

            var _params = new Dictionary <string, object>();
            {
                _params.Add("market", $"{quote_name}-{base_name}");
                _params.Add("state", "wait");
                _params.Add("page", 1);
                _params.Add("order_by", "asc");
            }

            var _response = await privateClient.CallApiGet2Async("/orders", _params);

            if (_response != null)
            {
#if RAWJSON
                _result.rawJson = _response.Content;
#endif
                if (_response.IsSuccessful == true)
                {
                    var _orders = privateClient.DeserializeObject <List <UMyOrderItem> >(_response.Content);
                    {
                        foreach (var _o in _orders)
                        {
                            _o.amount = _o.price * _o.quantity;
                        }
                        _result.result = _orders.ToList <IMyOrderItem>();
                    }
                    _result.SetSuccess();
                }
                else
                {
                    var _message = privateClient.GetResponseMessage(_response);
                    _result.SetFailure(_message.message);
                }
            }

            return(_result);
        }
Example #7
0
        /// <summary>
        /// Create multiple new orders for the same symbol.
        /// </summary>
        /// <param name="orders"></param>
        /// <returns></returns>
        public async ValueTask <MyOrders> CreateBulkOrder(List <BBulkOrderItem> orders)
        {
            var _result = new MyOrders();

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

            var _response = await privateClient.CallApiPost2Async("/api/v1/order/bulk", _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)
                    {
                        _orders.ForEach(o => o.amount = o.quantity * o.price);

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

            return(_result);
        }
Example #8
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>();
                {
                    if (order_ids.Length > 0)
                    {
                        var _orderIds = "";
                        foreach (var order_id in order_ids)
                        {
                            if (_orderIds == "")
                            {
                                _orderIds = order_id;
                            }
                            else
                            {
                                _orderIds = _orderIds + "," + order_id;
                            }
                        }
                        _params.Add("orderIds", _orderIds);
                    }

                    _params.Add("symbol", _market.result.symbol);

                    tradeClient.MergeParamsAndArgs(_params, args);
                }

                var _url = "";
                if (order_ids.Length > 0)
                {
                    _url = "/api/v1/trade/cancelMultiOrder";
                }
                else
                {
                    _url = "/api/v1/trade/cancelAllOrder";
                }

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

#if DEBUG
                _result.rawJson = _json_value.Content;
#endif
                var _json_result = tradeClient.GetResponseMessage(_json_value.Response);
                if (_json_result.success == true)
                {
                    if (order_ids.Length > 0)
                    {
                        var _json_data = tradeClient.DeserializeObject <BCancelOrders>(_json_value.Content);
                        {
                            if (_json_data.success == true)
                            {
                                foreach (var _j in _json_data.result)
                                {
                                    _result.result.Add(_j);
                                }
                                _result.SetSuccess();
                            }
                            else
                            {
                                _result.SetFailure();
                            }
                        }
                    }
                    else
                    {
                        var _json_data = tradeClient.DeserializeObject <BCancelOrder>(_json_value.Content);
                        {
                            if (_json_data.success == true && _json_data.data == true)
                            {
                                _result.SetSuccess();
                            }
                            else
                            {
                                _result.SetFailure();
                            }
                        }
                    }

                    _json_result.SetResult(_result);
                }

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

            return(_result);
        }