余额不足时算出能开几笔,并点明半仓风险:两条腿分别下单,第二条失败会静默改掉收益结构

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jack
2026-08-28 18:25:35 +08:00
co-authored by Cursor
parent 7435cef61f
commit c513455998
+16 -3
View File
@@ -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"