Files

116 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 全局账户风控
本文汇总 **所有板块共用** 的风控规则。各板块下单前均会调用 `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 上限,可滚仓不可开新仓 |