11.5 风控模块:下单前检查
课前导读
学习目标
你将学会:在订单进入交易通道之前,用一套清晰的检查表拦住明显不该发生的交易。
适合谁读:已经理解实盘系统架构,并知道订单会从策略流向执行模块的学习者。
难度:advanced
预计用时:约 45 分钟
风控模块像机场安检。
它不会决定你这趟旅行是否开心。
但它会检查你是否带了不该带的东西,证件是否有效,登机口是否正确。
下单前风控也一样。
它不负责预测股票涨跌。
它负责确认这笔订单有没有违反资金、仓位、价格、名单、交易规则和损失限制。
对 A 股新手来说,风控不是“高级玩家才需要”。
恰恰相反,越是新手,越容易因为数量写错、代码看错、资金误算、重复点击而放大亏损。
本节只讲风控思想和教学级检查表。
不会提供真实券商接口连接步骤,也不会提供可直接用于实盘自动下单的代码。
知识正文
1. 类比:下单前风控像出门前的三次确认
你出门前可能会检查三件事。
钥匙带了吗?
门锁好了吗?
目的地是不是今天要去的地方?
这些动作看起来慢,却能避免很大的麻烦。
交易中的下单前检查也是这种“慢半拍”。
策略说“买入”,风控会问:资金够吗?
策略说“卖出”,风控会问:仓位够吗?
策略说“追涨”,风控会问:价格是否已经接近涨停?
策略说“今天继续交易”,风控会问:今天亏损是否已经超过上限?
风控不是给策略添堵。
风控是在系统最容易冲动的时刻,扮演冷静的第二双眼睛。
2. 从生活语言进入术语
下单前风控:订单提交前的一组规则检查。
它发生在订单生命周期里的“已生成”和“已提交”之间。
价格检查:确认委托价格是否合理,是否超出涨跌停范围,是否偏离参考价格过多。
数量检查:确认下单数量符合规则,并且不会因为多写一个零造成超额交易。
仓位检查:确认买入后单只股票或整体账户不会过度集中。
黑名单检查:确认股票不在系统禁止交易名单中。
涨跌停检查:确认订单没有忽视 A 股涨跌停约束。
可用资金检查:确认买入所需资金和费用有足够余量。
单日损失检查:确认账户今天的亏损没有超过预设停止线。
数据新鲜度检查:确认策略使用的行情和持仓不是过期数据。
这些词听起来很多,但都可以归为一句话:先确认“能不能下”,再讨论“要不要下”。
3. 下单前风控的流程
下面的流程图只是教学模型。
真实系统会更复杂,也会结合人工权限、交易通道和监控告警。
flowchart TD
A[策略生成订单意图] --> B[基础字段检查]
B --> C{代码和方向有效吗}
C -->|否| R[拒绝并记录原因]
C -->|是| D[价格与涨跌停检查]
D --> E{价格合理吗}
E -->|否| R
E -->|是| F[数量与资金检查]
F --> G{资金和数量通过吗}
G -->|否| R
G -->|是| H[仓位与名单检查]
H --> I{风险额度通过吗}
I -->|否| R
I -->|是| J[单日损失与开关检查]
J --> K{允许继续交易吗}
K -->|否| R
K -->|是| L[生成可提交订单]注意,风控流程里最有价值的是“拒绝并记录原因”。
如果只拒绝不记录,下次还会犯同样的错。
如果只记录不拒绝,记录就变成事后安慰。
4. A 股案例:一个零可能改变账户命运
假设一个新手账户有 100000 元可用资金。
策略本来计划买入某只股票 1000 股。
教学示例中,这只股票参考价格为 10 元。
正常买入金额约为 10000 元,再加上费用和滑点余量。
如果数量被误写成 10000 股,金额就变成约 100000 元。
这会让单只股票几乎占满账户。
如果次日股票低开,账户波动会明显放大。
如果没有数量和仓位检查,这个错误可能直接进入市场。
从投资者角度看,这是把一次试探性买入变成重仓押注。
从老师角度看,这是“规则先于判断”的典型场景。
从开发角度看,风控模块必须用机器能执行的规则拦住它。
例如:单只股票买入后不得超过账户权益的 20%。
例如:单笔订单金额不得超过可用资金的 30%。
例如:数量异常放大时必须进入人工确认。
这些规则不保证盈利。
但它们能降低“写错一个零”造成的大亏损概率。
5. 价格检查:不要让价格成为漏洞
价格检查不是预测未来价格。
它只回答委托价格是否在合理范围内。
A 股存在涨跌停制度。
多数普通股票每日涨跌幅有上限和下限。
不同板块和特殊情形可能有不同规则,学习时不要把单一比例机械套用到所有股票。
风控模块应当根据系统维护的交易规则进行检查。
价格还要和参考价格比较。
如果参考价是 10 元,订单却准备以 12 元买入,系统应要求解释。
这可能是策略确实允许高价格追买。
也可能是小数点、单位、行情源出错。
风控要做的不是替策略拍板。
风控要做的是发现异常并阻止未经确认的异常直接进入市场。
6. 数量检查:A 股语境里的基础门槛
A 股买入通常以 100 股为基本单位。
卖出时还可能遇到不足 100 股的零股处理问题。
教学中你只需要先记住:数量不是随便填的。
风控要确认数量为正数。
风控要确认数量符合交易规则。
风控要确认数量不会超过策略允许的最大单笔规模。
风控还要识别异常变化。
如果某策略过去每次买 1000 股,今天突然买 50000 股,就应触发检查。
这不一定代表错误。
但它一定值得停下来确认。
7. 仓位检查:防止账户变成单点押注
仓位是账户中某类资产所占比例。
对新手来说,可以先把仓位理解为“篮子里放了多少鸡蛋”。
如果一个篮子里只放一只股票,风险就集中在一个点上。
风控模块会检查买入后单票仓位。
也会检查行业、策略、账户整体风险敞口。
对于刚学习实盘系统的人,先掌握单票仓位和总仓位即可。
例如账户权益 100000 元,单票上限 20000 元。
如果当前已持有某股 15000 元,再买 10000 元就会超过上限。
这时风控应拒绝或要求降低数量。
8. 黑名单与白名单:先确认能不能碰
黑名单是系统明确禁止交易的股票或类别。
原因可能是停牌风险、数据质量异常、策略不覆盖、人工禁入、特殊事项未评估。
白名单是系统允许交易的范围。
新手常常只看“有没有机会”。
专业系统会先看“这是不是我允许交易的对象”。
如果策略突然给出一个不在覆盖范围内的股票代码,应该先拒绝。
这能防止代码映射错误、数据串线和策略越权。
9. 可用资金与费用余量
买入股票不是只看股价乘数量。
还要考虑费用、滑点和资金冻结。
教学阶段不需要记忆所有费用细节。
但要建立一个习惯:资金检查要留余量。
如果账户可用资金刚好等于理论买入金额,系统不应盲目通过。
因为实际成交价格、费用和资金占用可能让订单失败。
保守的风控会要求买入金额低于可用资金的一定比例。
这不是胆小。
这是为了避免边界条件导致连锁错误。
10. 单日损失:把“今天到此为止”写成规则
单日损失限制像车上的安全带。
它不会让你开得更快。
但在失控时能减少伤害。
如果账户今天已经亏到预设上限,系统应停止新增风险。
这条规则对新手尤其重要。
人在亏损后容易急于扳回。
程序在异常行情中也可能连续触发信号。
单日损失限制就是把“冷静一下”写进系统。
11. 下单前检查表
下面是本节的核心产物。
你可以把它复制到自己的模拟交易笔记里。
| 检查项 | 通过标准 | 不通过时动作 |
|---|---|---|
| 交易时间 | 当前处于允许下单的时段 | 拒绝或等待下一时段 |
| 股票代码 | 在策略覆盖范围和白名单内 | 拒绝并记录代码来源 |
| 买卖方向 | 与持仓和策略状态一致 | 拒绝并要求复核 |
| 委托价格 | 不超涨跌停,不异常偏离参考价 | 拒绝或进入人工确认 |
| 委托数量 | 为正数,符合 A 股数量规则 | 修正后重新检查 |
| 可用资金 | 买入金额加余量不超过可用资金 | 降低数量或拒绝 |
| 可卖持仓 | 卖出数量不超过可卖数量 | 拒绝 |
| 单票仓位 | 成交后不超过上限 | 降低数量或拒绝 |
| 总仓位 | 账户整体风险不超过上限 | 拒绝新增买入 |
| 黑名单 | 标的不在禁入名单 | 拒绝并记录原因 |
| 数据新鲜度 | 行情、持仓、资金为最新可用数据 | 暂停下单 |
| 单日损失 | 未触发停止交易线 | 停止新增风险 |
| 策略开关 | 策略处于允许交易状态 | 拒绝 |
| 重复订单 | 同一信号未重复下单 | 复用旧订单或拒绝 |
12. 概念性伪代码:风控只给结论和原因
输入:订单意图、账户快照、持仓快照、交易规则、风险参数
输出:通过、拒绝、需要人工确认
检查基础字段
检查价格边界
检查数量规则
检查资金和持仓
检查仓位上限
检查名单限制
检查数据是否过期
检查当日损失
如果任一关键检查失败:
返回拒绝,并写明原因
如果存在异常但不确定:
返回需要人工确认
否则:
返回通过这仍然只是教学伪代码。
它不能用于连接真实交易系统。
真正值得你带走的是风控的表达方式:结论必须和原因绑定。
交互实验室
练习 1:下单前自检
请用下面的清单审查一笔模拟买入订单。
- [ ] 我知道这只股票为什么进入策略范围。
- [ ] 我确认它不在黑名单里。
- [ ] 我确认订单方向是买入还是卖出。
- [ ] 我确认数量没有多写一个零。
- [ ] 我确认数量符合 A 股基础交易单位要求。
- [ ] 我确认价格没有超过涨跌停边界。
- [ ] 我确认买入后单票仓位不超限。
- [ ] 我确认账户总仓位不超限。
- [ ] 我确认可用资金留有费用和滑点余量。
- [ ] 我确认今天没有触发单日损失停止线。
- [ ] 我确认行情、持仓、资金不是过期快照。
- [ ] 我确认同一信号没有生成重复订单。
练习 2:判断风控结果
| 模拟情景 | 应通过吗 | 理由 |
|---|---|---|
| 买入后单票仓位从 18% 变为 23%,上限为 20% | 不通过 | 超过单票仓位上限 |
| 账户可用资金 50000 元,订单预计占用 49800 元且未留费用余量 | 不通过 | 资金边界过紧 |
| 股票不在策略白名单,但信号分数很高 | 不通过 | 覆盖范围优先于信号强弱 |
| 今天已达到单日最大亏损线,策略又出现买入信号 | 不通过 | 应停止新增风险 |
| 数量符合规则,资金充足,价格在允许范围内,未触发限制 | 可通过 | 基础风控无阻断项 |
练习 3:写下你的三条红线
请为自己的模拟账户写三条不可突破的规则。
- 我的单只股票最大仓位:____%。
- 我的单笔订单最大占用资金:____%。
- 我的单日最大可承受损失:____%。
写完后再问自己:这些数字是为了让我更安全,还是为了让我在冲动时仍然能满仓?
如果答案偏向后者,请降低数字。
核心复盘
知识清单:
- [ ] 下单前风控发生在订单提交之前,目标是拦住明显不该发生的交易。
- [ ] 风控不负责预测涨跌,它负责检查价格、数量、资金、持仓、仓位和规则。
- [ ] A 股交易要重视涨跌停、数量单位、可用资金和可卖持仓等约束。
- [ ] 黑名单和白名单能防止策略交易不该覆盖的标的。
- [ ] 单日损失限制能把“今天到此为止”写成系统规则。
- [ ] 风控结论必须带原因,否则无法复盘和改进。
- [ ] 一张下单前检查表,能让很多小错误在进入市场前就被发现。
金句总结
真正成熟的风控,不是让你永远不亏,而是让错误没有机会放大成灾难。