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 ,欢迎大家的持续关注。

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的股票数据分析绘制K线图、价格走势图、收益率计算的Python代码。 首先,我们需要安装一些必要的库: ```python pip install pandas numpy matplotlib mplfinance ``` 然后,我们需要获取股票数据。这里我们以阿里巴巴(BABA)为例,使用Yahoo Finance API来获取数据: ```python import pandas as pd import numpy as np import yfinance as yf # 获取阿里巴巴(BABA)的股票数据 baba = yf.download('BABA', start='2019-01-01', end='2021-01-01') ``` 接下来,我们可以对数据进行一些基本的处理和分析。例如,我们可以计算每天的涨跌幅和收盘价的移动平均值: ```python # 计算每天的涨跌幅 baba['Daily Return'] = baba['Adj Close'].pct_change() # 计算收盘价的5日移动平均值和30日移动平均值 baba['MA5'] = baba['Adj Close'].rolling(5).mean() baba['MA30'] = baba['Adj Close'].rolling(30).mean() ``` 然后,我们可以使用mplfinance库来绘制K线图和价格走势图: ```python import mplfinance as mpf # 绘制K线图 mpf.plot(baba, type='candle', mav=(5, 30), volume=True) # 绘制价格走势图 mpf.plot(baba['Adj Close'], type='line', mav=(5, 30)) ``` 最后,我们可以计算收益率,并打印出来: ```python # 计算收益率 cumulative_return = (1 + baba['Daily Return']).cumprod() print('Cumulative Return:', cumulative_return[-1]) ``` 完整代码如下: ```python import pandas as pd import numpy as np import yfinance as yf import mplfinance as mpf # 获取阿里巴巴(BABA)的股票数据 baba = yf.download('BABA', start='2019-01-01', end='2021-01-01') # 计算每天的涨跌幅 baba['Daily Return'] = baba['Adj Close'].pct_change() # 计算收盘价的5日移动平均值和30日移动平均值 baba['MA5'] = baba['Adj Close'].rolling(5).mean() baba['MA30'] = baba['Adj Close'].rolling(30).mean() # 绘制K线图 mpf.plot(baba, type='candle', mav=(5, 30), volume=True) # 绘制价格走势图 mpf.plot(baba['Adj Close'], type='line', mav=(5, 30)) # 计算收益率 cumulative_return = (1 + baba['Daily Return']).cumprod() print('Cumulative Return:', cumulative_return[-1]) ``` 这个代码可以直接运行,会输出阿里巴巴股票的K线图、价格走势图和累计收益率。当然,你也可以将代码中的阿里巴巴股票替换成其他股票,进行相应的数据分析和绘图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值