在使用讯投QMT编写量化策略时,我们经常需要使用一些Python库来辅助开发。但是QMT的Python环境比较特殊,直接使用pip安装可能会遇到问题。这里把「自带什么库、怎么装、装不上怎么查」一次讲清楚。
先记住一条最关键的原则:
QMT的Python库与您本地已经安装的Python没有任何关系,也不要将库路径指向本地已经安装好的Python,那样并不会产生作用。
一、自带库(开箱即用,无需安装)
讯投自带了如下的Python库:
| 名称 | 说明 |
|---|---|
| NumPy | NumPy (Numeric Python) 提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。 |
| Pandas | Python Data Analysis Library 或 Pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas 提供了大量能使我们快速便捷地处理数据的函数和方法。 |
| Patsy | 一个线性模型分析和构建工具库。 |
| SciPy | SciPy 函数库在 NumPy 库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。 |
| Statsmodels | Python 的统计建模和计量经济学工具包,包括一些描述统计、统计模型估计和推断。 |
| TA_Lib | 称作技术分析库,是一种广泛用在程序化交易中进行金融市场数据的技术分析的函数库。它提供了多种技术分析的函数,可以大大方便我们量化投资中编程工作,内容包括:多种指标,如 ADX, MACD, RSI, 布林轨道等;K 线形态识别,如黄昏之星,锤形线等等。 |
上面这些库不需要做任何操作,策略里直接 import 即可。
二、安装第三方库之前:先确认「下载Python库」
首次安装完QMT后,第一件事就是下载Python库(客户端界面中的「下载Python库」入口),这是很多新手容易漏掉的一步。要点:
- 该Python库与您本地已经安装的Python没有任何关系,也不要将地址指向已经安装好的本地Python,并不能产生作用;
- 下载完成后需要重启客户端才生效;
- 不要在盘中操作,盘中下载会限速,速度较慢,建议盘前或盘后更新。
如果报错信息里带有 pandas 相关内容,多半就是Python库本身的问题。解决方案:
- 关闭软件,通过任务管理器确认所有QMT相关进程已经退出,然后重启软件;
- 若问题仍然存在,删除
安装目录/bin.x64下的Lib文件夹,然后重新下载Python库。
⚠️ 注意:删除
Lib文件夹会移除本地已安装的Python运行时库(包括您手动pip install装进site-packages的第三方库),可能导致已有策略无法运行,需要重新下载/安装Python环境。执行前请先备份Lib文件夹(如重命名为Lib.bak)。
三、手动安装没有自带的库
前置条件(最重要,先看这条)
所选第三方库必须在「券商管理端白名单」内才可运行。 若您使用的是券商提供的QMT终端,即使库已经装到了正确目录,也仍然可能报错:
1 | ImportError: Forbidden: Module openpyxl not in whitelist! |
这个报错是由于券商后台开启了Python库白名单,需要联系所属券商开通对应Python库的白名单权限。这一步不解决,后面装多少遍都没用。
安装步骤
本地安装Python环境,下载python3.6:
Python官网:https://www.python.org/downloads/release/python-360/
安装位置:
C:\Python36
为什么要装本地3.6?因为QMT内置的就是Python 3.6,用相同版本的
pip把库安装到QMT目录下,可以避免版本、语法和二进制接口不兼容的问题。新增环境变量:我的电脑–属性–高级系统设置–高级–环境变量—编辑
path,追加(不要覆盖原有内容):1
C:\Python36;C:\Python36\Scripts
检查Python环境:Win+R 打开运行,输入
cmd,执行python -V确认输出为Python 3.6.x,再执行pip -V确认pip可用。安装第三方库
安装前先确认QMT客户端的安装目录,根据个人电脑实际情况调整(下例为
E:\QMT交易端20962);安装时若遇到pip版本过低的错误提示,请先执行pip更新命令:
1
python -m pip install --upgrade pip
正式安装三方库命令(
-t用于指定安装目标目录,必须指向QMT的bin.x64\Lib\site-packages):1
pip install openpyxl -t E:\QMT交易端20962\bin.x64\Lib\site-packages
检查安装结果:到
安装位置\bin.x64\Lib\site-packages下确认库文件已存在。重启QMT客户端后,在策略中
import使用。
💡 小提示:QMT建议不要安装在C盘,以免因权限问题导致使用异常;若只能装在C盘,请以管理员权限启动客户端。这一点在向
bin.x64\Lib\site-packages写入文件时尤其容易暴露出来。
四、安装第三方 Python 库报错
1. ImportError:Forbidden:Moduleopenpyxl not in whitelist!
该报错是由于券商后台开启了 Python 库白名单,若您使用的是券商提供的QMT终端,请联系您的所属券商开通对应 Python 库白名单权限即可。
2. 启动策略时 pandas 库报错
报错信息一:NameError: name 'pandas' is not defined
该报错是指当前环境下没有找到pandas库。解决方法:
- 请在
设置-模型设置中检查正确设置了路径,正确路径应指向{安装目录}\bin.x64; - 请检查是否已经下载了python环境(见第二节)。
报错信息二:AttributeError: module 'pandas' has no attribute 'core'
该报错是由于在pandas导入中被强行中断导致的。重启客户端即可。
五、进阶:自己编写公共代码并导入
除了安装第三方库,还有一种更可控的「扩库」方式:把自己写的工具函数、工具类做成 Python 模块,放到 QMT 安装目录下的 python 目录里,再在策略中直接 import。
这样做的好处是,多个策略可以共用同一份代码——改一处,所有引用它的策略都生效,比在每个策略里复制粘贴可靠得多。
QMT 中策略文件本身就是存放在安装目录的 python 文件夹里的,所以把公共代码放在同一个目录,策略就能直接导入:
1 | QMT交易客户端/ |
在 utils.py 里写好函数后,策略中直接导入即可:
1 | # strategy3.py |
几点注意:
- 确保共享目录在 QMT 的 Python 路径中(即安装目录下的
python文件夹,也是策略文件存放的位置); - 不要在共享代码中硬编码账号、密钥等敏感信息;
- 注意策略之间的独立性,避免共享状态导致策略相互影响。
完整的共享代码目录结构、示例写法与注意事项,见另一篇:讯投QMT使用小技巧:公共代码的编写与引用。
注意事项
- 确保安装的库版本与QMT内置的Python 3.6兼容
- 不要在QMT运行时安装库,安装完成后请重启QMT
- 装入
bin.x64\Lib\site-packages属于「改客户端环境」的操作,升级或重装客户端前记得备份该目录 - 一些复杂的库(如TensorFlow)可能无法在QMT环境中正常运行,优先选择纯 Python 实现
风险提醒与免责声明
本文仅供学习与参考,不构成任何投资建议。量化交易涉及真实资金风险,策略逻辑请先在QMT「模拟信号模式」或「模拟柜台」中充分验证后,再切换至实盘账号。因使用本文内容造成的任何盈亏,由使用者自行承担。QMT、迅投为迅投公司或其关联公司的商标。