查看原文
其他

Python量化第一步,画股票K线、双均线图

The following article is from 菜鸟学Python Author 菜哥

大家好,欢迎来到 Crossin的编程教室 !

量化是一个庞大的学科体系,华尔街早在很多年前就有了一帮精英在研究,集合了数学,统计学,计算机和金融几大学科的知识,其中Python目前是量化领域最通用的编程语言。

我们平时一些券商或者是同花顺软件上看股票数据,都是看到的K线数据,其实我们也是可以自己用python代码来可视化。

今天就浅谈一下,带大家用Python可视化的方法来分析股票数据

我们用五粮液100天的K线数据来演示:

很多教程选择matplot这个库来可视化的,但是这个库有字体乱码的问题,而且颜色也不是很好看,这次我们选择pyecharts这个库来进行可视化。

1.安装pyechats库

Pyecharts 是一个用于创建交互式图表和可视化的Python库。它是基于百度的 ECharts JavaScript 库的一个Python封装。ECharts 是一个广泛使用的、功能丰富的图表库,能够生成各种类型的图表,例如折线图、柱状图、饼图、散点图、地图、K线图等。

用 pip 命令即可:
pip install pyecharts

2.画出五粮液股票的K线图

我们导入pyecharts这个库,并且导入kline ,然后导入pandas开始读取数据 ,然后开始画图。

因为渲染的时候x轴必须是一个列表,所以需要线把我们的data这个dataframe数据提取交易日期这一列,然后转为列表

同样渲染的时候y轴是一个嵌套列表,包含了每一天的开盘/收盘/最高价/最低价,所以我们得到的ohlc就是这样长这样的:

[[165.45, 165.14, 163.88, 165.76], [165.2, 165.46, 165.0, 166.66] ...

然后我们创建Kline这个对象即K线图,对它进行配置,Kline()Pyecharts中用于生成K线图的类。添加x轴和y轴的数据(上面已经准备好了这2个数据)

kline.set_global_opts 是开始配置K线图一些全局配置:

  • xaxis_opts=opts.AxisOpts(is_scale=True): 设置x轴的配置。is_scale=True 表示x轴将自动缩放,以适应数据的范围。

  • yaxis_opts=opts.AxisOpts(...): 设置y轴的配置。其中包括使y轴自动缩放,以及定义分割区域的样式。splitarea_opts用于设置y轴分割区域的显示(如显示网格),areastyle_opts定义了区域的样式(如透明度)。

  • title_opts=opts.TitleOpts(title="五粮液100天K线图"): 设置图表的标题。

这些设置帮助自定义图表的外观和行为,例如调整轴的缩放、样式和图表的标题。

最后我们会把生成的K线图保存到一个wuliangye_kline.html里面,我们看一下效果:

是不是有点小成就感,竟然可以手动画出了股票的K线图,而且因为是html类型,我们可以在网页上鼠标点击任何一根k线都可以看到具体的数据。不要急,我们后面还要继续增加一些内容。

3.在图上标出最高价和最低价

上面的图只是开胃菜,图还是很单调的,我们需要增加最高价和最低价

然后我们在kline配置y轴的时候,增加一个markpoint_opts,里面设置一下最高价和最低价配置即可,我们看一下效果图:

4.在图上画出10日MA均线

我们需要在上图的继续继续增加内容,我们要增加一根10日的均线,大家还记得前面的基础的pandas部分给大家讲过如何计算均线,其实就是用rolling函数()来计算即可

首先我们计算一下ma10的均线,因为是10日的均线,所以第一日到第九日都是空的都是NaN, 从第10日开始才有值,

这行代码
ma10 = data['收盘价'].rolling(window=10).mean().dropna()

输出的结果:

9 169.08110 170.51711 171.75112 172.33213 173.251

就是从第10天开始的。

然后我们需要创建一个line对象(10均线),然后配置一下x轴和y轴的内容 ,接着我们需要把K线图和10日均线图叠加。

kline里的overlap函数用于组合多个图表,使得它们可以在同一个画布上显示,我们将MA10的折线图(line_ma10)添加到K线图(kline)上。然后初始化一个Grid布局,这是Pyecharts用于组合多个图表的一个布局容器。

Grid可以让你在一个网页上布局多个图表,并且可以调整每个图表的位置和大小。

init_opts参数用于初始化设置,其中width和height用于指定整个Grid布局的宽度和高度。在这里,我们将整个网格的大小设置为1400像素宽和800像素高。

最后grid.render()函数,它将渲染整个网格布局(包括所有添加的图表)到一个HTML文件中。我们看一下效果图:

我们可以看到整个K线图上加了一个MA10均线,而且当鼠标停在上面的时候,会精准的显示开盘价,收盘价,最低价,最高价和MA10均线值。

5.在图上画出10日,20 日 双MA均线

同理我们增加一个ma20的line对象,然后跟上面的图形组合,看一下代码:

基本设置跟前面的ma10一样,只是改了一下参数而已,我们看一下效果图吧:

然后我们跟实际的某券商股票软件上的K线来对比一下,看看是否一样:

显示的是一样的,可视化可以帮我们非常直观的观察你的策略和信号,是量化非常重要的一步。

经常有人看到我们的案例文章后会问:很多软件都有可视化,为啥我们还要自己动手做。这个问题就好像很多饭店都有菜,为啥你还要自己做饭。

自己动手画自己的策略,可以更深刻的理解自己的策略,而且很多策略和参数都是你自己定制的,股票软件上不一定有,所以掌握这个技能可以帮你更好的理解量化。

作者:菜哥

来源:菜鸟学Python


Crossin的新书《码上行动:用ChatGPT学会Python编程》已经上市了。

本书创新地以ChatGPT作为辅助学习工具,系统全面地讲解了零基础读者如何快速有效地学习Python编程技能。
书中包含Python语言基础、文件操作和爬虫等进阶内容,并讲解了ChatGPT的功能及在编程中的应用,包括如何利用它进行辅助开发和在程序中接入ChatGPT。
本书内容系统全面,案例丰富,讲解浅显易懂,适合Python零基础入门的读者学习。

读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。
 Crossin的其他书籍:
点此查看《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》介绍

点此查看《码上行动:零基础学会Python编程》介绍

感谢转发点赞的各位~


_往期文章推荐_

一个能帮你看懂程序的代码可视化工具
陈皓|编程能力与编程年龄



【教程】: python

【答疑】: 666

更多资源请在公众号内搜索或留言

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存