From ed57e750b5e2cf14fe5d447ff318228f8df77d23 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 05 Jun 2026 16:48:51 +0800
Subject: [PATCH] refactor(okx): 移除算法单频道处理器并优化网格交易重置逻辑
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxTradeExecutor.java | 41 +++++++++++++++++++++++------------------
1 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxTradeExecutor.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxTradeExecutor.java
index d96dd44..3aa0578 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxTradeExecutor.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxTradeExecutor.java
@@ -79,6 +79,14 @@
}
/**
+ * 提交一个通用任务到交易线程池末尾。
+ * 利用单线程池的 FIFO 特性确保任务按提交顺序执行。
+ */
+ public void submitTask(Runnable task) {
+ executor.execute(task);
+ }
+
+ /**
* 异步 IOC 市价开多。
*
* @param quantity 开仓张数(正数)
@@ -86,7 +94,7 @@
* @param onFailure 失败回调
*/
public void openLong(String quantity, Consumer<String> onSuccess, Runnable onFailure) {
- submitOrder("buy", "long", quantity, "market", null, false, "t-okx-grid-long", onSuccess, onFailure);
+ submitOrder("buy", "long", quantity, "market", null, false, null, onSuccess, onFailure);
}
/**
@@ -97,7 +105,7 @@
* @param onFailure 失败回调
*/
public void openShort(String quantity, Consumer<String> onSuccess, Runnable onFailure) {
- submitOrder("sell", "short", quantity, "market", null, false, "t-okx-grid-short", onSuccess, onFailure);
+ submitOrder("sell", "short", quantity, "market", null, false, null, onSuccess, onFailure);
}
/**
@@ -141,11 +149,11 @@
params.put("tdMode", tdMode);
params.put("side", side);
params.put("posSide", posSide);
- params.put("ordType", "conditional");
+ params.put("ordType", "trigger");
params.put("sz", size);
params.put("triggerPx", triggerPrice);
params.put("triggerPxType", "last");
- params.put("orderPx", "-1"); // 市价成交
+ params.put("orderPx", "-1");
String resp = okxAccount.requestHandler.sendSignedRequest(
okxAccount.baseUrl, "/api/v5/trade/order-algo", params, HttpMethod.POST, okxAccount.isSimluate());
@@ -186,9 +194,9 @@
params.put("posSide", posSide);
params.put("ordType", "conditional");
params.put("sz", size);
- params.put("triggerPx", triggerPrice);
- params.put("triggerPxType", "last");
- params.put("orderPx", "-1"); // 市价成交
+ params.put("slTriggerPx", triggerPrice);
+ params.put("slTriggerPxType", "last");
+ params.put("slOrdPx", "-1");
String resp = okxAccount.requestHandler.sendSignedRequest(
okxAccount.baseUrl, "/api/v5/trade/order-algo", params, HttpMethod.POST, okxAccount.isSimluate());
@@ -219,11 +227,9 @@
}
executor.execute(() -> {
try {
- LinkedHashMap<String, Object> params = new LinkedHashMap<>();
- params.put("instId", instId);
- params.put("algoId", algoId);
- String resp = okxAccount.requestHandler.sendSignedRequest(
- okxAccount.baseUrl, "/api/v5/trade/cancel-algos", params, HttpMethod.POST, okxAccount.isSimluate());
+ String body = "[{\"instId\":\"" + instId + "\",\"algoId\":\"" + algoId + "\"}]";
+ String resp = okxAccount.requestHandler.sendSignedRequestRaw(
+ okxAccount.baseUrl, "/api/v5/trade/cancel-algos", body, HttpMethod.POST, okxAccount.isSimluate());
log.info("[OkxExec] 条件单已取消, algoId:{}", algoId);
if (onSuccess != null) {
onSuccess.accept(algoId);
@@ -235,18 +241,17 @@
}
/**
- * 异步取消所有未完成的 algo 订单。
+ * 异步取消所有未完成的 algo 订单(best-effort,失败仅警告)。
*/
public void cancelAllAlgoOrders() {
executor.execute(() -> {
try {
- LinkedHashMap<String, Object> params = new LinkedHashMap<>();
- params.put("instId", instId);
- String resp = okxAccount.requestHandler.sendSignedRequest(
- okxAccount.baseUrl, "/api/v5/trade/cancel-algos", params, HttpMethod.POST, okxAccount.isSimluate());
+ String body = "[{\"instId\":\"" + instId + "\",\"instType\":\"SWAP\"}]";
+ String resp = okxAccount.requestHandler.sendSignedRequestRaw(
+ okxAccount.baseUrl, "/api/v5/trade/cancel-algos", body, HttpMethod.POST, okxAccount.isSimluate());
log.info("[OkxExec] 已尝试清除条件单, resp:{}", resp);
} catch (Exception e) {
- log.error("[OkxExec] 清除条件单失败", e);
+ log.warn("[OkxExec] 清除条件单失败(若无挂单可忽略), msg:{}", e.getMessage());
}
});
}
--
Gitblit v1.9.1