From 7d21bc26c701d55bb66eb9645078672ab9cb24c9 Mon Sep 17 00:00:00 2001 From: dekun Date: Fri, 7 Aug 2026 16:31:26 +0800 Subject: [PATCH] Realign market pair when hedge mode switches. Co-authored-by: Cursor --- backend/app/api/settings.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/backend/app/api/settings.py b/backend/app/api/settings.py index 0d6f41f..3b9bfc9 100644 --- a/backend/app/api/settings.py +++ b/backend/app/api/settings.py @@ -403,6 +403,9 @@ async def put_strategy_settings( data = body.model_dump(exclude_none=True) equity_to_apply: float | None = None switch_to: str | None = None + old_hedge = str( + db.get_setting("hedge_mode", s.hedge_mode) or s.hedge_mode or "perp_option" + ).strip().lower() if "exchange" in data: new_ex = normalize_exchange_name(str(data.pop("exchange"))) @@ -611,6 +614,18 @@ async def put_strategy_settings( detail=f"交易所已切换为 {switch_to},但行情重连失败: {e}", ) from e + new_hedge = str( + db.get_setting("hedge_mode", s.hedge_mode) or s.hedge_mode or "perp_option" + ).strip().lower() + if new_hedge != old_hedge and switch_to is None: + # 对冲模式切换:强制按新模式重对齐监控合约(ATM ↔ 虚值) + try: + from ..strategy.session import get_session + + await get_session().ensure_atm_async(force=True) + except Exception: + pass + return _read_settings()