From b7a2fa0ea40b15bd5b60d737cb96764884dcaaaa Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 28 May 2026 11:07:12 +0800
Subject: [PATCH] config(gateApi): 更新任意仓位变化,检查多空两边那些需要同时取消挂单
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 144 +++++++++++++++++++++++++----------------------
1 files changed, 77 insertions(+), 67 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 485bbae..cf1c956 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -428,40 +428,8 @@
tryGenerateQueues();
}else {
longPositionSize = size;
- List<GridElement> allShortOrders = GridElement.findAllLongOrders(longEntryPrice);
- if (CollUtil.isNotEmpty(allShortOrders)){
- GridElement keep = allShortOrders.stream()
- .max((a, b) -> a.getGridPrice().compareTo(b.getGridPrice()))
- .orElse(null);
- for (GridElement e : allShortOrders) {
- if (e == keep) {
- continue;
- }
- executor.cancelConditionalOrder(
- e.getLongOrderId(),
- orderId -> {
- longEntryTraderIdParam(
- e,
- null,
- false
- );
- }
- );
-
- if (e.getLongTakeProfitOrderId() != null){
- executor.cancelConditionalOrder(
- e.getLongTakeProfitOrderId(),
- orderId -> {
- longTakeProfitTraderIdParam(
- e,
- null,
- false
- );
- }
- );
- }
- }
- }
+ checkShortEntryOrderToCancel();
+ checkLongEntryOrderToCancel();
}
} else {
longActive = false;
@@ -479,39 +447,8 @@
tryGenerateQueues();
}else {
shortPositionSize = size.abs();
- List<GridElement> allLongOrders = GridElement.findAllShortOrders(shortEntryPrice);
- if (CollUtil.isNotEmpty(allLongOrders)){
- GridElement keep = allLongOrders.stream()
- .min((a, b) -> a.getGridPrice().compareTo(b.getGridPrice()))
- .orElse(null);
- for (GridElement e : allLongOrders) {
- if (e == keep) {
- continue;
- }
- executor.cancelConditionalOrder(
- e.getShortOrderId(),
- orderId -> {
- shortEntryTraderIdParam(
- e,
- null,
- false
- );
- }
- );
- if (e.getShortTakeProfitOrderId() != null){
- executor.cancelConditionalOrder(
- e.getShortTakeProfitOrderId(),
- orderId -> {
- shortTakeProfitTraderIdParam(
- e,
- null,
- false
- );
- }
- );
- }
- }
- }
+ checkShortEntryOrderToCancel();
+ checkLongEntryOrderToCancel();
}
} else {
shortActive = false;
@@ -520,6 +457,79 @@
}
}
+ private void checkShortEntryOrderToCancel() {
+ List<GridElement> allLongOrders = GridElement.findAllShortOrders(shortEntryPrice);
+ if (CollUtil.isNotEmpty(allLongOrders)){
+ GridElement keep = allLongOrders.stream()
+ .min((a, b) -> a.getGridPrice().compareTo(b.getGridPrice()))
+ .orElse(null);
+ for (GridElement e : allLongOrders) {
+ if (e == keep) {
+ continue;
+ }
+ executor.cancelConditionalOrder(
+ e.getShortOrderId(),
+ orderId -> {
+ shortEntryTraderIdParam(
+ e,
+ null,
+ false
+ );
+ }
+ );
+ if (e.getShortTakeProfitOrderId() != null){
+ executor.cancelConditionalOrder(
+ e.getShortTakeProfitOrderId(),
+ orderId -> {
+ shortTakeProfitTraderIdParam(
+ e,
+ null,
+ false
+ );
+ }
+ );
+ }
+ }
+ }
+ }
+
+ private void checkLongEntryOrderToCancel() {
+ List<GridElement> allShortOrders = GridElement.findAllLongOrders(longEntryPrice);
+ if (CollUtil.isNotEmpty(allShortOrders)){
+ GridElement keep = allShortOrders.stream()
+ .max((a, b) -> a.getGridPrice().compareTo(b.getGridPrice()))
+ .orElse(null);
+ for (GridElement e : allShortOrders) {
+ if (e == keep) {
+ continue;
+ }
+ executor.cancelConditionalOrder(
+ e.getLongOrderId(),
+ orderId -> {
+ longEntryTraderIdParam(
+ e,
+ null,
+ false
+ );
+ }
+ );
+
+ if (e.getLongTakeProfitOrderId() != null){
+ executor.cancelConditionalOrder(
+ e.getLongTakeProfitOrderId(),
+ orderId -> {
+ longTakeProfitTraderIdParam(
+ e,
+ null,
+ false
+ );
+ }
+ );
+ }
+ }
+ }
+ }
+
// ---- 平仓推送回调 ----
/**
--
Gitblit v1.9.1