| | |
| | | * |
| | | * <h3>调用链</h3> |
| | | * <pre> |
| | | * GateGridTradeService.onKline → executor.openLong/openShort (基底双开 + 网格触发) |
| | | * GateGridTradeService.onPositionUpdate → executor.placeTakeProfit (开仓成交后设止盈) |
| | | * // 基底双开 |
| | | * GateGridTradeService.init → executor.openLong / executor.openShort |
| | | * |
| | | * // 网格条件开仓 |
| | | * GateGridTradeService.tryGenerateQueues / processShortGrid / processLongGrid |
| | | * → executor.placeConditionalEntryOrder(价格触发后市价 IOC 开仓) |
| | | * → executor.cancelConditionalOrder(取消对方方向旧条件单) |
| | | * |
| | | * // 止盈 |
| | | * GateGridTradeService.onPositionUpdate → executor.placeTakeProfit(开仓后设止盈条件单) |
| | | * |
| | | * // 停止 |
| | | * GateGridTradeService.stopGrid → executor.cancelAllPriceTriggeredOrders |
| | | * </pre> |
| | | * |
| | | * @author Administrator |
| | | * <h3>遗留方法(当前策略未使用)</h3> |
| | | * {@link #placeGridLimitOrder(BigDecimal, String, Consumer, Runnable)} 和 |
| | | * {@link #cancelOrder(String)} 为旧版限价单策略的遗留方法,保留以备后续使用。 |
| | | */ |
| | | @Slf4j |
| | | public class GateTradeExecutor { |
| | | |
| | | private static final String SETTLE = "usdt"; |
| | | |
| | | /** Gate U 本位合约 REST API */ |
| | | private final FuturesApi futuresApi; |
| | | /** 合约名称(如 ETH_USDT) */ |
| | | private final String contract; |
| | | |
| | | /** 交易线程池:单线程 + 有界队列 + 背压策略 */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 异步挂限价单(GTC),用于网格限价开仓。 |
| | | * <b>遗留方法 — 当前条件单策略未使用</b> |
| | | * |
| | | * <p>异步挂限价单(GTC),用于旧版网格限价开仓。当前策略改用 |
| | | * {@link #placeConditionalEntryOrder(BigDecimal, FuturesPriceTrigger.RuleEnum, String, Consumer, Runnable)}。 |
| | | * |
| | | * @param price 限价价格 |
| | | * @param size 下单张数(正=多 / 负=空) |
| | |
| | | } |
| | | |
| | | /** |
| | | * 异步取消指定订单。 |
| | | * <b>遗留方法 — 当前条件单策略未使用</b> |
| | | * |
| | | * <p>异步取消指定限价单。当前策略改用 {@link #cancelConditionalOrder(String)}。 |
| | | * |
| | | * @param orderId 订单 ID,为 null 时跳过 |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 异步创建条件开仓单(价格触发开仓)。 |
| | | * 异步创建条件开仓单(价格触发后市价开仓)。 |
| | | * |
| | | * <p>服务器监控价格,达到触发价后以市价 IOC 开仓。与止盈单不同,不设 order_type(默认开仓), |
| | | * reduce_only=false。适用于"价格到达 X 才买入 / 跌到 Y 才卖出"的场景。 |
| | | * reduce_only=false。 |
| | | * |
| | | * @param triggerPrice 触发价格 |
| | | * @param rule 触发规则(NUMBER_1: 最新价≥触发价时执行;NUMBER_2: 最新价≤触发价时执行) |