反馈的兼容问题全面升级!股票量化分析工具QTYX-V2.3.7


7d2496de058f37c996738f8a9c26d996.png

前言

063c3902b49e8fa1ac008b7c32602116.png

作为一名过来人,我深切体会到搭建属于自己的股票量化交易系统的重要性,这是在股市中长期生存下去的必经之路。

因此,我们分享股票量化分析工具QTYX源码的目的,主要是想帮助大家在搭建的过程中有一个参照的模版。通过这个模版的学习,以及后续不断地优化,最终转化为符合自己交易风格的一个系统软件。

我们在星球的交流群中会收集一些大家反馈的常见问题。

针对使用QTYX过程因为运行环境的不同,而出现一些兼容性问题,比如不同显示器分辨率、不同的操作系统(Win或者Mac)、不同的Python版本、第三方库版本等等。

考虑到尽量让星友们少一点排查和更改,特别是对于Python基础比较薄弱的星友们,除了把些问题记录在了线上的使用说明文档之外,我想有必要让QTYX系统具有更好的兼容特性,尽可能让大家在不同的环境下都能顺利的使用分析工具。

为了达到这个目的,我收集了星球会员们在使用过程中反馈的一些高频问题。然后在QTYX的兼容性方面做了一些优化!升级到了新版本V2.3.7!毕竟磨刀不误砍柴工么!

acac2f7f3577c858ef2938041d85620d.png

显示器分辨率兼容

5b6d842b8c5dcf79670f04faea92d2fe.png

关于显示器尺寸不同而引起的界面图形显示不完整问题的改进。

以Windows平台为例。首先大家查看下自己显示器的参数,主要是缩放和分辨率。比如以下缩放比例是200%,分辨率是2560*1600,那么QTYX获取到的分辨率为1280*800。

15735099679f1ff82405e6e592bf5167.png

目前支持的最小分辨为1280*1024(100%缩放),界面显示效果如下所示:

c828a76cd7472521fc35a0f515d5f5cf.png

bfe7eb4e774e2b7bb46a4819624b286b.png

01ecc8a92337c25875e3ae5bd14fabc3.png

如果分辨率太小,就会出现控件显示不全的情况,比如1024*768(100%缩放),如下所示:

bba7d98c5f79a3cb4ff6b4c60e36ecf0.png

在启动的时候,如果分辨率过小会有提示对话框出现。

9cc5677008249e26c2314a48cd78e39f.png

同时考虑尽量把界面的控件减少来兼容小分辨率的显示器。比如把“行情参数”的【导入数据】按钮合并、“选股参数”的【刷新数据、开始选股、保存结果】合并。

e0ffd07d0c3f2766505092d39d6c3b1b.png

f2ad187c899f985c2dad0efe220099e3.png

02e92b84dd106f83eabb4cff12c1d633.png

自定义界面尺寸

7cf82837c09a3dfe652976f839dd03cf.png

如果需要自定义界面尺寸,大家也可以更改代码。介绍下代码中尺寸相关的地方。

关于QTYX界面部分的Python代码主要在MainlyGui文件夹下:

MainFrame.py——启动后出现的主菜单。

ConfFrame.py——对应于点击【配置】按钮进入的界面

DataFrame.py——对应于点击【行情】按钮进入的界面

UserFrame.py——对应于点击【量化】按钮进入的界面

0ff4832e351420bc806e9277d861231d.png

每个界面的Python文件中都有一个和文件名同名的核心类,DataFrame.py中对应的就是DataFrame。

  • 关于调整界面整体尺寸

找到__init__这个构造函数,如下所示,displaySize获取到的是当前显示屏幕的尺寸,是长和宽的元组格式。

可以乘以固定比例调整。比如界面宽度显示75%就乘以0.75,高度显示85%就乘以0.85。如果设置成100%的话就是全屏显示。

class DataFrame(wx.Frame):
    def __init__(self, parent=None, id=-1, displaySize=(1600, 900), Fun_SwFrame=None):
        wx.Frame.__init__(self, parent, title="股票历史数据下载工具", size=displaySize, style=wx.DEFAULT_FRAME_STYLE)
  • 关于调整固定尺寸控件尺寸

首先大家要能识别界面上不同控件的类型,以及代码中对应的名称。比如DataFrame.py的日志部分是用TextCtrl来实现的,大家可以在当前的DataFrame.py中搜索关键字“size=”涉及到固定尺寸的赋值,根据自己的情况加以调整。如下所示:

def _init_startup_log(self):
    self.startup_log_tx = wx.TextCtrl(self, style=wx.TE_MULTILINE, size=(200, 300)) # 启动相关日志
    return self.startup_log_tx

cacc56d5e6b96ba27dcad9059a567a48.png

  • 关于调整界面整体的布局比例

QTYX使用了布局管理器Sizer,它能对容器中的控件进行更优雅的布局管理,随着容器尺寸的变化自动计算控件最优化的大小和位置。

比如在DataFrame.py中,可以搜索关键字“BoxSizer”, BoxSizer的布局方向分为横向和纵向两种,并且可以在横向或纵向方向上嵌套包含子Sizer的布局。

关于更详细的界面布局原理的讲解可以参照视频课程《理性投资!2天入门量化思维炒股!定制自己的股票分析工具》,加入星球的会员可以找我获取兑换码。

找到BoxSizer之后,会看到不同的控件添加到这个容器中,其中有个proportion用于调整不同控件在这个布局中的比例。比如以下代码中self.ParaPanel和self._init_patten_log()的尺寸比例就是1:10

vboxnetB = wx.BoxSizer(wx.VERTICAL) # 纵向box
vboxnetB.Add(self.ParaPanel, proportion=1, flag=wx.EXPAND | wx.BOTTOM, border=2)  # proportion参数控制容器尺寸比例
vboxnetB.Add(self._init_patten_log(), proportion=10, flag=wx.EXPAND | wx.BOTTOM, border=2)  # proportion参数控制容器尺寸比例

02513f65d0952a8e887508014e0fe710.png

  • 关于调整对话框界面的尺寸

对于启动策略过程中出现的配置参数的对话框,尺寸主要在DefDialog.py文件中设置。比如启动双底形态后的参数设置对话框,名称为DouBottomDialog,同样找到关键字“size=”后,设置适合自己的尺寸即可。

class DouBottomDialog(wx.Dialog):  # 双底形态参数


    load_path = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + '/ConfigFiles/'


    def __init__(self, parent, title=u"自定义提示信息"):
        wx.Dialog.__init__(self, parent, -1, title, size=(700, 500),
                           style=wx.CAPTION | wx.CLOSE_BOX | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX)

6929f6c986cf5a54c14651ee27a06863.png

  • 关于调整多子图面板尺寸

对于量化界面中由Matplotlib或者Web生成的走势图的尺寸,目前在配置界面开放了接口,大家可以根据自己情况进行调整。

更改之后记得要按下回车键,会有“存储完成”提示!

比如多子图MPL的单幅XY大小分别为6和3时,并没有显示充分。

d53e7b134fd1abc7cf1bae4c403c4dd3.png

1f7f3e738f4a4e561bd2694e42dda307.png

多子图MPL的单幅XY大小分别为5和4时,显示充分。

18bf4f63088f7aacf83db0dd2fd736d0.png

b4392675122166be0781552011509053.png

具体的使用也可以参考这个视频:

5cd5964a1a9f2d88e0949e3dd71eb6e2.png

Web页面的支持

7e6790c021fc4f7365be3f85dd9f5111.png

QTYX中是使用WebView来渲染Web页面的。在Windows系统上wxPython的WebView因为浏览器版本而存在一定兼容问题。

于是Windows下我们在运行过程中用Python的winreg库(需要pip install一下)对注册表修改解决了Web显示的问题。

比如显示同花顺F10资讯:

dfa62795b6f8062e854e03f7bba99dd8.png

比如矩阵树图显示行业个股涨幅排行

8cf21473b11aaff4bba8dfd845a31446.png

注:由于仍然存在Web页面上操作鼠标方面的响应问题,建议大家直接用浏览器打开(QTYX会自动保存一份html在本地)。

049c5675a625f1d605d3d28c188de880.png

4462fac21899bca1eedd79f73bed1926.png

0f834c387c658fa203ec16b11165fbcd.png

K线动画播放支持

8a3af6231be87f7324d2c638e4dea58a.png

K线动画播放的页面属性与MPL多子图一致,前期版本按键被遮挡的问题已经解决。

a14e603b63fd6626bf8415ee6a1edd68.png


9d19888d0bf2d38298cb463b4d0c15c4.png

2.2.1版本前改进说明

88a1392139b30a5b4284d8d6b4a3f62b.png

  • 提示“缺少tushare的token码”

Token码是使用tushare pro数据源接口时所必备的,在V2.1.3版本后我们仅仅使用了stock_basic接口,默认的120积分就足够了,但是token码仍然是必须的。

目前我们采用了一种方式,可以做到即使不填写token码也可以正常运行程序。

方案是我们在本地的ConfigFiles文件夹中做了备份,即使大家自己不从tushare官网去更新,我也会以每周的频率去更新上市公司的股票清单。

  • 提示“日期格式不正确”

这个原因是wxpython和baostock共同使用时所出现的兼容性问题。

之前建议的版本搭配是Python3.7+wxpython4.0.4+baostock 0.8.8,现在Python3.8+wxpython4.1.1+baostock 0.8.8也可以了。

切换版本确实是个头大的事情,星友们亲测过只需在baostock的history.py文件的175-187注释掉即可,这样可以少走很多弯路。

eb6d17f9f54eee22d15c305802564b3a.png

  • 提示“No such file or directory:……”文件路径不存在

这个原因是QTYX程序里面大多使用的是相对路径, Mac和Win平台下对当前文件的参考路径是不一致。

目前的解决方法是当涉及到文件查找时,将路径自动调整为代码工程的根目录开始的绝对路径。

我在星球《Python量化场景编程技巧与方法》中也具体介绍了。有星友已经亲测有效!

eefabf1952a792efa380065568dab2c8.png

  • 快速查找帮助文档

为了帮助大家节省查找分析工具相关帮助文档的时间,当大家碰到报错时候,或者想知道某个更新的功能如何使用时候,不需要再到星球主题上去找链接,也不需要到公众号里面找链接,直接可以通过工具链接到相应的网页查看。

1e726e13f348e7363e08e9ec9e244871.png

以上就是本次优化的一些地方,我们已经建立了星球会员专享微信群,大家可以call我,邀请入群,有不错的建议可以在群里一起交流!

说明

1.想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利,名额有限先到先得!

947c2ae88b87c187a1fe636e3b2d34a7.png

元宵大师的量化交易书籍开售!!
京东、当当、天猫有售!!

9d0da94862d9efcac4ca194574070924.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值