From ed38f71a22ffbdad4b17a03a4a30b6f9a1d93d71 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 07 May 2026 14:36:15 +0800
Subject: [PATCH] feat(gateApi): 添加网格交易的止盈止损功能
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 23 +++++++++++------------
1 files changed, 11 insertions(+), 12 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 e1e01a8..04ebe41 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -189,22 +189,22 @@
private void placeLongTpSl(BigDecimal entryPrice) {
BigDecimal tpPrice = entryPrice.multiply(BigDecimal.ONE.add(gridRate)).setScale(1, RoundingMode.HALF_UP);
BigDecimal slPrice = entryPrice.multiply(BigDecimal.ONE.subtract(gridRate)).setScale(1, RoundingMode.HALF_UP);
- longTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close-long-position");
- longSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close-long-position");
+ longTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close_long");
+ longSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close_long");
log.info("[GateGrid] 多头TP/SL已设置, TP:{}, SL:{}, tpId:{}, slId:{}", tpPrice, slPrice, longTpOrderId, longSlOrderId);
}
private void placeShortTpSl(BigDecimal entryPrice) {
BigDecimal tpPrice = entryPrice.multiply(BigDecimal.ONE.subtract(gridRate)).setScale(1, RoundingMode.HALF_UP);
BigDecimal slPrice = entryPrice.multiply(BigDecimal.ONE.add(gridRate)).setScale(1, RoundingMode.HALF_UP);
- shortTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close-short-position");
- shortSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close-short-position");
+ shortTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close_short");
+ shortSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close_short");
log.info("[GateGrid] 空头TP/SL已设置, TP:{}, SL:{}, tpId:{}, slId:{}", tpPrice, slPrice, shortTpOrderId, shortSlOrderId);
}
private Long placePriceTriggeredOrder(BigDecimal triggerPrice,
FuturesPriceTrigger.RuleEnum rule,
- String orderType) {
+ String autoSize) {
try {
FuturesPriceTrigger trigger = new FuturesPriceTrigger();
trigger.setStrategyType(FuturesPriceTrigger.StrategyTypeEnum.NUMBER_0);
@@ -215,23 +215,22 @@
FuturesInitialOrder initial = new FuturesInitialOrder();
initial.setContract(contract);
- initial.setSize(1L);
+ initial.setSize(0L);
initial.setPrice("0");
initial.setTif(FuturesInitialOrder.TifEnum.IOC);
- initial.setReduceOnly(true);
+ initial.setAutoSize(autoSize);
FuturesPriceTriggeredOrder order = new FuturesPriceTriggeredOrder();
order.setTrigger(trigger);
order.setInitial(initial);
- order.setOrderType(orderType);
TriggerOrderResponse response = futuresApi.createPriceTriggeredOrder(SETTLE, order);
- log.info("[GateGrid] 条件单已创建, triggerPrice:{}, rule:{}, type:{}, id:{}",
- triggerPrice, rule, orderType, response.getId());
+ log.info("[GateGrid] 条件单已创建, triggerPrice:{}, rule:{}, autoSize:{}, id:{}",
+ triggerPrice, rule, autoSize, response.getId());
return response.getId();
} catch (Exception e) {
- log.error("[GateGrid] 创建条件单失败, triggerPrice:{}, rule:{}, type:{}",
- triggerPrice, rule, orderType, e);
+ log.error("[GateGrid] 创建条件单失败, triggerPrice:{}, rule:{}, autoSize:{}",
+ triggerPrice, rule, autoSize, e);
return null;
}
}
--
Gitblit v1.9.1