diff --git a/live/live_exec.py b/live/live_exec.py index 8cd25ce..77fc873 100644 --- a/live/live_exec.py +++ b/live/live_exec.py @@ -286,10 +286,23 @@ class Exec: f"需约 {need:.0f}(名义 {NOTIONAL:.0f} / " f"{LEVERAGE}x)", flush=True) if av < need: - print(f" ⚠ 不够。合约账户里要有 USDT 才能下单——" - f"资金常在现货账户,需要先划转到 USDT 本位合约。" - f"低于 {NOTIONAL / LEVERAGE:.0f} 连一笔都开不了", + per = NOTIONAL / LEVERAGE + fit = int(av // per) if per > 0 else 0 + print(f" ⚠ 保证金只够 {fit} 笔,而 MAX_OPEN=" + f"{MAX_OPEN}。", flush=True) + # 这里不只是"少做几笔"。两条腿是分别下单的,第一条 + # 成了、第二条因保证金不足失败,就留下一个半仓—— + # 收益结构从「50% 在 3 ATR + 50% 在 8 ATR」变成只剩 + # 一条腿,而且是静默的。让闸按真实余额拦,比让交易所 + # 拒单干净 + print(f" 要么充钱到 {need:.0f}+ USDT,要么把 " + f"LIVE_MAX_OPEN 降到 {max(fit, 1)}。不改的话" + f"超出的信号会下单失败,且可能只成一条腿、" + f"静默变成半仓(收益结构就不是设计的那个了)", flush=True) + if fit == 0: + print(f" 现在连一笔都开不了(每笔需 " + f"{per:.0f} USDT)", flush=True) except Exception as e: # noqa: BLE001 # 退出前要关会话。SystemExit 会绕过 run() 里的收尾, # 漏了就在日志尾部留一串 "Unclosed client session",