当前位置: 首页 > news >正文

天勤图形化调试与策略运行器:IDE 插件与本地脚本怎么统一

前言

我们组有过经典场面:同事用 VSCode 插件点「运行策略」,我这边python main.py也启动了,两边以为对方没跑,其实两个进程都在下单——模拟盘双倍成交,风控电话打来才知道。还有一次是插件读的是config/backtest.yaml,命令行读的是当前目录的./config.yaml,回测区间差了一年,开会争了半小时谁对谁错。

天勤 devtools 里有策略运行器、回测启动、VSCode 扩展等(strategyrun.rststrategybacktest.rstvscode.rst),工具本身没问题,问题是团队没约定「生产只认一种入口」。我现在的规矩是:生产只有python main.py --mode live;插件只给个人调试;Notebook 不许当生产入口。

下面写两条轨为什么容易分叉、怎么对齐,以及升级版本后为什么要重对一遍路径。

一、两条轨差在哪(不是「谁好用」)

差异点插件 / 图形运行器命令行python main.py
工作目录 cwdIDE 里 often 是项目根,也可能配错你从哪 cd 进来就是哪
配置文件GUI 里点选,容易点到旧文件相对路径随 cwd 变
Python 解释器IDE 选的 venv服务器可能是系统 python
日志目录有时在临时目录脚本里logs/

这些差异在单机回测时不明显,一上模拟/实盘,路径错就是静默错:进程在跑,用的却是另一套合约或另一段日期。

二、统一四件事(我们写在 README 里)

  1. 唯一入口main.py,参数用--mode backtest|sim|live
  2. 配置:根目录config.yaml.env,路径用Path(__file__).parent拼,禁止裸相对路径。
  3. 解释器.venv路径写进README和 VSCode 设置模板,新人 clone 后照抄。
  4. 日志:绝对路径或基于项目根的logs/,日志首行打印:mode、cwd、配置版本、合约列表。
frompathlibimportPath ROOT=Path(__file__).resolve().parent LOG_DIR=ROOT/"logs"

插件里的「工作目录」请显式设成ROOT,和命令行一致。

三、升级版本后为什么要重对

天勤或插件小版本升级后,菜单路径、默认 cwd 可能变。我们发版 checklist 里有一行:用插件跑一次 sim,用命令行跑一次 sim,对比日志前两行是否一致。不一致就停,别带着「应该没事」上实盘。

四、调试技巧(实盘前)

  • 插件里先跑 sim,确认成交、持仓和命令行一致,再提交 git。
  • 断点调试时别在wait_update里停太久,行情会堆;短时断点一般还行。
  • 回测 / 模拟 / 实盘用 profile 切换构造,禁止手改三份代码。

五、团队规范示例

  • 生产:systemd 只调python main.py --mode live
  • CI:只跑 pytest + 静态检查,不跑插件。
  • 研究:Notebook 可以玩,导出到signals.py才算数。

总结

图形化工具省的是点鼠标,省不了环境和路径纪律。天勤插件和脚本都是在调同一套TqApi,吵架之前先看日志首行:cwd 一样吗、mode 一样吗、合约列表一样吗——十有八九在这一步就能和解。我吃过「双进程同时跑」的亏,所以会对新人啰嗦一点:你可以用插件,但生产只认main.py,这不是鄙视 GUI,是怕半夜电话。

FAQ

1)必须装插件吗?

不必,命令行足够,插件是加速器。

2)插件回测和脚本回测结果不同?

先对齐 cwd、配置、区间、合约、手续费五件事。

3)断点会卡死行情吗?

长暂停有风险,短时调试通常可接受。

4)多策略多个 launch 配置?

可以,每个策略一份,cwd 都指向各自 ROOT。

5)服务器没 GUI?

只用命令行 + 日志 + 可选 Web 监控。

风险提示

本文用于期货量化技术实践讨论,不构成投资建议。

http://www.zskr.cn/news/1353167.html

相关文章:

  • 深入解析Netfilter/iptables:从内核机制到实战配置的Linux防火墙指南
  • AI虚拟试衣间核心技术解析:扩散模型驱动的物理感知试穿
  • 从LR寄存器到问题函数:一次完整的Cortex-M HardFault调试实录与内存分析心得
  • JS逆向实战:加密库动态Hook的工程化落地方法
  • 别再死记硬背寄存器了!用Vivado SDK玩转Zynq 7010的GPIO(附MIO/EMIO/中断完整代码)
  • 保姆级教程:从外网到域控,手把手复现Vulnstack三层靶场(附完整渗透流程与避坑点)
  • 手把手教你用IAR和Procise调试复旦微FM7Z045的DDR(避坑JTAG模式切换)
  • ChatGPT网络错误不是运气问题:用mtr追踪真实路径,定位ISP路由黑洞、中间盒QoS限速与WAF误拦截(附15分钟速查表)
  • Facebook图神经网络索引用于蛋白质组学亿级搜索
  • RT-Thread信号量、互斥量、事件集实战:手把手教你搞定嵌入式多线程同步(附完整代码)
  • 保姆级教程:在Windows 10上用VS2017+Qt5.13.2从零编译Point Cloud Viewer (PCV)
  • 用NE555和CD4017做个复古流水灯:从原理图到面包板搭建全记录
  • 真空断路器结构原理与选型运维全解析:从核心部件到工程实践
  • Arm Development Studio中Iris调试接口配置指南
  • 嵌入式ARM核心板为何必须进行24小时老化测试?
  • AI时代非技术人群的生存指南:7个认知跃迁关键点
  • OpenHarmony Rust模块配置指南:构建安全高效的鸿蒙原生应用
  • 2026年知名的陕西内外墙腻子粉/陕西儿童房专用腻子粉/防霉腻子粉品牌厂家推荐 - 品牌宣传支持者
  • 中性原子量子编译的PAC框架设计与优化
  • 别再复制粘贴了!手把手教你用三台CentOS 7虚拟机搭建Hadoop 3.1.3集群(含SSH免密登录完整流程)
  • 从Multisim仿真到Basys3上板:一个数码管实验项目的完整开发流程与项目管理心得
  • Visio流程图导出PDF总模糊?试试这3个隐藏设置(含Mac/Win双平台方案)
  • Windows 10/11本地开发Spark程序,用IDEA+Maven搞定环境(附Scala 2.12.15和Spark 3.2.1配置)
  • 2026年评价高的自建房/登封乡村自建房/大包建房热选公司推荐 - 品牌宣传支持者
  • Unity微信小游戏移植避坑指南:渲染、资源、输入与性能实战
  • 工业通信基石Modbus协议:从串口到TCP/IP的实战解析与应用指南
  • SAP HANA Studio不只是个数据库客户端:解锁它的四大工作视角(管理、建模、开发、运维)能做什么?
  • 2026 树洞平台口碑排行|树洞陪聊 + 树洞陪玩 + 树洞倾诉 真实测评 - 时讯资讯
  • StarRocks导入数据:从本地文件导入数据(Stream Load)
  • 2026年比较好的冶金设备/单齿辊冶金设备/金属冷锯冶金设备/金属热锯冶金设备厂家推荐与选型指南 - 行业平台推荐