用mplfinance库定制A股经常使用的K线、均线图


近日须要使用 matplotlibfinance库来绘制K线图及均线,可是 finance库已经中止更新了,查询后得知 finance库已经从 matplotlib中独立出来,新库名为 mpl_finance,但此库在使用中会出现弃用警告,查询官方文档后得知由一个更新的 mplfinance库替代(注意中间没有下划线或横线!)。更新后的 mplfinance库较以往更加简单易用,增长了不少新功能(renko砖形图、volume柱形图、ohlc图等),且支持多种风格,可定制多种颜色(由于国外K线图颜色与国内相反,容易产生误导),线条(默认线条较粗,影响观感)等。鉴于目前介绍 mplfinance库的中文文档匮乏,下面介绍相关用法,以供参考。

官方文档及项目的GitHub地址:
pypi主页
GitHub项目地址
项目源码、官方文档及示例ipynb文件(已上传至百度云,方便下载,提取码:481m)python

安装mplfinance库(Windows 10)

安装mplfinance库要求pandasmatplotlibgit

pip install mplfinance --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple

导入

import mplfinance as mpf

废话很少说,直接上代码。。github

示例代码

import mplfinance as mpf
import matplotlib as mpl# 用于设置曲线参数
from cycler import cycler# 用于定制线条颜色
import pandas as pd# 导入DataFrame数据
import matplotlib.pyplot as plt


def import_csv(stock_code):
	# 导入股票数据
    df = pd.read_csv(stock_code + '.csv')
    # 格式化列名,用于以后的绘制
    df.rename(
            columns={
            'date': 'Date', 'open': 'Open', 
            'high': 'High', 'low': 'Low', 
            'close': 'Close', 'volume': 'Volume'}, 
            inplace=True)
    # 转换为日期格式
    df['Date'] = pd.to_datetime(df['Date'])
    # 将日期列做为行索引
    df.set_index(['Date'], inplace=True)
    return df

# 导入数据
symbol = 'sh600519'
period = 100
df = import_csv(symbol)[-period:]

# 设置基本参数
# type:绘制图形的类型,有candle, renko, ohlc, line等
# 此处选择candle,即K线图
# mav(moving average):均线类型,此处设置7,30,60日线
# volume:布尔类型,设置是否显示成交量,默认False
# title:设置标题
# y_label:设置纵轴主标题
# y_label_lower:设置成交量图一栏的标题
# figratio:设置图形纵横比
# figscale:设置图形尺寸(数值越大图像质量越高)
kwargs = dict(
	type='candle', 
	mav=(7, 30, 60), 
	volume=True, 
	title='\nA_stock %s candle_line' % (symbol),    
	ylabel='OHLC Candles', 
	ylabel_lower='Shares\nTraded Volume', 
	figratio=(15, 10), 
	figscale=5)

# 设置marketcolors
# up:设置K线线柱颜色,up意为收盘价大于等于开盘价
# down:与up相反,这样设置与国内K线颜色标准相符
# edge:K线线柱边缘颜色(i表明继承自up和down的颜色),下同。详见官方文档)
# wick:灯芯(上下影线)颜色
# volume:成交量直方图的颜色
# inherit:是否继承,选填
mc = mpf.make_marketcolors(
	up='red', 
	down='green', 
	edge='i', 
	wick='i', 
	volume='in', 
	inherit=True)
	
# 设置图形风格
# gridaxis:设置网格线位置
# gridstyle:设置网格线线型
# y_on_right:设置y轴位置是否在右
s = mpf.make_mpf_style(
	gridaxis='both', 
	gridstyle='-.', 
	y_on_right=False, 
	marketcolors=mc)
	
# 设置均线颜色,配色表可见下图
# 建议设置较深的颜色且与红色、绿色造成对比
# 此处设置七条均线的颜色,也可应用默认设置
mpl.rcParams['axes.prop_cycle'] = cycler(
    color=['dodgerblue', 'deeppink', 
    'navy', 'teal', 'maroon', 'darkorange', 
    'indigo'])
    
# 设置线宽
mpl.rcParams['lines.linewidth'] = .5

# 图形绘制
# show_nontrading:是否显示非交易日,默认False
# savefig:导出图片,填写文件名及后缀
mpf.plot(df, 
	**kwargs, 
	style=s, 
	show_nontrading=False,
	savefig='A_stock-%s %s_candle_line'
	 % (symbol, period) + '.jpg')
plt.show()

效果展现(此处设置了较大的图片尺寸,致使字体变小。。)

配色表图片引用自finthon.com/matplotlib-color-list/

matplotlib配色表web

总结

示例代码介绍了一些经常使用参数及配置,基本包含K线绘制的全部内容。图例等内容与matplotlib库使用方法相同,不做赘述。svg

了解更多请见网盘的example文件夹,包含官方的jupyter notebook详解。
本人第一次写csdn文章,若出现错误请多多包涵。若是有帮助就点个赞吧!字体


2020.4.9更新, 运行代码时不显示图像,在代码后加plt.show()便可(import matplotlib.pyplot as plt )。ui

推荐阅读

本人的其余有关文章,感兴趣的朋友能够看看。spa

Python绘制MACD指标图.net

Python绘制BOLL布林线指标图3d

Python绘制RSI相对强弱指标图