From a9f61328a0c8571bb8a0494cd107e757afdee713 Mon Sep 17 00:00:00 2001 From: mxyhi Date: Thu, 30 Oct 2025 13:08:26 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(order):=20=E5=BC=80=E4=BB=93?= =?UTF-8?q?=E5=89=8D=E5=85=88=E6=92=A4=E9=94=80=E6=89=80=E6=9C=89=E6=8C=82?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 先在开仓前取消所有挂单,防止残留挂单导致仓位叠加 - 取消挂单失败时记录警告,但仍继续开仓 --- trader/aster_trader.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/trader/aster_trader.go b/trader/aster_trader.go index e3a96aed..b821be61 100644 --- a/trader/aster_trader.go +++ b/trader/aster_trader.go @@ -522,6 +522,11 @@ func (t *AsterTrader) GetPositions() ([]map[string]interface{}, error) { // OpenLong 开多单 func (t *AsterTrader) OpenLong(symbol string, quantity float64, leverage int) (map[string]interface{}, error) { + // 开仓前先取消所有挂单,防止残留挂单导致仓位叠加 + if err := t.CancelAllOrders(symbol); err != nil { + log.Printf(" ⚠ 取消挂单失败(继续开仓): %v", err) + } + // 先设置杠杆 if err := t.SetLeverage(symbol, leverage); err != nil { return nil, fmt.Errorf("设置杠杆失败: %w", err) @@ -584,6 +589,11 @@ func (t *AsterTrader) OpenLong(symbol string, quantity float64, leverage int) (m // OpenShort 开空单 func (t *AsterTrader) OpenShort(symbol string, quantity float64, leverage int) (map[string]interface{}, error) { + // 开仓前先取消所有挂单,防止残留挂单导致仓位叠加 + if err := t.CancelAllOrders(symbol); err != nil { + log.Printf(" ⚠ 取消挂单失败(继续开仓): %v", err) + } + // 先设置杠杆 if err := t.SetLeverage(symbol, leverage); err != nil { return nil, fmt.Errorf("设置杠杆失败: %w", err)