/// <summary> /// 주문 취소 접수: 주문 UUID를 통해 해당 주문에 대한 취소 접수를 한다. /// </summary> /// <param name="order_id">주문 UUID</param> /// <returns></returns> public async ValueTask <MyOrder> CancelOrder(string order_id) { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("uuid", order_id); } var _response = await privateClient.CallApiDelete2Async("/order", _params); if (_response != null) { #if RAWJSON _result.rawJson = _response.Content; #endif if (_response.IsSuccessful == true) { var _order = privateClient.DeserializeObject <UPlaceOrderItem>(_response.Content); { _order.amount = _order.price * _order.quantity; _result.result = _order; } _result.SetSuccess(); } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } return(_result); }
/// <summary> /// Cancel an order. /// </summary> /// <param name="order_id">Order number registered for sale or purchase</param> /// <returns></returns> public async ValueTask <MyOrder> CancelOrder(string order_id) { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("orderID", order_id); } 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 = _orders.FirstOrDefault(); _result.SetSuccess(); } } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } return(_result); }
/// <summary> /// Create a new limit order. /// </summary> /// <param name="symbol">Instrument symbol. e.g. 'XBTUSD'.</param> /// <param name="quantity">amount of coin</param> /// <param name="price">price of coin</param> /// <param name="sideType">type of buy(bid) or sell(ask)</param> /// <param name="execInst">Optional execution instructions.</param> /// <returns></returns> public async ValueTask <MyOrder> CreateLimitOrder(string symbol, decimal quantity, decimal price, SideType sideType, string execInst = "") { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("symbol", symbol); _params.Add("side", sideType == SideType.Bid ? "Buy" : "Sell"); _params.Add("ordType", "Limit"); _params.Add("orderQty", quantity); _params.Add("price", price); if (String.IsNullOrEmpty(execInst) == false) { _params.Add("execInst", execInst); } } var _response = await privateClient.CallApiPost2Async("/api/v1/order", _params); if (_response != null) { #if RAWJSON _result.rawJson = _response.Content; #endif if (_response.IsSuccessful == true) { var _order = privateClient.DeserializeObject <BPlaceOrderItem>(_response.Content); if (_order != null) { _order.orderType = OrderType.Limit; _order.remaining = Math.Max(_order.quantity - _order.filled, 0); _order.cost = _order.price * _order.filled; _result.result = _order; _result.SetSuccess(); } } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } 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> /// <param name="quantity">주문 수량</param> /// <param name="price">유닛당 주문 가격</param> /// <param name="sideType">주문 타입</param> /// <returns></returns> public async ValueTask <MyOrder> CreateLimitOrder(string base_name, string quote_name, decimal quantity, decimal price, SideType sideType) { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("market", $"{quote_name}-{base_name}"); _params.Add("side", sideType == SideType.Bid ? "bid" : "ask"); _params.Add("volume", quantity); _params.Add("price", price); _params.Add("ord_type", "limit"); } var _response = await privateClient.CallApiPost2Async("/orders", _params); if (_response != null) { #if RAWJSON _result.rawJson = _response.Content; #endif if (_response.IsSuccessful == true) { var _order = privateClient.DeserializeObject <UPlaceOrderItem>(_response.Content); { _order.orderType = OrderType.Limit; _order.amount = _order.quantity * _order.price; _result.result = _order; } _result.SetSuccess(); } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } return(_result); }
/// <summary> /// Amend the quantity or price of an open order. /// </summary> /// <param name="order_id">Order number registered for sale or purchase</param> /// <param name="quantity">amount of coin</param> /// <param name="price">price of coin</param> /// <param name="execInst">Optional execution instructions.</param> /// <returns></returns> public async ValueTask <MyOrder> UpdateOrder(string order_id, decimal quantity, decimal price, string execInst = "") { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("orderID", order_id); _params.Add("orderQty", quantity); _params.Add("price", price); if (String.IsNullOrEmpty(execInst) == false) { _params.Add("execInst", execInst); } } var _response = await privateClient.CallApiPut2Async("/api/v1/order", _params); if (_response != null) { #if RAWJSON _result.rawJson = _response.Content; #endif if (_response.IsSuccessful == true) { var _order = privateClient.DeserializeObject <BPlaceOrderItem>(_response.Content); if (_order != null) { _result.result = _order; _result.SetSuccess(); } } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } return(_result); }
/// <summary> /// Close a position /// </summary> /// <param name="symbol">Instrument symbol. e.g. 'XBTUSD'.</param> /// <param name="orderType">The type of order is limit, market or position</param> /// <param name="price">price of coin</param> /// <returns></returns> public async ValueTask <MyOrder> ClosePosition(string symbol, OrderType orderType, decimal price = 0.0m) { var _result = new MyOrder(); var _params = new Dictionary <string, object>(); { _params.Add("symbol", symbol); _params.Add("execInst", "Close"); if (orderType == OrderType.Limit) { _params.Add("price", price); } } var _response = await privateClient.CallApiPost2Async("/api/v1/order", _params); if (_response != null) { #if RAWJSON _result.rawJson = _response.Content; #endif if (_response.IsSuccessful == true) { var _order = privateClient.DeserializeObject <BMyOrderItem>(_response.Content); if (_order != null) { _result.result = _order; _result.SetSuccess(); } } else { var _message = privateClient.GetResponseMessage(_response); _result.SetFailure(_message.message); } } return(_result); }