From 66e31450df4d7c5842d7c6550fb3c081f870ce2f Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 29 Jun 2026 11:47:53 +0800
Subject: [PATCH] 止损追单逻辑(多仓/空仓对称): 触发 → 查询 → 计算 → 下单 清理:取消相邻网格旧挂单 + 取消最远止盈单 一句话总结:每次止损触发补回 quantity*2 张,但总持仓不超 maxPositionSize,也不再累加放大。
---
src/main/java/com/xcong/excoin/modules/gateApi/TraderParam.java | 45 +++++++++++++++++----------------------------
1 files changed, 17 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/TraderParam.java b/src/main/java/com/xcong/excoin/modules/gateApi/TraderParam.java
index bce7886..08ba24a 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/TraderParam.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/TraderParam.java
@@ -3,38 +3,27 @@
import java.math.BigDecimal;
/**
- * 网格交易单参数,封装单笔条件开仓单及其止盈单的完整状态。
+ * 单笔挂单的完整参数,封装条件开仓单及止盈单的状态。
*
- * <p>每笔挂单对应的参数独立存储为一个 TraderParam 实例,
- * 用于追踪条件开仓单和止盈条件单的挂单状态、价格位置及订单 ID。
+ * <h3>定位</h3>
+ * 每个 GridElement 内嵌两个 TraderParam(longTraderParam / shortTraderParam),
+ * 分别记录该价格层级上多仓和空仓的挂单参数。所有字段通过 getter/setter
+ * 在挂单/成交/止盈各阶段逐步填充。
*
- * <h3>关键字段</h3>
- * <ul>
- * <li><b>方向</b>:多 / 空,决定挂单和止盈的触发方向</li>
- * <li><b>价格</b>:挂单价(条件开仓触发价)、止盈价(止盈触发价)</li>
- * <li><b>挂单状态</b>:挂单价是否挂成功、止盈价是否挂成功</li>
- * <li><b>网格位置</b>:挂单价网格位置、止盈价网格位置(用于定位在价格队列中的索引)</li>
- * <li><b>订单ID</b>:挂单订单 ID、止盈订单 ID(用于取消和匹配)</li>
- * </ul>
+ * <h3>字段分组</h3>
+ * <table>
+ * <tr><th>类别</th><th>字段</th><th>生命周期</th></tr>
+ * <tr><td>开仓准备</td><td>direction, entryPrice, quantity</td><td>updateGridElements() 预填充</td></tr>
+ * <tr><td>止盈预定</td><td>takeProfitPrice</td><td>updateGridElements() 预填充(entryPrice ± (step - minTick))</td></tr>
+ * <tr><td>挂单确认</td><td>entryOrderPlaced, entryOrderId</td><td>条件单挂成功后由 longEntryTraderIdParam 等写入</td></tr>
+ * <tr><td>止盈确认</td><td>takeProfitPlaced, takeProfitOrderId</td><td>止盈单挂成功后由 longTakeProfitTraderIdParam 等写入</td></tr>
+ * <tr><td>定位</td><td>entryGridPosition, takeProfitGridPosition</td><td>当前策略中由 upId/downId 替代</td></tr>
+ * </table>
*
- * <h3>使用示例</h3>
+ * <h3>盈利公式(正向合约)</h3>
* <pre>
- * TraderParam param = TraderParam.builder()
- * .direction(Direction.LONG)
- * .entryPrice(new BigDecimal("2293.7"))
- * .takeProfitPrice(new BigDecimal("2301.6"))
- * .quantity("1")
- * .entryGridPosition(3)
- * .takeProfitGridPosition(4)
- * .build();
- *
- * // 挂单成功后更新
- * param.setEntryOrderPlaced(true);
- * param.setEntryOrderId("12345");
- *
- * // 止盈单挂成功后更新
- * param.setTakeProfitPlaced(true);
- * param.setTakeProfitOrderId("12346");
+ * 多仓止盈盈利 = takeProfitPrice - entryPrice = (entryPrice + step - minTick) - entryPrice = step - minTick
+ * 空仓止盈盈利 = entryPrice - takeProfitPrice = entryPrice - (entryPrice - step + minTick) = step - minTick
* </pre>
*
* @author Administrator
--
Gitblit v1.9.1