失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python通过新 mplfinance 模块绘制 k 线图

python通过新 mplfinance 模块绘制 k 线图

时间:2022-07-04 23:46:02

相关推荐

python通过新 mplfinance 模块绘制 k 线图

python通过新 mplfinance 模块绘制 k 线图

最近绘制 k 线图发现mplfinancematplotlib中独立出来了,作为一个单独的模块,并且可以直接使用PandasDataFrames。这里简单记录一下如何用新的mplfinance绘制一个 k 线图。

只需要查看代码的,请滑到最后。

环境安装

数据使用的是Tushare提供的接口,这个接口也更新到了 pro版本,需要注册后使用。这里需要注意的是,调用不同的数据需要不同的积分,增加积分可以通过邀请新用户。注册链接

安装 tushare

pip install tushare

安装mplfinance

pip install mplfinance

如果环境里没有pandas的,需要把它也安装一下,安装指令:pip install pandas

绘制 k 线图

1、导入包

import tushare as tsimport mplfinance as mpfimport pandas as pd

2、从Tushare 获取数据

由于tushare升级了,貌似现在只能调用 pro 接口,调用的时候需要填写自己的token,这个需要登陆它的官网,在个人中心查看。

# 这里填写自己的 tokenpro = ts.pro_api("xxxx")# 这里获取的是日数据,股票代码:600519.SH, 开始日期:2001,结束日期:2011df = pro.daily(ts_code='600519.SH', start_date='2001', end_date='2011')

这里我调用的是日数据,还可以调用周数据pro.weekly,月数据pro.daily。更多的数据接口可以上Tushare官网查看。

接口参数

3、清洗数据

Tushare获取的数据有很多,有股票代码、交易日期、开盘价、收盘价和涨跌幅等等,那我们绘制 k 线图需要哪些数据呢?mplfinance文档中已经说明了:

wheredatais aPandas DataFrameobject containing Open, High, Low and Close data, with a PandasDatetimeIndex.

数据必须是Pandas DataFrame格式,必须包含开盘价最高价最低价收盘价需要使用DatetimeIndex作为索引。

虽然说得很简单,但字字如金,每个字都很重要,因为我就在这里被困了一晚上。🤣

代码:

# 删除 tushare 提供的不需要的数据,保留 Date, Open, High, Low, Close, Volume# 保留Volume是可选的,保留了就可以在后面画图成交量的图df = df.drop(labels=["ts_code", "pct_chg", "pre_close", "amount", "change"], axis=1)# 对数据进行改名,mplfinance名字必须是Date, Open, High, Low, Close, Volumedf.rename(columns={'trade_date':'Date', 'open':'Open', 'high':'High', 'low':'Low', 'close':'Close', 'vol':'Volume'}, inplace=True)# 从 tushre下载的数据是按时间倒叙的,也就是从现在到过去的数据,这里把它改成从过去到现在的数据df = df[::-1]# 把 Date 这列数据设置成索引,必须的,不设置会报错。df.set_index(["Date"], inplace=True)# 把 Date这列数据装换成datetime 格式,也是 mplfinance 要求的df.index = pd.to_datetime(df.index)

4、绘图

mpl.plot(df, type='candle',mav=(3,6,9), volume=True)

type='candle'是绘制 k 线图,也可以指定其他的图,例如:type='ohlc',type='line',type='renko', 或type='pnf,默认是ohlc

mav是设置均线,就是下图中的三条不同颜色的线;volume是成交量图,就是图下方的柱状图,如果数据中没有Volume则无法绘制此图。

完整代码

运行时需要填写自己的 token

# -*- coding: utf-8 -*-import tushare as tsimport pandas as pdimport mplfinance as mpfdef main():# 这里需要填写自己的 tokenpro = ts.pro_api("xxxx")df = pro.daily(ts_code='600519.SH', start_date='2001', end_date='2011')# 删除 tushare 提供的不需要的数据,保留 Date, Open, High, Low, Close, Volumedf = df.drop(labels=["ts_code", "pct_chg", "pre_close", "amount", "change"], axis=1)# 对数据进行改名,mplfinance有要求df.rename(columns={'trade_date': 'Date', 'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'vol': 'Volume'},inplace=True)# 转换时间序列df = df[::-1]# 将Date设置为索引,并转换为 datetime 格式df.set_index(["Date"], inplace=True)df.index = pd.to_datetime(df.index)mpf.plot(df, type='candle', mav=(3, 6, 9), volume=True)if __name__ == '__main__':main()

colab在线运行

参考资料

mplfinance

Tushare

如果觉得《python通过新 mplfinance 模块绘制 k 线图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。