☰
量化程序怎么同时支持回测和实盘:环境层分离
2026/10/12 9:29:23 网站建设 项目流程

前言

国内期货量化从研究到上线,通常会经历:历史回测(用过去 K 线验证规则)→ 模拟盘(交易所规则下的假资金或快期模拟)→ 实盘(真资金)。若为三阶段各拷一份.py,很快会出现“回测有某个 if、实盘忘了改”的分叉。更可维护的做法是:策略逻辑只有一份,仅TqApi的创建方式随环境变化。

天勤TqSdk用同一套get_kline_serial、wait_update、is_changing、TargetPosTask接口,通过传入TqBacktest、TqSim、TqKq、TqAccount切换环境。本文解释各环境在期货场景里代表什么、如何写make_api()、策略层必须统一哪些规则(含 K 线datetime触发),不默认你已做过回测。

一、四种环境在期货里各干什么

模式天勤构造典型用途
回测TqApi(backtest=TqBacktest(start_dt, end_dt), auth=...)历史区间验证,时间走完抛BacktestFinished
本地模拟TqApi(TqSim(), auth=...)本机快速调试,进程结束记录常消失
快期模拟TqApi(TqKq(), auth=...)团队可见、可与 APP 对持仓
实盘TqApi(TqAccount("期货公司",账号,密码), auth=...)真资金,需开通程序化

回测的 K 线datetime仍来自回放数据,触发逻辑应与实盘一致:用is_changing(kl.iloc[-1], "datetime")与iloc[-2],不要在回测里单独用[-1]。

二、环境层工厂函数(策略文件不碰 if live)

importosfromdatetimeimportdatefromtqsdkimportTqApi,TqAuth,TqSim,TqKq,TqAccount,TqBacktest,BacktestFinisheddefmake_api():auth=TqAuth(os.environ["TQ_USER"],os.environ["TQ_PASS"])mode=os.environ.get("TQ_MODE","sim")ifmode=="backtest":returnTqApi(backtest=TqBacktest(start_dt=date.fromisoformat(os.environ["TQ_BT_START"]),end_dt=date.fromisoformat(os.environ["TQ_BT_END"]),),auth=auth,)ifmode=="kq":returnTqApi(TqKq(),auth=auth)ifmode=="live":returnTqApi(TqAccount(os.environ["BROKER"],os.environ["ACCOUNT"],os.environ["ACCOUNT_PASS"]),auth=auth,)returnTqApi(TqSim(),auth=auth)

run_strategy(api)内只有期货合约订阅、循环、信号、下单,不出现if mode == "live"。

三、主程序与回测结束

api=make_api()try:run_strategy(api)exceptBacktestFinished:pass# 可在此导出回测统计finally:api.close()

回测结束后继续wait_update无意义;实盘与模拟则长期循环。

四、策略层必须三统一

  1. K 线触发:datetime字段变化 +iloc[-2]信号。
  2. 合约列表:来自 config,回测/实盘同一 symbol 规则(具体月或主连策略写清)。
  3. 执行方式:TargetPosTask与insert_order二选一,不混用。

手续费、滑点在回测侧配置,不要写在信号 if 里。

五、切换环境检查清单

  • 打印当前 MODE,防止误连实盘
  • 快期模拟/实盘后get_trade与日志对一笔
  • 换环境重启进程,勿热换 Api

总结

量化程序同时支持回测和实盘,核心是环境层make_api()+ 单一run_strategy,期货 K 线仍靠表内datetime(行情服务写入)判断新 bar。天勤四种构造覆盖国内期货从研究到上线;绩效差异来自成交模型,不是代码分叉。

把环境变量与密码管理做好,比复制策略文件更省心。

FAQ

1)一进程先回测再实盘?

分两次进程,防状态残留。

2)回测要 TqAuth 吗?

按你使用的数据服务配置。

3)绩效为何不同?

回测成交理想化,需模拟与小资金实盘验证执行。

4)多策略?

每策略独立进程与 Api。

风险提示

本文讨论工程实践,不构成投资建议。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询