本篇是我们量化小册中的一篇(小册内容详细看上面),前面我们讲了很多内容,如何准备爬取数据,拿到数据如何清洗,如何回测,如何用策略去开仓平仓,如何可视化等等。
但是有的时候我们开了信号,但是不知道怎么可视化,比如我需要把K线,指标,成交量都画在一张图上,这样方便我们回测的时候分析,最后时机可以拖动放大,其实不难,100多行Python代码就可以轻松搞定,我们先来看一下效果:
上面的图就是茅台的股票数据图,有k线,有布林指标,有成交量,看起来还不错。怎么画的呢,其实我们前面的文章讲过一些,用python的pyecharts来画的,其实还可以画很多指标,比如cci, macd,obv 等等,今天我们就画上图这样一个简单的。
1.准备数据,数据预处理
首先你需要拿到一个股票的日线数据,当然分钟线,小时线也可以(如何免费获取股票历史数据我们前面都讲过,小册里面也有),我这边就准备了一份茅台的历史数据,长这样:
这个是标准的k线数据,开盘价,最高价,收盘价,最低价,成交量,成交额,这些数据,拿到之后我们稍微处理一下即可。
然后处理好数据之后,我们就开始计算指标,比如我们上面图里画布林指标,需要先计算一下,布林策略(我们前面详细深入的解读过这个策略,可以翻历史文章),计算布林的公式如下:
我们默认的是20个周期,然后2个标准差来计算的,布林的上轨,中轨和下轨的线。然后我们需要把数据稍微处理一下,主要是为画图喂相应的格式:
2.开始画图
我们画图有3部分组成:k线,布林指标(折线图)和成交量的柱状图,3个图合成在一起构成了上面的图。下面我们来详细说说:
1).先画k线图
pycharts图里面自带了kline的函数,可以非常方便的话出股票的k线。核心的代码如下:
调用kline函数,x轴填入我们的股票的日线k线数据的datas = df[[‘open’, ‘close’, ‘low’, ‘high’]].values.tolist() ,就是常见的open/high/low/close ,然后y轴填入日期,styleopts里面填入阳线和阴线常见的颜色即可成型。我们看一下效果:
2).添加横坐标的日期放大功能
因为我们的股票的数据周期比较长,有几年,十几年的数据。需要对时机轴进行缩小和放大的功能,这样才能方便我们观察数据,怎么添加这个功能呢,很简单,在kline()里面增加一个datazoom_opts配置,然后可以设置一下即可
我们默认是把横坐标的日期放在[80,100]的地方,看一下效果:
3). 增加布林指标
布林指标其实就是折线图,跟以前我们讲过的双均线指标一样的,只是布林分上轨,中轨,下轨线而已。我们拿一个上轨的为例说一下:
里面pyecharts 里面的line()函数,x轴喂的是我们的股票里面的日期列表,然后y轴是我们的上轨的数据,颜色设置为红色。
line_upper = draw_line(series_name="上轨", xaxis_data=data['dates'], y_axis=data['upperband'], color='red')
我们看一下效果:
其他的中轨和下轨都是类似的,我就不一一展开了,下面我们继续画成交量数据bar图。
4).成交量bar图
完成了上面的操作之后,我们还剩下一个成交量bar图,看一下核心代码:
调用pyecharts里面的bar函数,然后x轴喂入我们的股票日期数据,y轴喂入我们的成交量数据,其他的参数用默认的即可,看一下效果:
最后我们把这几个图都合成到一个图里面即可。
5).合成图
pyecharts里面有一个Grid()类可以把多个指标图合成到一起,我们看一下代码即可:
先设置一下grid()这个画布大小,我们默认用1380*600 px ,然后把kline ,布林的上轨,中轨,下轨,bar图都添加到Grid()里面即可。除了指标,我们还可以把回测的交易信号也放到图上,后面我会再写一篇详细讲一下。
好了,限于篇幅,我就不展开详细讲了,源码都在小册群里面,拿到源码自己跑一下即可。对量化有兴趣的同学可以看我们的小册,目前会员群里面已经几百个同学了,有兴趣的火速加入。
最后,小编也给大家分享一份Python学习资料和公开课,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。
点击免费领取《CSDN大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取