继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python进阶量化交易专栏场外篇16-量化回测工具更新版1

袁霄
关注TA
已关注
手记 86
粉丝 1.8万
获赞 1569

欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:

为了将专栏中分散的知识点贯穿起来,笔者在专栏的末尾小节《制作自己的量化交易工具》中分享了早期制作的一个简易版量化交易小工具,希望大家能够通过调试代码的方式掌握相关的知识。
目前在场外篇第9篇中已经移植到了Python3.7x版本上,接下来我们在这个版本的基础上逐步完善这个工具,使专栏的读者不仅能够通过小工具掌握专栏的相关知识点,也能够把工具用到自己的股票量化交易中去。

我们把量化小工具的基础版本称为V0,该版本的股票行情页面中的股票名称只有4个,分别为开山股份、浙大网新、水晶光电、高鸿股份,如果同学们要添加自选股,只能在代码中添加。

图片描述

接下来我们把A股市场中全部的股票都添加到下拉框中去。此处使用Tushare Pro的stock_basic()接口,该接口获取上市的所有股票基础信息数据,包括股票代码、名称、上市日期、退市日期等。输入参数说明如下:

  • is_hs:是否沪深港通标的,N否、H沪股通、S深股通;
  • list_status:上市状态,L上市、D退市、P暂停上市;
  • exchange:交易所 SSE上交所,SZSE深交所,HKEX港交所。

注:关于输出参数大家可参照官网的介绍,此处不在赘述。

pro = ts.pro_api(token)
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
print(data.head())
"""
     ts_code  symbol  name area industry list_date
0  000001.SZ  000001  平安银行   深圳       银行  19910403
1  000002.SZ  000002   万科A   深圳     全国地产  19910129
2  000004.SZ  000004  国农科技   深圳     生物制药  19910114
3  000005.SZ  000005  世纪星源   深圳     房产服务  19901210
4  000006.SZ  000006  深振业A   深圳     区域地产  19920427
"""
print(data.tail())
"""

        ts_code  symbol  name area industry list_date
3585  603993.SH  603993  洛阳钼业   河南      小金属  20121009
3586  603996.SH  603996  中新科技   浙江     家用电器  20151222
3587  603997.SH  603997  继峰股份   浙江     汽车配件  20150302
3588  603998.SH  603998  方盛制药   湖南      中成药  20141205
3589  603999.SH  603999  读者传媒   甘肃      出版业  20151210
"""

把ts_code和name组合成字典形式后,传递给self.StNameCodedict变量,这样就把全部股票加载到ComboBox控件中,如下所示:

图片描述

下拉框中太多股票名称,一个个看过去不切实际,我们把ComboBox控件的style属性更改下,从wx.CB_READONLY变成wx.CB_SIMPLE,如下所示

style = wx.CB_READONLY|wx.CB_DROPDOWN
style = wx.CB_SIMPLE|wx.CB_DROPDOWN

更改后,我们可以在控件中自己输入股票的名称,如下所示:

图片描述

然后把DataReader接口换成daily接口,因为前者下载数据耗时太长了。更换的话需要相应地把stockName、stockTimeS、stockTimeE这三个变量的形式更换。

stockDat = web.DataReader(stockName, "yahoo", stockTimeS, stockTimeE)  

df_stockDat = pro.daily(ts_code=stockName,
                     start_date=stockTimeS.strftime('%Y%m%d'), end_date=stockTimeE.strftime('%Y%m%d'))

对了,获取到的数据别忘记规整化之后再展开后续的分析和处理。最后我们可以随意选取A股市场的数据,并且更新行情数据。

查看股票《雅本化学》的行情数据:

图片描述

查看股票《上实发展》的行情数据:

图片描述

下载的数据会以csv文件存储在本地路径的文件夹,下次会先从csv文件加载,新的数据会同步到文件中哈!!

图片描述

关于完整代码可以加入专栏交流群获取。更多的量化交易内容欢迎大家订阅专栏阅读!!

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP