提供源码的初衷
为了帮助读者建立一座从书本知识到实战应用之间的“桥梁”,购买书籍的读者可以获取与书本配套的学习版量化分析工具源码。
工具的源码是把书中知识点组合起来,使用wxPython封装一层GUI便于操作,实现了包括选股、行情、回测在内的一个炒股场景分析。
目的是帮助大家更好掌握书本知识,同时提供给大家一个思路,可以以此为基础去搭建适合自己的系统!
当前学习版的股票量化分析工具,版本号为QTYX 2.02。
这个工具目前定位仍然是配合书籍学习的工具,如果想要在这个基础上扩展为可供实战的股票量化分析工具,可以加入我的知识星球。
知识星球详细介绍可以点击链接查看:【点击】
QTYX最新版本使用指南:【点击】
Python股票量化分析学以致用指南课程:【点击】
安装环境
因为QTYX工具提供的是Python源码,只要在Python环境下启动即可,所以第一步就是搭建运行环境!!!(实战版QTYX提供EXE可执行文件)
移植程序前,请尽量按以下所列的库版本安装Python开发环境。新手读者强烈建议和作者的Python版本保持一致,可少走很多弯路!!!
Python3.7
wxpython 4.0.4
mpl_finance 0.10.0
TA-Lib 0.4.17
numpy 1.15.1
pandas 0.23.4
pandas-datareader 0.7.0
matplotlib 3.1.1
tushare 1.2.51
baostock 0.8.8
statsmodels 0.9.0
文字版指导文档【点击】:Python环境安装过程
视频版指导文档:链接: https://pan.baidu.com/s/1p5WES6Zd_duCinN5LGq3Tg 提取码: qgsq 复制这段内容后打开百度网盘手机App,操作更方便哦
安装完成后启动主文件StartEntry.py即可!
Macos环境下显示效果如下:
- 行情分析界面
我们可以点击股票池显示行情走势,行情参数包括行情起始时间、周期、前复权、后复权、不复权。也可以4幅子图同时比较行情走势。
我把书上衍生技术指标——均线金叉死叉、跳空缺口、黄金分割线、K线形态识别,都加到回测工具中了。
另外为了支持读者用回测工具分析其他的标的,比如基金、比特币等等,增加了导入离线数据的功能。
- 回测评估界面
策略池中注册策略,选择回测参数,比如初始资金、交易规模、滑点、手续费、印花税之类,点击开始回测,主界面可视化回测指标,比如风险和收益,日志中会有更具体的回测结果,比如交易明细、回测幅度、收益率等。
- 条件选股界面
我们把全市场股票的部分财务数据(市盈率、市值、换手率之类的)整合成了一张表,然后通过条件选取过滤出符合要求的股票,点击保存结果后就可以更新到自选股票池中。大家也可以重构这张表,把平时关系的一些财务指标加进来。
windows环境下显示效果如下:
常见问题解决
另外,有些新的功能在我的Macos平台下运行正常了,在windows平台上可能会出现各式各样的兼容问题。我记录在这里,以帮助大家更快地解决问题!
No module named ‘MainlyGui’
针对windows平台设置
如果下载下来的代码包存放在自己路径下,运行
StartEntry.py
出现以下提示:
from MainlyGui.MainApp import Wx_MainRun
ModuleNotFoundError: No module named 'MainlyGui'
先打印Python搜索路径:
import sys
print(sys.path)
如果不在的话,把当前路径加到python的搜索路径中:
sys.path.append(‘‘)
或者用PYTHONPATH环境变量,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的!)分开,如果PYTHONPATH 变量还不存在,可以创建它!这里的路径会自动加入到sys.path中,永久存在于sys.path中而且可以在不同的Python版本中共享。
可查看这篇公众号的介绍:import模块提示找不到!股票量化分析工具常见问题剖析
针对MacOs平台设置
记得在Run->Configuration…选择中把 Working directory设置上脚本的存放路径
关于numpy.ufunc
运行过程中出现如下问题:
ValueError: numpy.ufunc size changed, may indicate binary incompatibility.
更新numpy版本即可!
pip install numpy
如果版本是0.4.20的话建议降到0.4.19
关于标签页切换
如果点击“行情参数”“回测参数”“选股参数”标签页,出现如下情况:
在MainFrame.py文件中,找到这句代码:
self.ParaNoteb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self._ev_change_noteb)
把wx.EVT_NOTEBOOK_PAGE_CHANGING更改为wx.EVT_NOTEBOOK_PAGE_CHANGED
关于图表中文字体显示
如果Matplotlib图表无法显示中文字体,MainFrame.py文件开头加以下代码:
mpl_finance 升级:
mpl_finance库用于画K线,可指定书中版本安装。
首先删除当前版本 pip uninstall mpl_finance 或者pip uninstall mplfinance
然后指定版本安装pip install mpl_finance==0.10.0,这样避免更多的问题排查。
当然,有能力的朋友可以移植成mplfinance,参考这篇内容:mpl_finance升级至mplfinance!基于股票量化分析工具V2.06的改动!。
日期格式正确:
在win7环境下wxpython 4.1.0版本和baostock 0.8.8 一同使用时,在baostock的history.py文件的以下代码中报错:
经测试可以使用wxpython4.0.4版本和baostock 0.8.8共同使用。不过wxpython4.0.4在win7下会出现以下问题:
You probably called setlocale() directly instead of using wxLocale and
now there is a mismatch between C/C++ and Windows locale.
解决方法在MainGui文件中添加语句self.locale = wx.Locale(wx.LANGUAGE_ENGLISH),如下所示:
def OnInit(self):self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)self.frame = MainFrame()self.frame.Show()self.frame.Center()self.SetTopWindow(self.frame)return True
win10环境下baostock 0.8.8和wxPython4.1.1 不存在兼容性问题。
也有读者反映以下信息,仅供参考:
建议的版本搭配为:
Python3.8+wxpython4.1.1+baostock 0.8.8 + 去掉 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)
Python3.7+wxpython4.0.4+baostock 0.8.8 win10/win7 维持代码语句 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)
或者把在baostock的history.py文件的175至187行注释掉。
您没有访问接口的权限
原因为tushare的积分不足,程序中使用了pro.daily_basic()接口,大家可前往官网查看积分获取规则。
当然,大家消化代码之后可以把自己选股的数据替换到工具中。知识星球中的新版本已经使用爬虫替换了tu share接口,可查看这篇文章:无积分困扰!爬虫获取A股每日指标!股票量化分析工具V2.1.3
utf-8 codec can’t decode byte…:
提示编码格式错误时,可以在SysFile.py文件中更改encoding参数值:
界面显示比例
如果界面显示比例有问题,可以调整下显示器的分辨率或者手动拖拽下工具的边框,以达到适合的程度。