TqKq 和 TqSim 怎么选:快期模拟盘与本地模拟的区别
前言
跑天勤量化模拟时,我常看到有人把TqSim和TqKq混用:构造参数写错、用回测对象连模拟、或以为两者撮合完全一样。二者都是模拟,但接入路径和适用场景不同。下面按构造方式、撮合差异和切换清单说明。
一、各自是什么
- TqSim:SDK 内置的本地模拟交易单元,常与
TqApi(TqSim(), auth=...)一起使用,适合在开发机上快速验证下单与持仓逻辑。 - TqKq:快期模拟盘(KQ)路线,通过相应交易单元连接,更贴近部分用户使用快期模拟账户的习惯。
行情与认证仍依赖TqAuth等配置,具体权限以账户为准。
二、最小构造对照
本地 TqSim
fromtqsdkimportTqApi,TqAuth,TqSim api=TqApi(TqSim(),auth=TqAuth("快期账户","密码"))快期模拟 TqKq(类名与参数以当前版本文档为准)
fromtqsdkimportTqApi,TqAuth,TqKq api=TqApi(TqKq(),auth=TqAuth("快期账户","密码"))主循环仍为while True: api.wait_update(),切换时通常只改TqApi第一参数,信号函数尽量不动。
三、选型怎么判断
| 场景 | 更常选 |
|---|---|
| 本机开发、调试下单与持仓 | TqSim |
| 需要与快期模拟账户环境一致 | TqKq |
| 刚写完回测,第一步预生产 | 先 TqSim,再视需要 TqKq |
| 对接实盘前最后一轮 | 模拟 + 小资金实盘 |
TqSim 启动快、不依赖额外模拟账户配置,适合日更迭代。TqKq 适合团队已在快期模拟盘手工对账、希望程序与手工账户一致的情况。
四、与 TqBacktest 不要混用
回测用TqBacktest(start_dt=..., end_dt=...),模拟用TqSim()或TqKq()。三者择一作为TqApi的交易时间推进方式,不能同时传回测对象又期待实时模拟成交。
从回测迁到模拟的典型改法:
# 回测# api = TqApi(backtest=TqBacktest(...), auth=auth)# 模拟api=TqApi(TqSim(),auth=auth)五、成交与拒单差异
两种模拟的撮合细节可能与实盘均有差异。策略在 TqSim 通过后,建议再用 TqKq 跑至少一个完整交易周(若业务依赖快期模拟),关注:
- 部分成交、撤单后持仓
- 平今平昨拒单
- 资金不足拒单
不要把某一种模拟的成交率直接外推到实盘。
六、切换检查清单
TqApi构造参数是否已改为TqSim()或TqKq()。- 合约代码是否仍为可交易月份。
- 日志是否区分模拟与实盘,避免误操作。
- 风控阈值是否与实盘一致(模拟可略宽,但逻辑应同)。
总结
TqSim 偏本地、轻量、适合开发调试;TqKq 偏快期模拟盘环境。天勤量化里二者与实盘共用同一套wait_update主循环,切换成本低,但成交假设仍需分别验证。回测之后、实盘之前,至少保留一轮模拟,并明确用的是哪一种模拟单元。
FAQ
1)TqSim 和 TqKq 可以同时开吗?
一个TqApi实例对应一种交易单元,分开进程可以。
2)模拟要收费吗?
以账户套餐与平台说明为准,SDK 本身不替代商务规则。
3)模拟盈亏准吗?
用于验证逻辑与执行,不等同实盘盈利预测。
4)从 TqKq 上实盘改什么?
通常改为TqAccount(...),并核对交易时段与权限。
5)模拟盘数据与实盘一致吗?
行情同源架构下接近,仍应在实盘前做小仓位试单。
风险提示
本文用于期货量化技术实践讨论,不构成投资建议。
