最近QMT的python版本更新,策略从3.6.8切换编译器到3.12,会发现提示有的库没有,我具体仔细去看了一下对比3.6.8少了不少的模块,没有的模块只能自己pip安装,主要注意里面模块的兼容,具体安装教程可以参考
重磅更新--QMT支持Tushare,数据源终于不用折腾了
下面是大概整理的目前支持的模块
1数据分析模块

2机器学习模块

3量化交易模块

4算法优化模块

5可视化模块

6文件操作模块

7网络模块


8标准库模块



重点安最新规定会被限制的模块我也整理了一下
三种策略会立刻断,两种没事,一种必须实测
会立刻断:① 靠 CSV / Excel / JSON / Pickle 读参数或存状态的;② 靠 requests / HTTP / Socket / Redis / ZMQ 取数或桥接的;③ 靠 joblib / pickle 落盘保存模型或跨日状态的。这些不是"可能有问题",是链路直接中断。
没事:① 用 xtdata 取行情、xttrader 下单、账户接口查持仓的,这个模块虽然有,但是我测试了没有用;② 纯内存计算——talib 算指标、numpy 算数组、pandas 做滚动统计,扫描确认它们完全不碰磁盘。技术指标库 <span leaf="">talib</span> 是全环境最干净的一个,一个危险调用都没有。
全部第三方库风险评级高风险的
注意里面使用的库,安新规定会被限制使用部分模块,涉及到io,网络的



2有条件的使用部分限制的模块



3安全的库主要是内置的模块


4标准库里的受限与安全模块
标准库默认被当成"基础能力",但这次限制恰恰也覆盖它——open 本身就是内建函数,sqlite3、socket、subprocess 一样受限。好消息是计算类的标准库全部安全,回测的数学内核不受任何影响。


没有影响的模块,不涉及到文件的操作

两个最容易误判的标准库
json 与 pickle 不是一刀切禁用:<span leaf="">json.loads(字符串)</span>、<span leaf="">json.dumps(对象)</span>、<span leaf="">pickle.loads(字节)</span> 是纯内存操作,完全没问题;只有带文件对象或路径的 <span leaf="">json.load(f)</span> / <span leaf="">pickle.dump(obj, f)</span> 才受限。这个区别决定了你还能不能用配置字符串初始化策略。
logging 也不算全禁:<span leaf="">logging.getLogger()</span> 加 <span leaf="">StreamHandler</span>(默认控制台输出)是安全的,走后套 QMT 日志体系;受限的是 <span leaf="">FileHandler</span> 以及自己用 open 写的自定义 handler。
需要修改的内容,主要是把外部改成内部


这次调整对策略的实质要求,不是"换一批库",而是把数据入口收到 QMT 内部。指标计算、因子运算、组合优化这些纯内存的活,现有库一个都不用换——talib、numpy、scipy、cvxpy 都安全;真正要改的是数据的进出口:参数从文件搬进代码
不懂的问我就可以,加我备注入群可以加入量化交流群,找我开qmt,ptrade都可以专业量化支持 |