/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }