返回列表 发布新帖

大QMT 双 Python 版本实测:3.12 上线,老策略在 3.6 继续跑,附切换流程与迁移对照

19 0
发表于 昨天 11:44 | 显示全部楼层 阅读模式

10.23 限制的观察帖还在持续更新(落地观察表在本帖二楼跟帖维护),今天说个方向相反的变化——

大QMT 开始支持 Python 3.12 了。官方口径:两个 Python 版本同时支持(3.12 + 3.6),可手动切换。 目前我只确认国金和光大(已实机实测),其他券商未知——求样本。

【升级流程(两分钟版)】

登录交易端 → 选择 python 库版本 py3.12 → 点击 python 库下载
→ 设置版本保存 → 重启交易端 → 新增策略运行

两个要点:

  1. 双版本并存:3.6 保留,随时切回——老策略零风险;
  2. 切换后务必重启并确认版本生效——我第一次跑探针没输出,排查半天发现是重启后没确认切换是否生效。

【实机探针:6 组测试全过】

Python 版本:3.12.10
pandas 版本:3.0.2
f-string:✓(老版本缺的现代语法,有了)
pathlib:✓
get_market_data 返回类型:DataFrame(MultiIndex,官方公告一致)
旧 Panel 属性(major_axis 等):确认移除(AttributeError)
文件桥(独立进程 TCP):✓ 完美兼容

【破坏性变更:升级 3.12 后,报错从哪来】

pandas 升级后 Panel 被彻底移除——三个高频接口的返回结构全变了:

get_market_data / get_financial_data / get_top10_share_holder

好消息是官方迁移文档很全,坏消息是大部分散户不会去看。精简对照:

旧写法(Panel 专有)           | 3.12 下 | 换成
data.items(股票列表)        | ✗ 失效  | data.columns.get_level_values(0).unique()
data.major_axis(日期轴)     | ✗ 失效  | data.index
data.major_xs('日期')        | ✗ 失效  | data.xs('日期').unstack()
data.minor_xs('close')      | ✗ 失效  | data.xs('close', level=1, axis=1)

链式取数 data['股票']['字段'] 不用改——单股票子表和单字段取法与旧版完全一致。

不想一次性迁移的,用双兼容分支(官方文档标准写法):

if isinstance(data, pd.DataFrame):
    stocks = data.columns.get_level_values(0).unique()  # 3.12 新结构
else:
    stocks = data.items  # 3.6 旧 Panel 结构

同一个策略文件,两个版本环境都能跑——升级期间不用赌方向。

【文件桥在 3.12 的兼容性(意外收获)】

我开源的文件桥(纯标准库 TCP 协议)在 3.12 + pandas 3.0.2 环境零改动跑通全部读写测试——工具链对新 Python 版本兼容,10.23 限制期里的活路依然在。

【求样本】

目前只确认国金和光大,其他券商有没有推送 3.12?升级后老策略跑起来有没有报错?回帖说一下券商和现象——样本会进我的落地观察表(限制状态 + 升级状态并表)。

更多实测笔记在公众号「晋盈投资」。

风险提示:技术实测记录,不构成投资建议。升级操作以券商官方文档为准;策略迁移前先在模拟环境充分验证。

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表