量化系统QTYX使用攻略|“选股框架”篇——高速下载全市场个股K线数据(更新3.0.3)

搭建自己的量化系统

股票量化交易系统QTYX是一个即可以用于学习,也可以用于实战炒股分析的系统。

分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统。因此我们提供源码,可以根据自己的风格二次开发。

关于QTYX的使用攻略可以查看链接:QTYX使用攻略

QTYX一直迭代更新,当前版本V3.0.3。后续升级版本会同步更新文档内容。


功能概述

股票数据是从事量化交易的源头。对于小散而言,理想的数据源应具备这些特点:首先是免费;其次是数据质量能满足分析需求;最关键的是要有专人负责持续维护与更新,确保数据的时效性和准确性;还有一点就是获取效率要高。

市面上有一些股票数据服务平台提供了Python接口来获取数据,总的来说,用于单个股票获取时候还是挺方便的,但是当我们的策略涉及到全市场的回测时,一下子下载5000多只股票非常耗时,每天全市场选股需要花1-2个小时。
因为调用接口时,本质上是连接到这些平台的服务器上,所以获取数据时服务器会有一些限制,比如积分限制,每次调用的频次和数据量都有一定的限制。
为了加速数据获取的过程,股票量化分析工具QTYX采用高速下载方案,下载全市场的5000只股票的历史行情数据一般在10分钟左右。
快速入门

接下来说说怎么使用吧!

在工具顶部左上角菜单栏两个按钮的功能如下:
  • “开始下载”:工具开始增量下载股票从上市至最新交易日的全部数据

  • “停止下载”:下载过程中停止下载任务。

点击"离线数据下载"—>"开始下载"。

图片

下载过程中会有“进度条”提供进度:

图片

QTYX的工程下路径DataFiles/stock_history用于存储股票数据文件,每个股票一个csv文件。

我们可以双击自选股票池个股名称查看行情数据。

图片

数据内容包含收盘价、开盘价、最高价、最低价、成交量外,还包含了涨跌
幅、换手率、总市值等等,还是比较丰富的。

图片

下载完成后在“日志区”会统计下载的情况。日志上显示:共更新4897支股票,4897支股票增加数据,1支股票更新失败。共耗时385秒(每天花7分钟左右更新下数据,非常能接受了!)

图片

图片

如果有股票下载失败,我们等待一会再点击“开始下载”按钮进行二次下载。直到提示更新0支股票

图片

存储了全市场的股票数据之后,针对于全市场的选股和回测就可以展开了!

应对反爬
在使用过程中可能会触及网站反爬机制,我们增加“个股行情数据管理表”,表存储在QTYX\ConfigFiles\tushare_basic_info.csv中,当更新了当天的行情数据后,k_date会变成当天的日期。
每次下载时增量更新个股行情数据,这样一来,遇到网站反爬也不用担心,再次点击“开始下载”就可以补全个股数据,直到全部更新完成。

图片

数据复权处理

我们获取到的数据是除权的数据,对于像双底形态识别、跳空缺口识别这类的形态分析方法,如果使用除权的股票价格,那么会对选股的结果产生一些影响。

什么是除权和复权?除权通常是除权除息的简称。除权除息前后的股价是需要等价换算的,换算是根据“除权前后流通股股东价值不变”原理来确定的。因此除息要去除股价分红的影响。除权要去除股票数量增加的影响。
假如一只股票除息前股价5元,通告今天是股权登记日,当日每10股分红5元。那么明天为除息日,除息后的股价变为4.5元。
假如一只股票除权前股价20元,通告今天是股权登记日,公司决定每10股送10股。那么明天为除权日,股价变为10块,股本增加1倍,原来持有100股在除权日就变为200股。
这两种情况会在走势图上出现不同程度的下跌缺口,我们称为除权缺口。
除权除息会使投资者误认为是一个向下跳空缺口,如下所示:

如果根据除权的股价去计算股票涨跌幅显然是不对的,同花顺软件里面显示的是-52.49%。同样计算得到的各类指标也是毫无参考价值的。
为了使得走势图能真实反映各股价趋势,让投资者更好做出判断,除权除息后的价格就不能直接和以前的价格比,而是要经过复权处理后才有可比性。
复权处理是根据“除权前后流通股股东价值不变”原理。保持现有股价不变,调整以前的价格,就叫做前复权。
同样,保持以前的股价不变,调整除权后的股价,就叫做后复权。
如何得到复权后的股价呢?其实非常简单,无论前复权还是后复权数据,都是可以通过复权涨跌幅转换得到的。复权涨跌幅即是股票的真实涨跌幅。
比如得到了股票第一天的价格之后,通过简单的连乘计算,自然就可以计算出之后每一天的复权价,这个叫做后复权价。
同样的,知道了股票最后一天的价格,那么反向处理也就可以计算出之前每一天的价格,这个叫做前复权价。行情软件中的前后复权价格,其实也是这么算出来的。
QTYX的高速行情数据源支持股票数据的复权处理。
使用方法非常简单。点击 【选股流程】->【开始选股】->【形态驱动型选股】,会出现选股数据参数对话框,包含了【股票周期】、【股票复权】、【选股模型】等栏目。
我们根据需求在【股票复权】下拉选项中选择【不复权】、【前复权】和【后复权】中的一个即可。

想要了解代码是如何实现复权的话,可以查看QTYX/ApiData/Csvdata.py文件的load_history_st_data()函数。
不少星友会留意到有时候同一只股票,在不同的行情软件里面显示的复权价格是不一样的。这里需要和星友们说明下关于复权后股价数据不一致的原因。
数据不一致的主要原因是不同系统间采用复权方式可能不一致。比如QTYX使用的是“涨跌幅复权法”进行复权,而同花顺或者通达信等软件可能是不同的。
其实复权是非常复杂的处理,真实的情况下有分红、转增、增发、配股、可转债等非常复杂的情况。即使是专业的数据库,也都会在复权计算中出现错误。
所以大家更多还是结合自身使用的情况,去考虑复权数据的影响。比如对于形态选股而言,只要把除权缺口弥补即可,对价格的微小误差并不敏感。
如果是在回测中,则应该使用真实价格的回测模式。
比如当回测到“历史时刻1”时,使用“历史时刻1”的复权因子对之前的价格进行前复权,如果出现成交,就和真实价格撮合成交;当回测到“历史时刻2”时,“对“历史时刻2"之前的价格进行前复权。

图片

关键函数说明

图片

我们对功能相关的函数进行列举说明,大家可以找到源码进行调试和学习。

UserFrame.py_ev_click_menu_start:菜单栏->开始下载->事件触发_ev_click_menu_fresh:菜单栏->刷新文件->事件触发_ev_click_menu_compt:菜单栏->补全下载->事件触发_ev_click_menu_stop:菜单栏->停止下载->事件触发CrawlerThread:多线程回调爬虫行情数据接口
DefProgress.pyProgressBarDialog:操作进度条元素DownloadDataThread:多线程更新进度条

HistoryOCHLV.py:爬虫获取网易财经数据驱动

DatHandle.pyday_to_qfq:前复权处理
day_to_hfq:后复权处理

图片

总结

图片

为了加快A股股票数据的下载进度,我们用了多线程爬虫的方式,然后保存在本地使用。这个功能非常关键,为全市场的选股比如双底形态、均线粘合突破、RPS强势个股、走势线性回归等打下基础!


另外,我们长期维护这个数据源,当数据服务器出现问题的时候,我们会采用替代方案修复接口

说明

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

知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值