python数据分析-绘制股票k线数据

4,761 阅读3分钟

「这是我参与 2022 首次更文挑战的第 19 天,活动详情查看:2022 首次更文挑战

天地感,而万物化生;圣人感人心,而天下和平。

前言

前文已经讲述了如何根据 k 线数据进行绘制图形并创建价托建模,今天就结合 talib 类库强大的金融计算功能,介绍常见的技术指标计算方法,最终使用 matplotlib 绘图。

talib api

在绘图之前,需要先进行数据的计算,之前已经使用 k 线数据进行了均线计算,本文使用 k 线数据计算 macd 、kdj 、rsi 、boll 数据,以下仅作为数据绘图进行说明,后续会根据相关的指标进行建模,选择股票。

k线图

k 线图的绘制采用 mplfinance 进行绘制股票数据的k线图:

macd

macd 是股票技术分析中常用的手段,在买入和卖出股票时具有参考意义。macd 传入的数据是股票的收盘价数据,其快中慢线的参数数据分别 9、12、26 天。

# 计算 macd 数据,分别传入快中慢三个周期数据
# talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
data["macd"], data["macd_signal"], data["macd_hist"] =
talib.MACD(data['Close'], fastperiod=12, slowperiod=26,signalperiod=9)

kdj

kdj 同样是股票技术分析的常用手段,只不过 kdj 的反映比 macd 要更灵敏一些。kdj 传入的数据也是收盘价数据,其参数数据分别为 9 、3、3.

# KDJ 值对应的函数是 STOCH
data['slowk'], data['slowd'] = talib.STOCH(
data['High'].values,data['Low'].values,data['Close'].values,
fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)
# 求出J值,J = (3*K)-(2*D)
data['slowj'] = list(map(lambda x, y: 3 * x - 2 * y, data['slowk'], data['slowd']))

rsi 和 boll

强弱指标 rsi 和 boll 布林线传入的参数都是收盘价,强弱指标的数据的计算周期为 14 天,布林线传入的周期为 5、2、2。

# 计算 rsi 相对强弱指数
data["rsi"] = talib.RSI(data["Close"], timeperiod=14)
# 计算 boll 线数据
upper, middle, lower = talib.BBANDS(data["Close"], timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

数据绘图

在数据绘图部分,分为蜡烛图部分、成交量数据、以及针对 k 线的技术分析图,需要将数据合并到一张图进行展示,这就用到了图像的合并展示,使用 add_axes 进行合并展示: 绘制指标的代码如下图所示,可以参照股票软件的图形进行对比,其形态和数据指标具有很好的契合度。

最终展示的效果如下图所示:

总结

本文结合 talib 和 matplotlib 两个类库实现了股票走势图的数据计算和图形展示,学习到了 plot 函数的使用和图形的布局。在后续的文章中会介绍如何使用 macd 和 kdj 两个指标进行选取金叉和死叉的股票,相关的图形展示代码已经上传至 github ,欢迎大家的持续关注。