阅读次数:
1,506
mplfinance模块概述
mplfinance是专用于金融数据的可视化分析模块,是基于matplotlib库的实用模块。在使用前必须确保已经安装了matplotlib和pandas。 mplfinance使用非常方便,绘制个均线什么的一个关键字参数解决,剔除停盘时间段的空白不用你想它已经自动做了,还有时间坐标都是自动完成的,比如显示的是当天k线就只显示时间,跨天就自动带上日期,跨年就自动带上年份,哇,mplfinance在使用上不要太方便、太人性化!
从2020年开始python中调用原来的mpl_finance已经出现警告:
=================================================================
WARNING: `mpl_finance` is deprecated:
Please use `mplfinance` instead (no hyphen, no underscore).
To install: `pip install –upgrade mplfinance`
For more information, see: https:///project/mplfinance/
=================================================================
从官方介绍的历史版本看mplfinance是从0.11.x版2019年12月20日开始更新频繁的,之前的0.10.x版最近的更新在2016年,那么说这个新模块的取代刚刚不到半年的时间,从论坛上搜索资料还比较少。 mplfinance与mpl_finance功能相近但是区别还是很大的,之前的candlestick2_ochl()方法已经没有了,取而代之的是plot和make_addplot,这两个方法的参数也更是不同,新模块的plot可以直接使用pandas数据格式(旧模块mpl_finanace只支持numpy数据交互),而且可以自动完成额外的matplotlib工作(旧模块只能手动完成,而旧模块的API在这个包中仍然可用;),总体来说新模块mplfinance使用更便捷。
mplfinance的安装
pip3 install mplfinance
mplfinance的引入
import mplfinance as mpf
注意:需要同时引入pandas和matplotlib,方法同上
mpf.plot()函数的使用
import pandas as pd import matplotlib as plt import mplfinance as mpf data = pd.read_csv('601988.csv’,parse_dates=['Date’],index_col=’Date’).sort_index()#从文件读取并创建DataFrame对象mpf.plot(data)
这里需要强调的是参数data的类型,data必须是pandas.DataFrame数据类型,对所包含的列也有要求,必须包含’open’, 'high’, 'low’ 和 'close’ 数据,而且行索引必须是pandas.DatetimeIndex,行索引的名称必须是’date',此外还有一列是’volume’,这一列不是必须的,可选项(前提是你不想绘制成交量的话)。例子中601988.csv的格式如下:
修改mpf.plot()函数的绘图类型
mpf.plot(data,type=’candle’)
通过参数type修改绘图类型,默认是ohlc,可修改为:type='candle’ 或者 type='line’,这个想必不用解释直接上结果:
mpf.plot(data,type=’line’,linecolor=’g’)
这里可以通过linecolor关键字参数设置线的颜色,如:mpf.plot(data,type='line’, linecolor='g’),linecolor参数仅仅在type='line’时起作用。输出:
plot()函数中国绘制均线
mpf.plot(data,type=’candle’,mav=(5,10,20))
关键字参数 mav=(5, 20, 20),多条均线使用元组,只绘制一条均线,可以mav=10;输出结果
plot()函数中国绘制成交量
关键字参数, volume=True
mpf.plot(data,type=’candle’,mav=(5,10,20),volume=True)
plot()函数自动剔除非交易日空白
关键字参数show_nontrading=False,其实show_nontrading默认就是False,官方文档中提到,可能有人想看到停盘的时间段,那就show_nontrading=True; 这里找了一段有停盘的数据展示下show_nontrading=True的情况(上面的数据没有停盘时间);False是默认,与上面展示的图形无疑,这里就不展示了
make_addplot的基本用法
在金融数据分析中,我们要通过数据可视化展示的不仅是’open’, 'high’, 'low’, 'close’和最常见'ma’,还有一些其他分析数据,那么就要用到make_addplot()方法了,make_addplot可以接受一个pandas、numpy、array以及list格式的数据(tuple不可以),和kwargs参数;需要注意的是:传递给make_addplot的数据参数必须与将来画图传递给plot的数据参数行数相同, kwargs参数将全部传递到polt方法中。下面的例子中,我们计算并绘制bool(布林带)线。
import mplfinance as mfp #引入mplfinance包 import tushare as ts #引入tushare包,该包用来获取股票历史数据 import pandas as pd #引入pandas包 import numpy as np #引入numpy包 import matplotlib.pyplot as plt #引入matplotlib包
data = ts.get_k_data('601988′,start=’1999-01-01’) #获取股票历史数据,存入DataFrame对象 data.to_csv('601988.csv’) #将股票历史数据存入文件 df = pd.read_csv('601988.csv’,index_col=’date’,parse_dates=['date’])[['open’,’close’,’high’,’low’,’volume’]] #从文件读取股票的开盘价、收盘价、最高价、最低价、成交量等数据并创建DataFrame对象,把日期设置为索引 df['ma20’] = df['close’].rolling(20).mean() #计算并添加20日均值 df = df.loc['2018-01’:][:] #为直观起见,截取从2018年以后的数据 df['middleB’] = df['ma20’] #添加中轨值,取20日移动平均值 df['lowerB’] = df['ma20’] – 2np.std(df['ma20’]) #添加下轨值 df['upperB’] = df['ma20’] + 2np.std(df['ma20’]) #添加上轨值 print(df) #打印一下现在的df
add_plot = mfp.make_addplot(df[['lowerB’,’upperB’,’middleB’]]) #用make_addplot()函数添加要绘制的数据 mfp.plot(df,type=’line’,linecolor=’r’,volume=True,addplot=add_plot) #绘制图形,用addplot变量传递参数 plt.show() #开始绘图