背景
最近写 QMT 的策略,需要获取沪深 300 的历史市盈率。但是 QMT 好像没有类似的数据,于是只能使用 tushare 等第三方库。然后就查了下 官方文档,找到了解决方法。再加上一些常用的策略开发提效的小经验,整理优化成此文。
正文
1. 确定 python 版本
虽然 QMT 的官方文档写的 python 版本是 3.6.8-64bit。但是不同券商使用的版本可能会不一样,所以为了保险起见,我们还是找个策略运行一下,再次确认一下 python 的版本比较保险。当然也可以查看现在已经安装了哪些 pkgs,也可以在后续验证 pkg 是否安装成功。
随便找个策略,改成下面的代码,运行一下策略就可以看到打印的信息了。
#coding:gbk
import sys
import pkg_resources
def init(C):
print("Python version:")
print(sys.version)
print("Version info:")
print(sys.version_info)
print("Installed packages:")
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages])
print(installed_packages_list)
# Python version:
# 3.6.8 (default, Dec 19 2022, 22:05:09) [MSC v.1900 64 bit (AMD64)]
# Version info:
# sys.version_info(major=3, minor=6, micro=8, releaselevel='final', serial=0)
# Installed packages:
# ['absl-py==0.2.2', 'aenum==2.2.3', 'astor==0.6.2'...]
2. 安装相同版本的 python
到官网下载相同版本的 python,比如 3.68 的话,就是这个地址:
下载后正常安装即可,记得在安装过程中勾选 Add Python 3.6 to PATH。通常 python 的安装路径是:
# python.exe
C:\Users\<Your-Username>\AppData\Local\Programs\Python\Python36
# packages:
C:\Users\<Your-Username>\AppData\Local\Programs\Python\Python36\Lib\site-packages
不同版本的 python 会在 \Python\ 目录下生成不同的目录,所以如果重新安装了,那么之前下载的 packages 也都需要重新下载。当然,卸载了的版本目录也就可以删除掉了,也能节省不少空间呢。
3. 安装 package 到 QMT
安装之前最好运行一下 py --version 查看一下版本是不是 3.6.8,可千万别弄错了。然后用下面的命令安装 pkg 就可以了。
pip install <pkg name> -t D:\<QMT PATH>\bin.x64\Lib\site-packages
其中 <pkg name> 是你要安装的第三方包,比如 tushare。<QMT PATH> 就是你安装的 QMT 的路径了。
安装之后可以去上面的目录查看是不是有了,也可以通过 py 脚本判断。
4. 使用自己封装的方法
有时候我们会封装一些常用的方法,比如给微信发消息、打印日志等。封装成标准的第三方库太麻烦了,直接写一个全是函数的 utils.py 文件就可以了。然后把它放到指定目录就可以了,目录我们有 2 个选择:
- 放到 QMT 的三方库安装目录:
D:\<QMT PATH>\bin.x64\Lib\site-packages\ - 放到需要运行的策略的同级目录:
D:\<QMT PATH>\python\
以上 2 种方法都可以,使用方法如下:
import utils
import imp
imp.reload(utils) # 可选:每次重新加载,避免缓存问题
utils.my_func()
5. 用 VS Code 编辑策略
QMT 自带的编辑器真的不太好用,其实用 VS Code 打开 D:\<QMT PATH>\python\ 目录也可以。但是需要注意几点:
- QMT 的策略都是用
gbk编码的,用 VS 打开要选好,否则中文会乱码; - 注意缩进(indent)的格式(space OR tab),一定要跟 QMT 对齐,否则策略很可能无法运行;
- 有时候策略打开是一堆 base64,这个时候需要在 QMT 中,把策略里的「启动本地python」勾选上;
用了 VS 再加上一些编程的 AI,体验好了不是一点半点。爽!!
总结
以上就是笔者目前总结出来的一些技巧,后面打算继续弄个 utils.py 的内容,积累一些常用的方法,各位可以持续关注哦。