8b4b1a875c
Co-authored-by: Cursor <cursoragent@cursor.com>
116 lines
4.2 KiB
Markdown
116 lines
4.2 KiB
Markdown
# 全局账户风控
|
||
|
||
本文汇总 **所有板块共用** 的风控规则。各板块下单前均会调用 `assert_can_open()` 或等价校验。
|
||
|
||
相关代码:`risk/account_risk_lib.py`、`position_sizing.py`、`product_recommend.py`。
|
||
|
||
---
|
||
|
||
## 仓位上限
|
||
|
||
| 项 | 默认值 | 说明 |
|
||
|----|--------|------|
|
||
| `MAX_ACTIVE_POSITIONS` | 1 | 同时 **active** 持仓监控数量上限 |
|
||
| 环境变量 | `.env` | `MAX_ACTIVE_POSITIONS=1` |
|
||
|
||
- 达到上限后:**禁止新开仓**,但允许 **滚仓/顺势加仓**(`can_roll=True`)。
|
||
- 状态标签:**仓位上限冻结**。
|
||
|
||
---
|
||
|
||
## 冷静期与日冻结
|
||
|
||
| 项 | 默认值 | 说明 |
|
||
|----|--------|------|
|
||
| `RISK_CONTROL_ENABLED` | true | 关闭后跳过冷静期逻辑 |
|
||
| `RISK_MANUAL_CLOSE_DAILY_LIMIT` | 2 | 当日 **手动平仓** 次数上限 |
|
||
| `RISK_COOLING_HOURS_MANUAL` | 4 | 超限后冷静期(小时) |
|
||
| `RISK_COOLING_HOURS_MANUAL_JOURNAL` | 1 | 填写复盘情绪日记后缩短为 1 小时 |
|
||
| `TRADING_DAY_RESET_HOUR` | 8 | 交易日重置时刻(8 点前算上一交易日) |
|
||
|
||
### 触发流程
|
||
|
||
1. 用户在下单监控 **手动平仓**,且当日手动平仓次数 ≥ 上限。
|
||
2. 进入 **4h 冻结**(或填写复盘表单中的情绪问题选项后 → **1h 冻结**)。
|
||
3. 冻结期间 `can_trade=False`,禁止一切新开仓。
|
||
|
||
### 日冻结
|
||
|
||
- 复盘表单勾选情绪问题(怕踏空、报复开仓、盈利飘了、拿不住单、扛单、重仓违规等)并提交后,可触发 **当日日冻结**。
|
||
- 日冻结期间禁止新开仓,次日(按 `TRADING_DAY_RESET_HOUR`)重置。
|
||
|
||
---
|
||
|
||
## 保证金占用上限
|
||
|
||
| 项 | 配置位置 | 默认值 | 用途 |
|
||
|----|----------|--------|------|
|
||
| 单仓保证金上限 | 系统设置 `max_margin_pct` | 30% | **新开仓**:拟开 + 已有占用,占权益不得超过此值 |
|
||
| 综合保证金上限 | 系统设置 `roll_max_margin_pct` | 50% | **单仓模式**:滚仓/加仓合计上限;**多仓模式**:所有持仓合计上限 |
|
||
|
||
- 看板 **综合保证金占比** 的分母为 **50%(综合上限)**,不是 30%。详见 [风控说明.md](./风控说明.md#保证金占比核心规则)。
|
||
- 新开仓前仍按 30% 收紧手数;滚仓/多仓合计按 50% 校验(见 [STRATEGY.md](./STRATEGY.md))。
|
||
|
||
---
|
||
|
||
## 计仓与单笔手数
|
||
|
||
| 模式 | 说明 |
|
||
|------|------|
|
||
| 固定手数 | 使用系统设置 `fixed_lots` |
|
||
| 固定金额(以损定仓) | 须填止损价;手数 = 固定风险金额 ÷ 每手风险;同时受保证金上限约束 |
|
||
| 单笔上限 | `DEFAULT_MAX_ORDER_LOTS = 50` |
|
||
|
||
固定金额模式公式(简化):
|
||
|
||
```
|
||
每手风险 = |入场价 − 止损价| × 合约乘数
|
||
手数 = floor(固定风险金额 / 每手风险)
|
||
再按 max_margin_pct 收紧
|
||
```
|
||
|
||
---
|
||
|
||
## 可交易品种范围
|
||
|
||
| 条件 | 规则 |
|
||
|------|------|
|
||
| 权益 ≤ 20 万 **或** CTP 未连接 | 仅可交易:**玉米、豆粕、甲醇、螺纹钢** |
|
||
| CTP 未连接时估算 | 可开仓表按 **10 万权益** 估算最大手数 |
|
||
| 夜盘时段 | 可开仓表仅显示有夜盘品种 |
|
||
|
||
详见 [TRADING.md](./TRADING.md)、[ORDER_MONITOR.md](./ORDER_MONITOR.md)。
|
||
|
||
---
|
||
|
||
## 交易时段
|
||
|
||
- 非交易时段:**禁止报单**(开仓/平仓 API 返回 403)。
|
||
- CTP 未连接:禁止下单;连接中提示稍候。
|
||
|
||
---
|
||
|
||
## 各板块风控对照
|
||
|
||
| 板块 | 开仓前校验 | 特殊规则 |
|
||
|------|------------|----------|
|
||
| 下单监控 | 全部全局规则 + 保证金 + 品种 | 移动保本须填止损 |
|
||
| 关键位自动单 | 同上 + 交易时段 + CTP | 手数按 risk_percent 计算 |
|
||
| 策略首仓 | 同上 | 趋势回调计划单独表 |
|
||
| 滚仓/加仓 | 仓位上限冻结时仍可滚仓 | 滚仓保证金单独上限 |
|
||
| 开单计划 | **不自动下单**,仅提醒 | 无 assert_can_open |
|
||
| 关键支阻区 | 不自动下单 | 仅微信提醒 |
|
||
|
||
---
|
||
|
||
## 风险状态展示
|
||
|
||
下单监控顶栏、**数据看板 → 风控说明** 均展示当前状态。看板各指标释义与颜色见 [风控说明.md](./风控说明.md)。
|
||
|
||
| 状态 | 含义 |
|
||
|------|------|
|
||
| 正常 | 可新开仓 |
|
||
| 1h / 4h 冻结 | 冷静期中 |
|
||
| 日冻结 | 当日禁止新开仓 |
|
||
| 仓位上限冻结 | 已达 active 上限,可滚仓不可开新仓 |
|