/// <summary> /// Cancel trade /// </summary> /// <param name="orderId">OrderId to cancel</param> /// <param name="origClientOrderId">ClientOrderId to cancel</param> private void CancelTrade(long orderId, string origClientOrderId) { var tradeParams = new CancelTradeParams { symbol = _symbol, orderId = orderId, origClientOrderId = origClientOrderId }; var response = CancelTrade(tradeParams); }
/// <summary> /// Cancel a paper trade for testing purposes /// </summary> /// <param name="tradeParams">Trade parameters</param> /// <returns>TradeResponse object</returns> private TradeResponse CancelPaperTrade(CancelTradeParams tradeParams) { var response = new TradeResponse { clientOrderId = $"PaperTrade_{tradeNumber}", orderId = tradeNumber, status = OrderStatus.FILLED, symbol = tradeParams.symbol, transactTime = _dtHelper.UTCtoUnixTime() }; return(response); }
/// <summary> /// Cancel a trade /// </summary> /// <param name="tradeParams">CancelTrade parameters</param> /// <returns>TradeResponse object</returns> private TradeResponse CancelTrade(CancelTradeParams tradeParams) { if (botSettings.tradingStatus == TradeStatus.LiveTrading) { return(_repo.DeleteTrade(tradeParams).Result); } else if (botSettings.tradingStatus == TradeStatus.PaperTrading) { return(CancelPaperTrade(tradeParams)); } else { return(null); } }
/// <summary> /// Delete/Cancel a trade /// </summary> /// <param name="tradeParams">Trade to delete</param> /// <returns>TradeResponse object</returns> public async Task <TradeResponse> DeleteTrade(CancelTradeParams tradeParams) { string url = CreateUrl("/api/v3/order"); var headers = GetRequestHeaders(); headers.Add("symbol", tradeParams.symbol); if (tradeParams.orderId != 0) { headers.Add("orderId", tradeParams.orderId.ToString()); } else if (!string.IsNullOrEmpty(tradeParams.origClientOrderId)) { headers.Add("origClientOrderId", tradeParams.origClientOrderId); } headers.Add("timestamp", _dtHelper.UTCtoUnixTime().ToString()); var response = await _restRepo.DeleteApi <TradeResponse>(url, headers); return(response); }
/// <summary> /// Delete/Cancel a trade /// </summary> /// <param name="tradeParams">Trade to delete</param> /// <returns>TradeResponse object</returns> public async Task <TradeResponse> DeleteTrade(CancelTradeParams tradeParams) { //var headers = GetRequestHeaders(); var queryString = new List <string>(); queryString.Add($"symbol={tradeParams.symbol}"); if (tradeParams.orderId != 0) { queryString.Add($"orderId={tradeParams.orderId.ToString()}"); } else if (!string.IsNullOrEmpty(tradeParams.origClientOrderId)) { queryString.Add($"origClientOrderId={tradeParams.origClientOrderId}"); } //queryString.Add($"timestamp={_dtHelper.UTCtoUnixTime().ToString()}"); string url = CreateUrl("/api/v3/order", true, queryString.ToArray(), true); var response = await _restRepo.DeleteApi <TradeResponse>(url, GetRequestHeaders()); return(response); }
/// <summary> /// Delete a trade /// </summary> /// <param name="tradeParams">CancelTradeParams object</param> /// <returns>TradeResponse object</returns> public TradeResponse DeleteTrade(CancelTradeParams tradeParams) { if (_thisExchange == Exchange.BINANCE) { var response = _bianceRepo.DeleteTrade(tradeParams).Result; return(response); } else if (_thisExchange == Exchange.GDAX) { var response = _gdaxRepo.CancelAllTradesRest().Result; var tradeResponse = new TradeResponse(); if (response != null) { tradeResponse.clientOrderId = response.OrderIds.ToList().FirstOrDefault().ToString(); } return(tradeResponse); } else if (_thisExchange == Exchange.KUCOIN) { var response = _kuRepo.DeleteTrade(tradeParams.symbol, tradeParams.origClientOrderId, tradeParams.type).Result; var tradeResponse = new TradeResponse(); if (response.code.Equals("OK")) { tradeResponse.clientOrderId = tradeParams.origClientOrderId; } return(tradeResponse); } else { return(null); } }
/// <summary> /// Cancel a stop loss /// </summary> /// <returns>Boolean value when complete</returns> private bool CancelStopLoss() { var tradeParams = new CancelTradeParams { symbol = _symbol, orderId = openStopLossList[0].orderId, origClientOrderId = openStopLossList[0].clientOrderId }; var result = CancelTrade(tradeParams); bool stopLossCanceled = false; while (!stopLossCanceled) { stopLossCanceled = CheckTradeStatus(openStopLossList[0].orderId); } openStopLossList.RemoveAt(0); return(stopLossCanceled); }