24a86a710c
Enforce optional DAILY_OPEN_HARD_LIMIT in precheck_risk and can_trade, keep AI alerts at DAILY_OPEN_ALERT_THRESHOLD, and document env setup for all four instances. Co-authored-by: Cursor <cursoragent@cursor.com>
2.6 KiB
2.6 KiB
单日开仓次数限制(四所统一)
各交易实例(Binance / OKX / Gate / Gate_bot)在 .env 中独立配置,互不影响。
交易日口径
- 以 北京时间
TRADING_DAY_RESET_HOUR(默认 8:00)切分交易日,与统计、顶栏「交易日」一致。 - 次日恢复:过了切日时刻后
session_date变为新日期,计数自动归零,无需清库。
计数口径
每成功新建一条 order_monitors 记录计 1 次,包括:
- 人工「实盘下单」
- 关键位自动开仓
- 其他写入
order_monitors的成功开仓
平仓后再开仍算新的一单。当日总次数到硬上限后 当天不再允许新开(即使已空仓)。
环境变量
在「交易执行 / 人工风控」段配置:
# 【单日开仓 AI 提醒】本交易日开仓次数达到该值时,企业微信推送 AI 克制提醒(不拦单)
DAILY_OPEN_ALERT_THRESHOLD=5
# 【单日开仓硬上限】本交易日开仓次数 >= 该值后,禁止一切新开仓直至下一交易日;0=不启用
DAILY_OPEN_HARD_LIMIT=0
配置示例
# 保守户:3 次提醒,5 次封死
DAILY_OPEN_ALERT_THRESHOLD=3
DAILY_OPEN_HARD_LIMIT=5
# 仅提醒、不封(与旧版行为接近)
DAILY_OPEN_ALERT_THRESHOLD=5
DAILY_OPEN_HARD_LIMIT=0
# 严格户:到 3 次即封
DAILY_OPEN_ALERT_THRESHOLD=2
DAILY_OPEN_HARD_LIMIT=3
建议 DAILY_OPEN_ALERT_THRESHOLD <= DAILY_OPEN_HARD_LIMIT(硬上限为 0 时除外)。
程序行为
| 次数 | 行为 |
|---|---|
| 未达提醒阈值 | 正常开仓 |
达到 DAILY_OPEN_ALERT_THRESHOLD |
成功开仓后 AI 企业微信提醒 |
达到 DAILY_OPEN_HARD_LIMIT(>0) |
precheck_risk 拒绝人工/关键位开仓;顶栏 can_trade=false |
硬限制与以下规则 同时生效(取交集):
TRADING_DAY_RESET_OPEN_GUARD_ENABLED:切日前禁止新开MAX_ACTIVE_POSITIONS:同时持仓上限- Gate_bot:
precheck_trend_pullback_start同样校验单日硬上限
页面与接口
- 顶栏 /
api/account_snapshot返回opens_today、daily_open_hard_limit、daily_open_alert_threshold。 - 达硬上限时提示:
本交易日开仓 N/M 已达上限,次日 8:00 后恢复(M为配置的硬上限)。
部署
修改各实例 .env 后重启对应 pm2 进程,例如:
pm2 restart crypto_binance crypto_okx crypto_gate crypto_gate_bot
实现位置
- 共享逻辑:
daily_open_limit_lib.py - 四所
app.py:precheck_risk、can_trade、api/account_snapshot、开仓成功后的 AI 提醒文案 - 单元测试:
tests/test_daily_open_limit_lib.py