Fix position flicker, drop futures cooloff, prioritize startup display.

Preserve trading state when CTP memory is empty, bootstrap equity/positions on page load, stabilize risk status from DB monitors, and remove app-layer manual close cooling periods.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-30 23:17:18 +08:00
parent 2386eca324
commit 1b3a7f1bdc
9 changed files with 218 additions and 153 deletions
+5 -8
View File
@@ -35,8 +35,7 @@
|------|------|
| 正常 · 可新开仓 | 未触发冻结,可新开仓 |
| 仓位上限冻结 · 已达仓位上限 1/1 | 同时 active 持仓数已达上限,禁止新开仓,**滚仓/加仓仍允许** |
| 1h / 4h 冻结 | 手动平仓触发冷静期 |
| 日冻结 | 复盘勾选情绪问题或当日规则触发,禁止新开仓 |
| 日冻结 | 复盘勾选情绪问题、当日手动平仓超限或日限额触发,禁止新开仓 |
- **绿色**:当前可交易(`can_trade=true`
- **红色**:当前禁止新开仓(`can_trade=false`
@@ -47,14 +46,11 @@
| 指标 | 说明 | 配置来源 |
|------|------|----------|
| **风控开关** | 是否启用账户冷静期等风控 | `.env``RISK_CONTROL_ENABLED` |
| **风控开关** | 是否启用账户风控(持仓/日限额等) | `.env``RISK_CONTROL_ENABLED` |
| **持仓限制** | 当前 active 持仓数 / 同时持仓上限 | `.env``MAX_ACTIVE_POSITIONS` |
| **日持仓限制** | 当日已开仓次数(含已平)/ 日开仓上限 | `.env``RISK_DAILY_POSITION_LIMIT`(默认 5 |
| **日交易风险** | 当日累计止损风险占权益 / 上限 | `.env``RISK_DAILY_TRADING_RISK_PCT`(默认 2% |
| **手动平仓(冷静期触发)** | 当日手动平仓次数 / 上限 | `.env``RISK_MANUAL_CLOSE_DAILY_LIMIT` |
| **冷静期(默认)** | 超限后默认冻结时长 | `.env``RISK_COOLING_HOURS_MANUAL`(默认 4h |
| **复盘后冷静** | 填写复盘情绪日记后缩短的冷静期 | `.env``RISK_COOLING_HOURS_MANUAL_JOURNAL`(默认 1h |
| **冷静剩余** | 当前冷静期剩余时间 | 运行时计算 |
| **手动平仓次数** | 当日手动平仓次数 / 上限(超限日冻结) | `.env``RISK_MANUAL_CLOSE_DAILY_LIMIT` |
| **综合保证金占比** | 占用保证金占权益 / **综合上限(50%** | 实时计算 + 系统设置 `roll_max_margin_pct` |
| **单仓保证金上限** | 新开仓保证金占权益上限 | 系统设置 `max_margin_pct`(默认 30% |
| **滚仓/多仓保证金上限** | 单仓=滚仓上限;多仓=合计上限 | 系统设置 `roll_max_margin_pct`(默认 50% |
@@ -110,7 +106,8 @@
## 与全局风控的关系
- 看板 **实时展示** 账户风控状态;下单前各板块仍调用 `assert_can_open()` 做相同校验。
- **日持仓限制**、**日交易风险** 与「同时持仓上限」「冷静期」并列生效,任一超限即禁止新开仓。
- **日持仓限制**、**日交易风险** 与「同时持仓上限」并列生效,任一超限即禁止新开仓。
- **期货不使用本系统「手动平仓冷静期」**(交易所自有规则);手动平仓仅计入当日次数,超限触发日冻结。
- **综合保证金占比** 使用 CTP 柜台权益与占用保证金实时计算;断线时可能短暂显示 `—`
---