12. 模拟实盘中的风控与 Broker 适配(双路径)
本教程通过两条完整路径,带你在模拟实盘中验证 S1.3 的关键行为:
路径 A:
asset_type='E' + simulator路径 B:
asset_type='FD' + simulator
目标是“跑通 + 观测 + 验证”,而不是只看概念。
12.1. 0. 教程目标
跑通两条路径(E 与 FD)
人工触发一次拒单并定位原因
观察分批成交状态从
partial-filled到filled的可见行为
12.2. 1. 前置准备
已有可运行的
Operator本地数据可支持运行频率
已配置 live 账户参数
建议先准备一个“可稳定触发拒单”的规则配置(例如较小的单笔数量上限),便于复现实验。
12.3. 2. 路径 A:E + simulator
步骤 1:设置配置
import qteasy as qt
qt.configure(
mode=0,
asset_type='E',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
)
步骤 2:启动运行
qt.run(op)
步骤 3:提交一笔测试订单并观察反馈
关注是否出现提交成功提示
关注是否出现风控拒单提示(英文)
记录一次订单 ID(后续对照日志)
12.4. 3. 路径 B:FD + simulator
步骤 1:切换资产类型配置
import qteasy as qt
qt.configure(
mode=0,
asset_type='FD',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
)
步骤 2:重复启动与下单
qt.run(op)
步骤 3:验证行为一致性
FD 路径应可进入 live 运行链路
拒单/提交/日志的观察方式与 E 路径一致
同一类订单在两条路径下应有一致的反馈语义
12.5. 4. 人工触发一次风控拒单
建议临时设置严格规则(如单笔数量上限),提交超限订单。
你应看到类似英文提示:
Order rejected by risk rule [MAX_ORDER_QTY]: order quantity exceeds limit
并可在 risk_log 中检索到对应记录。
建议至少验证两次:
一次被拒(确认拒因可见)
一次放行(确认策略可继续运行)
12.6. 5. 观察订单状态变化
重点观察是否出现:
submitted -> partial-filled -> filled
在分批成交场景中,最终状态应与累计成交量一致。
如果你看到了 partial-filled 长时间不变,请回到排错页按“状态理解偏差”剧本核对日志。
12.7. 6. 教程验收清单
E 路径可运行
FD 路径可运行
可触发并识别风控拒单
可在日志中定位拒单原因
可观察并理解分批成交状态变化
至少完成一次“拒单 -> 调整参数 -> 放行”闭环验证
12.8. 7. 下一步
深入机制:
live_trading/3-risk-and-order-lifecycle扩展 Broker:
live_trading/4-broker-adapter-and-integration排错手册:
live_trading/5-artifacts-and-troubleshooting
12.9. 8. 结果判定标准
当你完成本教程后,应能独立回答以下问题:
当前订单是被风控拒绝,还是已提交但未成交?
为什么某笔订单会停留在
partial-filled?需要去哪个日志文件先看、再看什么字段?
若以上三题都能独立回答,说明你已经具备 live 场景下的基本排错能力。