分享

Python数据分析之mplfinance模块简明教程

 易禅浮屠 2022-04-02
阅读次数: 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() #开始绘图

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多