模拟与实盘
策略回测通过后,不能直接上实盘——先用模拟盘在实时行情下验证,确认没问题再切到实盘。TqSdk 的「一套代码三种模式」设计让这个切换极其简单:只改 TqApi 的账户参数,策略代码一行不用动。
三种账户类型对比
| 账户类型 | 类 | 行情 | 撮合 | 资金持久化 | 费用 |
|---|---|---|---|---|---|
| 本地模拟 | TqSim() | 实时 | 本地撮合 | 程序结束即丢失 | 免费 |
| 快期模拟 | TqKq() | 实时 | 服务器撮合 | 长期保存 | 免费 |
| 实盘 | TqAccount(...) | 实时 | 交易所撮合 | 真实资金 | 需专业版 |
TqSim:本地模拟
最轻量的模拟方式,所有撮合在本地完成:
from tqsdk import TqApi, TqAuth, TqSim
api = TqApi(TqSim(), auth=TqAuth("快期账户", "账户密码"))
特点:
- 初始资金默认 1000 万,可通过
TqSim(init_balance=100000)自定义。 - 限价单需达到对手价才成交;市价单用对手价成交。
- 不会部分成交——要么全成,要么不成。
- 程序结束后数据全部丢失(除非用
TqKq)。 - 回测模式下只能用
TqSim。
可以自定义手续费和保证金,使模拟更接近实盘:
sim = TqSim(init_balance=100000)
sim.set_commission("SHFE.rb2410", 3.5) # 每手手续费 3.5 元
sim.set_margin("SHFE.rb2410", 0.1) # 保证金比例 10%
api = TqApi(sim, auth=TqAuth("快期账户", "账户密码"))
TqKq:快期模拟
快期模拟账户在服务器端撮合,资金和持仓长期保存,与快期 APP、快期专业版互通:
from tqsdk import TqApi, TqAuth, TqKq
api = TqApi(TqKq(), auth=TqAuth("快期账户", "账户密码"))
特点:
- 行情是真实实时行情,交易是模拟撮合。
- 可以通过快期 APP 的「模拟银行」进行出入金。
- 账户可以重置。
- 适合策略上线前的最终验证。
如果创建
TqApi时不传任何账户参数,默认就是TqSim()——一个临时本地模拟,程序结束即清空。
TqAccount:实盘交易
实盘交易需要期货公司的真实账户,属于专业版功能(需购买或申请试用):
from tqsdk import TqApi, TqAuth, TqAccount
# 参数:期货公司名(前面加大写首缀)、账号、密码
api = TqApi(
TqAccount("H宏源期货", "412432343", "123456"),
auth=TqAuth("快期账户", "账户密码")
)
期货公司名格式
期货公司名前需加大写字母前缀:
"H海通期货"、"H宏源期货"、"N南华期货"等H表示该期货公司的 CTP 主席,N表示次席- 完整列表见 TqSdk 支持的期货公司
登录失败常见原因
| 报错 | 原因与解决 |
|---|---|
| CTP:不合法登录 | 期货账号/密码/席位错误,检查 H/N 前缀 |
| CTP:客户端认证失败 | 需联系期货公司绑定 APPID |
| 超时异常 | 行情服务连不上或期货公司服务器关闭 |
try:
api = TqApi(TqAccount("H宏源期货", "账号", "密码"),
auth=TqAuth("快期账户", "账户密码"))
except Exception as e:
print("登录失败:", e)
快期账户与实盘绑定
- 每个快期账户最多绑定 3 个实盘账户。
- 首次使用实盘时会自动绑定。
- 如需解绑/重绑,到 快期用户管理中心 操作(解绑每天限一次)。
从模拟到实盘的切换
核心改动只有一行——TqApi 的第一个参数:
# 回测模式
api = TqApi(TqSim(), backtest=TqBacktest(...), auth=TqAuth(...))
# 本地模拟(代码不改,去掉 backtest 参数即可)
api = TqApi(TqSim(), auth=TqAuth(...))
# 快期模拟(服务器保存数据)
api = TqApi(TqKq(), auth=TqAuth(...))
# 实盘
api = TqApi(TqAccount("期货公司", "账号", "密码"), auth=TqAuth(...))
策略逻辑代码完全不变。 这正是 TqSdk 设计精妙之处。
实盘安全建议
- 先用模拟盘跑通:任何策略上线前,至少在
TqKq快期模拟上跑一个完整交易日。 - 设置风控:用
TqSim测试时养成设置init_balance的习惯,实盘注意account.risk_ratio(风险度)不要过高。 - 跨交易日重启:建议每天开盘前重启策略程序,避免隔夜状态问题。
- 紧急停止:提前准备好手动干预方案——可以用
api.cancel_order()撤所有单,或直接终止程序后调用api.close()。 - 日志记录:开启
debug=True输出调试信息到文件,便于事后排查。
小结
TqSim本地模拟,轻量但数据不保存;回测只能用它。TqKq快期模拟,服务器保存数据,是上线前的最终验证。TqAccount实盘交易,需专业版,期货公司名加大写前缀。- 三种模式只改
TqApi第一个参数,策略代码不动。 - 实盘前务必模拟验证,做好风控和日志。
期货之外,TqSdk 还支持期权交易。接下来了解期权的基本用法: 期权基本使用。