Files
crypto_monitor/docs/account-risk-cooldown.md
T
dekun e307eef690 feat(risk): add account cooldown and daily freeze after manual/external close
Implements shared account_risk_lib with 4h/1h cooloff and daily freeze rules, wires hooks into all four exchange apps and hub monitor UI, with tests and docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 17:05:19 +08:00

2.2 KiB
Raw Blame History

账户冷静期 / 日冻结风控

四所实例(币安 / OKX / Gate / Gate 趋势)共用 account_risk_lib.py,在手动平仓、外部平仓与交易复盘保存时更新 account_risk_state 表,并在开仓前 precheck_risk 拦截。

状态展示

实例页顶「交易所」标签旁、中控监控卡片账户名后显示:

状态 含义
正常 可新开仓
1h冻结 冷静期中(通常为复盘后缩短的 1 小时)
4h冻结 冷静期中(默认 4 小时)
日冻结 当日禁止一切新开仓

触发规则

事件 行为
页面手动平仓 默认 4h 冷静期;累计手动平仓次数 +1
当日第 2 次手动平仓 日冻结(默认上限 2 次,可配置)
复盘:离场触发=手动平仓 且补充说明非空 将当前冷静期降为 1h(自上次平仓时刻起算)
复盘:情绪标签任一项勾选 日冻结
外部平仓(result=外部平仓 4h 冷静期(正常止盈/止损不触发)

情绪标签(mood_issues):怕踏空、报复开仓、盈利飘了、拿不住单、扛单、重仓违规。

环境变量

在各实例目录 .env 中配置(模板见各所 .env.example):

RISK_CONTROL_ENABLED=true
RISK_COOLING_HOURS_MANUAL=4
RISK_COOLING_HOURS_EXTERNAL=4
RISK_COOLING_HOURS_MANUAL_JOURNAL=1
RISK_MANUAL_CLOSE_DAILY_LIMIT=2
RISK_MOOD_ISSUES_DAILY_FREEZE=true
  • RISK_CONTROL_ENABLED=false 时关闭整套逻辑,状态始终为「正常」。
  • 交易日切换(TRADING_DAY_RESET_HOUR)会清零当日手动平仓计数与日冻结标记;未过期的冷静期按 cooloff_until_ms 自然到期。

API

  • 实例:GET /api/account_snapshot 返回 risk_statusGET /api/account_risk_statushub_bridge)供中控拉取。
  • 中控:hub_monitor 载荷含 risk_status,卡片标题旁展示 status_label

相关代码

  • account_risk_lib.py — 核心状态机
  • 各所 app.pyon_manual_close / on_external_close / on_journal_saved 钩子
  • hub_bridge.py — 中控聚合 risk_status
  • tests/test_account_risk_lib.py — 单元测试