本文将围绕“股票数据读取与K线图绘制”展开综合案例实战,带你掌握金融数据分析与可视化的核心技能。我们将学习如何通过Python工具从网络API获取股票历史数据,并清洗整理成结构化格式。重点演示如何绘制专业的K线图,结合成交量、均线等指标,直观展现股票价格趋势、波动及市场情绪。通过案例实操,你将深入理解K线图的开盘价、收盘价、最高最低价等要素,同时提升数据可视化在真实业务场景中的应用能力,为投资分析或量化交易打下基础。

1.初步尝试——股票数据读取与初步尝试

(1)股票数据库:Tushare库的安装与使用

data为交易日期;open为开盘价;close为收盘价;high为最高价;low为最低价;volume为成交量;code为股票代码。

(2)绘制股价走势图

已经有了股价数据后,我们可以通过可视化的方式将其展示出来,这里我们首先利用set_index()函数将日期设置为行索引,这样方便等会直接用pandas库进行绘图,代码如下:

通过pandas绘图的相关知识点来进行图形绘制,代码如下。因为在pandas库中plot()函数默认绘制的是折线图,所以直接写plot()即可,不需要传入kind参数。

此外在金融领域,通常用收盘价作为当天价格来绘制股价走势图,因此这里选择的是close这一列。

如果想给图片加一个标题,在pandas库中使用可以在plot()可以在里面传入一个title参数,代码如下,注意因为标题是中文内容,所以加入两行代码防止中文乱码。

上面使用的是pandas库中的plot()函数,pandas库其实是集成了Matplotlib库的一些功能,如果有的读者想直接用Matplotlib库进行股价走势画图,可以采用如下代码:

2.综合实战——股票K线图绘制

(1)股票K线图基本知识

一个实际中的股票K线图如下图所示(这个是“贵州茅台”股票的日线级别的K线图):

没有接触过股票的读者可能会被里面的各个柱状图和折线图搞得一头雾水,而这些图形其实都是通过一些很基础的数据绘制而成,这一节便主要来科普下股票K线图的基本知识。

这些柱状图,通常称之为“K线图”,是由股票的四个价格来绘制的:开盘价(当天上午9点半开始交易时的价格)、收盘价(当天下午3点结束交易时的价格)、最高价(当天股价波动中的最高价)、最低价(当天股价波动中的最低价),简称“高、开、低、收”四个价格。

如下图所示,根据这四个价格便可以绘制出红色和绿色的K线图,因为形似蜡烛,因此也常被称之为蜡烛图。K线图分为两种,如果当天的收盘价高于开盘价,也就是说当天的价格上涨,则称之为阳线,通常绘制成红色;反之如果当天的收盘价低于开盘价,也就是说当天的价格下跌,则称之为阴线,通常绘制成绿色。补充说一句,在美国,反而是红色代表跌,绿色代表涨。

这里再解释下均线图,也就是那些折线图的绘制原理。均线分为5日均线(通常称之为MA5)、10日均线(通常称之为MA10)、20日均线(通常称之为MA20)等,其原理就是将股价的收盘价求均值,例如5日均线就是最近连续5个交易日收盘价之和的平均值,具体的计算公式如下,其中Close1为当天的收盘价,Close2为前一天的收盘价,其余依次类推。

MA5 = (Close1 + Close2 + Close3 + Close4 + Close5)/5

把每个5日均线的值连成一条平滑的曲线就是5日均线图了,同理10日均线图和20日均线图也是类似的原理,这些均线图也就是我们在这一小节最开始看到图中的那些折线图。

了解了股票K线图的基本知识后,下面我们就来进行K线图的绘制工作。

(2)绘制股票K线图

1.安装绘制K线图的相关库:mpl_finance库

2.引入绘图相关库

3. 通过Tushare库获取股票基本数据

4.日期格式调整及表格转换

5.绘制K线图

candlestick_ochl()函数的参数:

    ax:绘图Axes的实例,也就是画布中的子图;

    df_arr:股价历史数据;

    width:图像中红绿矩形的宽度;

    colorup:收盘价格大于开盘价格时矩形的颜色;

    colordown:收盘价格低于开盘价格时矩形的颜色;

    alpha:矩形的颜色的透明度;

6.绘制K线图及均线图

有了K线图之后,我们再来补上均线图,这里我们主要补上5日均线和10日均线图,首先我们通过如下代码构造5日均线和10日均线数据:

7.绘制股票K线图、均线图、成交量柱状图

其中第1-2行代码绘制多图相关知识点先构造一个画布和两个子图,这里同时设置sharex参数为True,这样两张子图就可以共用一个坐标轴了;第4-13行绘制第一张子图,其中在子图中设置标题或者坐标轴标题得使用set_title()、set_ylabel()、set_xlabel()这样的函数;第15-20行绘制第二张子图:成交量图,其中df_arr[:,0]表示二维数组的第1列,也即日期那列,df_arr[:,5]表示二维数组的第6列,也即成交量那列数据,然后通过bar()函数绘制成柱状图。

8.结果对比

我们可以和新浪财经网上的实际图像对比一下,如下图所示,发现通过Python绘制的K线图相关图片和网上的图片基本一致。

Logo

更多推荐