news 2026/6/9 20:28:53

期货量化策略改代码要停机吗:天勤发版与进程重启边界

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
期货量化策略改代码要停机吗:天勤发版与进程重启边界

前言

国内期货量化策略,本质上是一个长时间运行的 Python 程序:根据 K 线或 tick 算出「目标持仓几手」,再通过天勤量化(TqSdk)连到期货公司或模拟账户去执行。策略不会一写好就永远不变——你会改均线周期、换交易合约月份、调风控阈值、修 bug。这种「换一版程序」叫发版。有人希望像网站一样「热更新」:程序不停机,改一行配置就生效;有人习惯夜盘结束或周末停机,替换代码后再开盘。

天勤的程序结构和普通脚本不同:核心是TqApi长连接,每个交易合约通常只有一个TargetPosTask实例负责调仓,K 线订阅缓冲绑在进程里。不是所有改动都能在持仓运行时在线生效;不懂这一点,可能在还有持仓时改了offset_priority,行为混乱,或叠了两个TqApi连接。下面按改动类型说明什么必须重启进程、发版时持仓怎么处理。

一、先弄清几个名词

名称是什么和发版的关系
发版部署新一版 Python 代码或配置可能需停机
TqApi天勤主连接,订阅与交易入口一个进程宜一个实例,换版常close()后重建
api.close()释放连接发版前正常退出用
TargetPosTask自动把净仓调到目标的工具创建时定priceoffset_priority等,事后难改
get_kline_serialK 线订阅改合约或 data_length 常需重订
state 文件自建 JSON,记 last_bar 等新进程可读,但与内存变量要一致
systemd/supervisorLinux 进程守护崩溃可拉起;换代码应 stop→替换→start
VERSION策略版本号日志里标记哪版逻辑下的单

二、为何天勤策略多数要「停机发版」

绑在进程上的内容为何难热更新
TargetPosTask单例同一 symbol 不能事后改 price、offset_priority、min_volume/max_volume
TqApi连接状态改环境常需 close 重建
K 线订阅改 symbol、周期、data_length 需重新订阅
内存里的变量新逻辑与旧 state 可能矛盾

官方文档:同一合约勿用不同参数重复创建TargetPosTask,否则会抛异常。

三、改动分类:什么可以什么不可以

改动内容建议方式
均线周期、信号阈值、日亏线停机;或代码实现「每根新 K 线重新读 config」,且不改 task 构造参数
交易合约月份(如 rb2510→rb2511)停机,并走移仓:平旧月、对新月建 task
ACTIVE/PASSIVEoffset_priority必须停机,新建TargetPosTask
日志路径、钉钉 webhook若写了 reload_config 可热更,否则停机
信号逻辑 bug 修复停机,回测和模拟验证后再上实盘

「热更新」在期货实盘里风险高:持仓还在、旧 task 还在发单,新逻辑已算出新目标,容易乱。

四、推荐发版流程(有持仓时尤其要遵守)

  1. 选成交清淡时段(如白盘午休、夜盘结束后)。
  2. 记录当前各品种get_position().pos、在途ALIVE委托。
  3. 程序内api.close()正常退出,或由 systemdstop
  4. 替换代码与配置文件,检查.env中合约月份、MODE 是否正确。
  5. 守护进程start拉起新进程。
  6. 启动后先多次wait_update(),读 position、order、account 全量对账,再恢复自动交易。

勿在复杂持仓时kill -9且不对账,否则新进程可能带着错误假设set_target_volume

五、VERSION 与守护进程的区别

日志第一行写VERSION=1.2.3;state JSON 里也写version,事后复盘能对应「这笔单是哪个版本的逻辑」。Restart=always适合进程崩溃自动拉起,不等于「不停机换代码」;换代码应明确 stop → 部署 → start。

总结

期货量化策略发版,在国内实盘环境下多数应视为停机发版:凡涉及TargetPosTask创建参数、订阅合约、核心信号逻辑的改动,都不适合在持仓运行中在线替换。天勤靠wait_update驱动交易,进程边界就是一致执行边界。把发版窗口、对账步骤、VERSION 标记写进运维习惯,需要明确的是:不是改完 py 文件就立即生效,而是 close、部署、拉起、对账的完整闭环。

FAQ

1)只改一个均线数字要重启吗?

若只改 config 且程序每 bar 重读、且不涉及 task 参数,可能不必;若改的是 task 的 price/offset 等,必须重启。

2)Docker 换镜像算啥?

等同停机,state 文件用数据卷挂载保留。

3)在 Jupyter 里改策略?

须 restart kernel 并api.close(),否则会叠连接。

4)双机热备两台同时跑?

同一资金账户不能两个进程同时自动报单。

风险提示

以上内容用于发版流程参考,不构成投资建议。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 20:25:06

工装制作全流程科普:从面料到自动化生产

工装(含工装外套与工装裤)是工业生产与特定行业作业的重要防护装备,其生产制作融合了传统缝制工艺与现代自动化智能技术。本文将全方位科普工装完整生产流程,详细讲解外套、工装裤的面料选型、行业适配场景、标准化制作工序&#…

作者头像 李华
网站建设 2026/6/9 20:24:59

机位动态定位技术,打造机场停机坪作业视频孪生平台

机位动态定位技术,打造机场停机坪作业视频孪生平台一、技术总述干机场智能化二十余年,见过太多停机坪管理的老问题:区域大、遮挡多、人车混杂、电磁环境复杂,传统GPS、RFID、UWB要么信号不稳,要么要贴标签、布基站&…

作者头像 李华
网站建设 2026/6/9 20:20:23

Total War模组开发终极指南:5步掌握RPFM专业工作流

Total War模组开发终极指南:5步掌握RPFM专业工作流 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/6/9 20:20:22

视频修复新纪元:如何用Untrunc拯救你的珍贵数字记忆

视频修复新纪元:如何用Untrunc拯救你的珍贵数字记忆 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 当珍贵的家…

作者头像 李华
网站建设 2026/6/9 20:15:15

JN516x嵌入式开发实战:I2C、ADC与电源管理深度解析

1. 项目概述与核心价值在嵌入式开发,尤其是物联网和无线传感节点设计中,选对一颗微控制器往往意味着项目成功了一半。这颗芯片不仅要能跑得动你的应用逻辑,还得在通信、数据采集和功耗管理这些基础但至关重要的环节上足够“给力”。今天要聊的…

作者头像 李华