Add daily loss force-flatten at configurable equity limit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-03 12:42:13 +08:00
parent b6c3266a9e
commit 2081bf2da9
17 changed files with 850 additions and 97 deletions
+2 -2
View File
@@ -128,9 +128,9 @@ CTP_LIVE_ENV=实盘
| 页面选项 | vnpy 类型 | 说明 |
|----------|-----------|------|
| 限价 | `OrderType.LIMIT` | 价格按最小变动价位取整 |
| 市价 | `OrderType.FAK` + 对手价偏移 | 非「无价格市价单」,而是 **带滑点的限价 FAK**,以提高 SimNow/各前置成交率 |
| 市价 | `OrderType.FAK` + **对手价(买一/卖一)** + 滑点 | 非「无价格市价单」;止损约 12 跳、强平约 20 跳(强平另受权益滑点预留上限约束) |
止盈止损触发、手动平仓、策略平仓均走 **`order_type=market`** 的上述 FAK 逻辑
止盈止损触发、手动平仓`urgency=stop_loss`;日亏损强平走 `urgency=risk_flatten`
---
+13 -1
View File
@@ -6,7 +6,19 @@
---
## 仓位上限
## 日亏损风控(强平线)
| 项 | 默认值 | 说明 |
|----|--------|------|
| `daily_loss_force_close_pct` | 2 | 系统设置:当日亏损(已实现+浮亏)占 **权益** 比例;**≥ 即强制平掉全部持仓** 并当日禁止开仓 |
| `daily_loss_slippage_buffer_pct` | 1 | 强平执行允许的额外滑点占权益比例;与强平线合计默认 **3%** 上限 |
| 环境变量兜底 | `RISK_DAILY_TRADING_RISK_PCT` | 未配置系统设置时强平线可回退到此 env |
- 亏损口径:**当日已平仓亏损 + 当前持仓浮亏**(含隔夜跳空),除以当前 CTP 权益。
- 达限后:后台 `daily_loss_guard` 撤平仓挂单 → 对手价 FAK 强平 → `daily_frozen` → 看板/下单页显示 **风控**,开仓按钮灰色。
- 与单笔止损关系:止损为常规退出;日亏损线为账户级熔断。
---
| 项 | 默认值 | 说明 |
|----|--------|------|
+3 -1
View File
@@ -12,7 +12,7 @@
|------|--------|----------|
| 导航显示 | 策略、计划、行情、手续费、AI 等开关 | 全部可关闭菜单 |
| 交易模式 | SimNow / 实盘 CTP | 下单、策略、同步 |
| 计仓与风险 | 固定手数/固定金额、risk_percent、max_margin_pct、roll_max_margin_pct | [ORDER_MONITOR](./ORDER_MONITOR.md)、[STRATEGY](./STRATEGY.md) |
| 计仓与风险 | 固定手数/固定金额、risk_percent、max_margin_pct、roll_max_margin_pct、日亏损强平线 | [ORDER_MONITOR](./ORDER_MONITOR.md)、[STRATEGY](./STRATEGY.md) |
| 移动保本 | trailing_be_tick_buffer | 下单、关键位自动单 |
| 挂单超时 | pending_order_timeout_sec | 下单监控 pending |
| CTP 连接 | 前置、账号(可覆盖 .env) | 全部交易 |
@@ -37,6 +37,8 @@
| risk_percent | 1 | 单笔风险占权益 % |
| max_margin_pct | 30 | 新开仓保证金上限 |
| roll_max_margin_pct | 单独 | 滚仓保证金上限 |
| daily_loss_force_close_pct | 2 | 日亏损强平线(%权益) |
| daily_loss_slippage_buffer_pct | 1 | 强平滑点预留(%权益),与强平线合计默认 3% |
| fixed_lots / fixed_amount | — | 计仓模式 |
| trailing_be_tick_buffer | 2 | 移动保本 1R 缓冲跳数 |
+2 -2
View File
@@ -49,7 +49,7 @@
| **风控开关** | 是否启用账户风控(持仓/日限额等) | `.env``RISK_CONTROL_ENABLED` |
| **持仓限制** | 当前 active 持仓数 / 同时持仓上限 | `.env``MAX_ACTIVE_POSITIONS` |
| **日持仓限制** | 当日已开仓次数(含已平)/ 日开仓上限 | `.env``RISK_DAILY_POSITION_LIMIT`(默认 5 |
| **日交易风险** | 当日累计止损风险占权益 / 上限 | `.env``RISK_DAILY_TRADING_RISK_PCT`(默认 2% |
| **日亏损风控** | 当日亏损(已实现+浮亏)占权益 / 强平线 | 系统设置 `daily_loss_force_close_pct`(默认 2%+ `daily_loss_slippage_buffer_pct`(默认 1% |
| **手动平仓次数** | 当日手动平仓次数 / 上限(超限日冻结) | `.env``RISK_MANUAL_CLOSE_DAILY_LIMIT` |
| **综合保证金占比** | 占用保证金占权益 / **综合上限(50%** | 实时计算 + 系统设置 `roll_max_margin_pct` |
| **单仓保证金上限** | 新开仓保证金占权益上限 | 系统设置 `max_margin_pct`(默认 30% |
@@ -106,7 +106,7 @@
## 与全局风控的关系
- 看板 **实时展示** 账户风控状态;下单前各板块仍调用 `assert_can_open()` 做相同校验。
- **日持仓限制**、**日交易风险** 与「同时持仓上限」并列生效,任一超限即禁止新开仓。
- **日亏损风控**、**日持仓限制** 与「同时持仓上限」并列生效;达日亏损强平线将 **强制清仓**禁止新开仓。
- **期货不使用本系统「手动平仓冷静期」**(交易所自有规则);手动平仓仅计入当日次数,超限触发日冻结。
- **综合保证金占比** 使用 CTP 柜台权益与占用保证金实时计算;断线时可能短暂显示 `—`