zoukankan      html  css  js  c++  java
  • 用mplfinance库定制A股常用的K线、均线图

    转载:https://blog.csdn.net/qq_41437512/article/details/105319421

    安装`mplfinance`库(Windows 10)
    导入
    示例代码
    总结
    推荐阅读

    近日需要使用 matplotlib的 finance库来绘制K线图及均线,但是 finance库已经停止更新了,查询后得知 finance库已经从 matplotlib中独立出来,新库名为 mpl_finance,但此库在使用中会出现弃用警告,查询官方文档后得知由一个更新的 mplfinance库替代(注意中间没有下划线或横线!)。更新后的 mplfinance库较以往更加简单易用,增加了很多新功能(renko砖形图、volume柱形图、ohlc图等),且支持多种风格,可定制多种颜色(因为国外K线图颜色与国内相反,容易产生误导),线条(默认线条较粗,影响观感)等。鉴于目前介绍 mplfinance库的中文文档匮乏,下面介绍相关用法,以供参考。
    官方文档及项目的GitHub地址:
    pypi主页
    GitHub项目地址
    项目源码、官方文档及示例ipynb文件(已上传至百度云,方便下载,提取码:481m)

    安装mplfinance库(Windows 10)
    安装mplfinance库要求pandas和matplotlib

    pip install mplfinance --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple
    1
    导入
    import mplfinance as mpf
    1
    废话不多说,直接上代码。。

    示例代码
    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=' A_stock %s candle_line' % (symbol),
    ylabel='OHLC Candles',
    ylabel_lower='Shares Traded 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/

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

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

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

    推荐阅读
    本人的其他有关文章,感兴趣的朋友可以看看。

    Python绘制MACD指标图

    Python绘制BOLL布林线指标图

    Python绘制RSI相对强弱指标图

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/GavinSimons/p/14642728.html
Copyright © 2011-2022 走看看