python数据分析-绘制股票k线数据
天地感,而万物化生;圣人感人心,而天下和平。
前言
前文已经讲述了如何根据 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
,欢迎大家的持续关注。
转载自:https://juejin.cn/post/7061090235228094477