From 2af15077fb2e66500e955ffebc44ecad42e2dd66 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 19 May 2026 11:18:56 +0800
Subject: [PATCH] feat(ws): 添加订单更新ID日志记录功能
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 42 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
index 4705633..ddbe3b9 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -600,6 +600,43 @@
}
}
+ /**
+ * 用户私有成交回调。由 {@link com.xcong.excoin.modules.gateApi.wsHandler.handler.UserTradesChannelHandler}
+ * 在收到 {@code futures.usertrades} 推送时调用。
+ *
+ * @param contract 合约名称
+ * @param orderId 订单 ID
+ * @param price 成交价格
+ * @param size 成交数量
+ * @param role 用户角色(maker / taker)
+ * @param fee 手续费
+ */
+ public void onUserTrade(String contract, String orderId, BigDecimal price, String size, String role, BigDecimal fee) {
+ if (state == StrategyState.STOPPED) {
+ return;
+ }
+ log.info("[Gate] 成交明细, 合约:{}, 订单ID:{}, 价格:{}, 数量:{}, 角色:{}, 手续费:{}",
+ contract, orderId, price, size, role, fee);
+ }
+
+ /**
+ * 自动订单(条件单)状态变更回调。
+ * 由 {@link com.xcong.excoin.modules.gateApi.wsHandler.handler.AutoOrdersChannelHandler}
+ * 在收到 {@code futures.autoorders} 推送时调用。
+ *
+ * @param orderId 条件单 ID
+ * @param status 订单状态(open / finished / cancelled)
+ * @param reason 变更原因
+ * @param orderType 订单类型(plan-close-long-position 等)
+ */
+ public void onAutoOrder(String orderId, String status, String reason, String orderType) {
+ if (state == StrategyState.STOPPED) {
+ return;
+ }
+ log.info("[Gate] 条件单状态变更, id:{}, status:{}, reason:{}, order_type:{}",
+ orderId, status, reason, orderType);
+ }
+
// ---- 网格队列处理 ----
/**
@@ -631,6 +668,7 @@
GridElement baseGridElement = GridElement.findById(0);
TraderParam baseLongTraderParam = config.getBaseLongTraderParam();
baseGridElement.setLongOrderId(baseLongTraderParam.getEntryOrderId());
+ baseGridElement.setHasLongOrder(true);
//0位置的网格的多单止盈
BigDecimal upTakeProfitPrice = baseGridElement.getLongTraderParam().getTakeProfitPrice();
executor.placeTakeProfit(
@@ -649,6 +687,7 @@
//0位置的网格的空单止盈
TraderParam baseShortTraderParam = config.getBaseShortTraderParam();
baseGridElement.setShortOrderId(baseShortTraderParam.getEntryOrderId());
+ baseGridElement.setHasShortOrder(true);
BigDecimal downTakeProfitPrice = baseGridElement.getShortTraderParam().getTakeProfitPrice();
executor.placeTakeProfit(
downTakeProfitPrice,
@@ -1008,7 +1047,7 @@
if (downGridElement != null){
TraderParam downLongTraderParam = downGridElement.getLongTraderParam();
- if (!downGridElement.isHasShortOrder()){
+ if (!downGridElement.isHasLongOrder()){
executor.placeConditionalEntryOrder(
downLongTraderParam.getEntryPrice(),
FuturesPriceTrigger.RuleEnum.NUMBER_1,
@@ -1029,6 +1068,7 @@
BigDecimal downGridPrice = downGridElement.getGridPrice();
if (
!downGridElement.isHasShortOrder() &&
+ downGridPrice.compareTo(currentPrice) < 0 &&
downGridPrice.compareTo(longEntryPrice) <= 0 &&
downGridPrice.compareTo(shortEntryPrice) >= 0
){
@@ -1190,6 +1230,7 @@
BigDecimal downGridPrice = downGridElement.getGridPrice();
if (
!downGridElement.isHasLongOrder() &&
+ downGridPrice.compareTo(currentPrice) > 0 &&
downGridPrice.compareTo(longEntryPrice) <= 0 &&
downGridPrice.compareTo(shortEntryPrice) >= 0
){
--
Gitblit v1.9.1