QMT 里的 Python 升到 3.12,老策略哪几行最先报错
发布时间:8小时前阅读:5
环境升级这件事,最大的风险不是新版本不好用,而是老代码里那些「以前能跑」的写法突然不认了。升级之前,先把这几处过一遍,能省掉大半返工。
第一处,字符串格式化。老代码里用百分号拼接的地方最多,遇到元组和字典混用时会直接抛异常。统一改成 f 字符串或者 format,一次改完,后面就不用再想。
第二处,字典的遍历与修改。在遍历字典的同时增删键,在老版本里有时不报错但结果诡异,新版本对这类操作更严格。改法是先取键列表,或者构造一个新字典再赋值。
第三处,类型注解与联合类型。新版本对注解的解析更规范,写了不存在的类型名会在导入时就失败,而不是等到运行时。升级前把所有注解过一遍,删掉随手写的占位。
第四处,第三方库版本。这是最容易卡住的:策略依赖的数据库、数据分析库如果版本过旧,装不上新解释器。建议先在独立环境里把依赖装一遍,装不上就记录,别在正式环境里试。
第五处,编码与文件路径。读写文件时的默认编码、Windows 下的路径分隔符,新版本行为更一致,老代码里依赖默认值的地方要显式指定。
升级的正确顺序是:先备份整个策略目录,再在独立环境装依赖跑一遍回测,用同一段数据对比升级前后的信号数量,差异在可解释范围内再切正式环境。切忌直接在生产环境升级,出问题时连回退的版本都找不到。
判断标准:升级后能重新跑出与升级前一致的信号,才算升级成功;结果差异大的,先查数据接口的默认参数是否变了,再查复权方式有没有被改动。
股票/量化开户欢迎找我!满足条件股票佣金万0.854、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!期权1.8元一张全包价!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
