diff --git a/backend/app/services/bitget_trading_api_sdk.py b/backend/app/services/bitget_trading_api_sdk.py index db818df..62e0278 100644 --- a/backend/app/services/bitget_trading_api_sdk.py +++ b/backend/app/services/bitget_trading_api_sdk.py @@ -475,15 +475,22 @@ class BitgetTradingAPI: if stop_loss: sl_side = 'sell' if pos_side == 'long' else 'buy' try: - # 使用普通的 create_order 创建止损市价单 if self.use_unified_account: + # UTA 模式:用 stopLossPrice 触发策略订单路由 + # CCXT 通过 stopLossPrice 判断是否走 privateUtaPostV3TradePlaceStrategyOrder sl_params = { - 'stopPrice': stop_loss, - 'triggerBy': 'mark_price', + 'stopLossPrice': stop_loss, 'hedged': True, 'reduceOnly': True, 'marginCoin': 'USDT', } + sl_order = self.exchange.create_order( + symbol=ccxt_symbol, + type='market', + side=sl_side, + amount=btc_amount, + params=self._with_account_mode_params(sl_params), + ) else: sl_params = { 'stopPrice': stop_loss, @@ -492,14 +499,14 @@ class BitgetTradingAPI: 'marginCoin': 'USDT', 'reduceOnly': True, } - sl_order = self.exchange.create_order( - symbol=ccxt_symbol, - type='stop_market', - side=sl_side, - amount=btc_amount, - price=None, - params=self._with_account_mode_params(sl_params), - ) + sl_order = self.exchange.create_order( + symbol=ccxt_symbol, + type='stop_market', + side=sl_side, + amount=btc_amount, + price=None, + params=sl_params, + ) orders_created.append(('止损', sl_order)) logger.info(f"✅ 止损单已下: {sl_side} {btc_amount} BTC @ ${stop_loss}") except Exception as e: