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