栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

第一篇《管理概率==理性交易》
第二篇《线性回归拟合股价沉浮》
第三篇《最大回撤评价策略风险》
第四篇《寻找最优化策略参数》
第五篇《标记A股市场涨跌周期》
第六篇《Tushare Pro接口介绍》
第七篇《装饰器计算代码时间》
第八篇《矢量化计算KDJ指标》
第九篇《移植量化交易小工具》
第十篇《统计学预测随机漫步》
第十一篇《TA-Lib库扩展介绍》
第十二篇《股票分笔数据跨周期处理》
第十三篇《TA-Lib库量价指标分析》
第十四篇《ATR在仓位管理的应用》
第十五篇《扒一扒量化回测常见陷阱》

为了将专栏中分散的知识点贯穿起来,笔者在专栏的末尾小节《制作自己的量化交易工具》中分享了早期制作的一个简易版量化交易小工具,希望大家能够通过调试代码的方式掌握相关的知识。
目前在场外篇第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文件加载,新的数据会同步到文件中哈!!

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

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号