Project Icon

mplfinance

Python金融数据可视化库

mplfinance是一个基于matplotlib的Python库,用于金融数据可视化和分析。它提供简洁API,可创建蜡烛图、OHLC图、线图等多种金融图表。支持日线和分钟线数据,可添加移动平均线、成交量等技术指标,并支持图表样式自定义。与Pandas数据框架兼容,适合金融数据探索和分析。

mplfinance

用于金融数据可视化和视觉分析的matplotlib工具

安装

pip install --upgrade mplfinance

最新发布信息

历史发布信息


目录和教程


新API

这个仓库 matplotlib/mplfinance 包含了一个新的 matplotlib finance API,使创建金融图表变得更加容易。它可以很好地与 Pandas DataFrame 对象接口。

更重要的是,新API自动完成了用户之前必须通过旧API"手动"完成的额外matplotlib工作。 (旧API仍然可以在此包中使用;见下文)。

导入新API的常规方式如下:

    import mplfinance as mpf

最常见的用法是调用

    mpf.plot(data)

其中 data 是一个包含开盘、最高、最低和收盘数据的 Pandas DataFrame 对象,带有 Pandas DatetimeIndex

关于如何调用新API的详细信息可以在下面的**基本用法**部分找到,也可以在 examples 文件夹中的jupyter笔记本中找到。

我很想听听你对新 mplfinance 的看法,以及你可能有的任何改进建议。你可以通过 dgoldfarb.github@gmail.com 联系我,或者,如果你愿意,可以在我们的 issues页面 上提供反馈或提出问题。


基本用法

从包含OHLC数据的Pandas DataFrame开始。例如,

import pandas as pd
daily = pd.read_csv('examples/data/SP500_NOV2019_Hist.csv',index_col=0,parse_dates=True)
daily.index.name = 'Date'
daily.shape
daily.head(3)
daily.tail(3)
(20, 5)
OpenHighLowCloseVolume
Date
2019-11-013050.723066.953050.723066.91510301237
2019-11-043078.963085.203074.873078.27524848878
2019-11-053080.803083.953072.153074.62585634570

...

OpenHighLowCloseVolume
Date
2019-11-263134.853142.693131.003140.52986041660
2019-11-273145.493154.263143.413153.63421853938
2019-11-293147.183150.303139.343140.98286602291

导入mplfinance后,绘制OHLC数据就像在dataframe上调用 mpf.plot() 一样简单

import mplfinance as mpf
mpf.plot(daily)

png


如上所示,默认图表类型是 'ohlc'。其他图表类型可以通过关键字参数 type 指定,例如, type='candle', type='line', type='renko', 或 type='pnf'

mpf.plot(daily,type='candle')

png

mpf.plot(daily,type='line')

png

year = pd.read_csv('examples/data/SPY_20110701_20120630_Bollinger.csv',index_col=0,parse_dates=True)
year.index.name = 'Date'
mpf.plot(year,type='renko')

png

mpf.plot(year,type='pnf')

png



我们还可以使用mav关键字绘制移动平均线

  • 使用标量表示单个移动平均线
  • 使用元组或整数列表表示多个移动平均线
mpf.plot(daily,type='ohlc',mav=4)

png

mpf.plot(daily,type='candle',mav=(3,6,9))

png


我们还可以显示成交量

mpf.plot(daily,type='candle',mav=(3,6,9),volume=True)

png

请注意,在上面的图表中,即使有些日子没有交易,x坐标轴上也没有空白。非交易日根本不显示(因为那些日子没有价格数据)。

  • 然而,有时人们希望看到这些间隔,这样可以一目了然地知道周末和节假日的位置。

  • 可以使用**show_nontrading**关键字显示非交易日。

    • 注意,出于这些目的,非交易时间段是指在数据中完全没有表示的时间段(这些日期或时间完全没有对应的行)。这是因为,从交易所或其他市场数据源获取数据时,数据通常不会包含非交易日(如周末和节假日)的行。因此...
    • **show_nontrading=True**将显示数据中第一个时间戳和最后一个时间戳之间的所有日期(所有时间间隔)(无论这些日期或时间是否在数据中存在实际的行)。
    • show_nontrading=False(默认值)将只显示数据中实际存在行的日期(或时间)。(这意味着,如果DataFrame中存在行但只包含**NaN值,即使设置show_nontrading=False**,这些行仍会出现在图表中)
  • 例如,在下面的图表中,你可以很容易地看到周末,以及11月28日星期四美国感恩节假期的空白。

mpf.plot(daily,type='candle',mav=(3,6,9),volume=True,show_nontrading=True)

png


我们还可以绘制日内数据:

intraday = pd.read_csv('examples/data/SP500_NOV2019_IDay.csv',index_col=0,parse_dates=True)
intraday = intraday.drop('Volume',axis=1) # 无论如何这个日内数据集的成交量都是零
intraday.index.name = 'Date'
intraday.shape
intraday.head(3)
intraday.tail(3)
(1563, 4)
开盘价收盘价最高价最低价
日期
2019-11-05 09:30:003080.803080.493081.473080.30
2019-11-05 09:31:003080.333079.363080.333079.15
2019-11-05 09:32:003079.433079.683080.463079.43

...

开盘价收盘价最高价最低价
日期
2019-11-08 15:57:003090.733090.703091.023090.52
2019-11-08 15:58:003090.733091.043091.133090.58
2019-11-08 15:59:003091.163092.913092.913090.96

上面的数据框包含2019年11月5日、6日、7日和8日标准普尔500股指的1分钟间隔开盘价、最高价、最低价、收盘价数据。让我们看看11月6日交易的最后一小时,使用7分钟和12分钟移动平均线。

iday = intraday.loc['2019-11-06 15:00':'2019-11-06 16:00',:]
mpf.plot(iday,type='candle',mav=(7,12))

png

mav整数的"时间解释"取决于数据的频率,因为mav整数是用于移动平均线的数据点数(而不是天数或分钟数等)。注意上面对于日内数据,x轴自动显示时间而不是日期。下面我们看到,如果日内数据跨越两个(或更多)交易日,x轴会自动同时显示时间和日期

iday = intraday.loc['2019-11-05':'2019-11-06',:]
mpf.plot(iday,type='candle')

png


在下面的图中,我们可以看到当对跨越两天或更多天的日内数据显示非交易时间段时,设置**show_nontrading=True**的日内图表是什么样子。

mpf.plot(iday,type='candle',show_nontrading=True)

png


下图:4天的日内数据,设置show_nontrading=True

mpf.plot(intraday,type='ohlc',show_nontrading=True)

png


下图:相同的4天日内数据,show_nontrading默认为False

mpf.plot(intraday,type='line') 

png


下图:跨越年份边界的日线数据会自动在日期格式中添加年份

df = pd.read_csv('examples/data/yahoofinance-SPY-20080101-20180101.csv',index_col=0,parse_dates=True)
df.shape
df.head(3)
df.tail(3)
(2519, 6)
开盘价最高价最低价收盘价调整后收盘价成交量
日期
2007-12-31147.100006147.610001146.059998146.210007118.624741108126800
2008-01-02146.529999146.990005143.880005144.929993117.586205204935600
2008-01-03144.910004145.490005144.070007144.860001117.529449125133300

...

开盘价最高价最低价收盘价调整后收盘价成交量
日期
2017-12-27267.380005267.730011267.010010267.320007267.32000757751000
2017-12-28267.890015267.920013267.450012267.869995267.86999545116100
2017-12-29268.529999268.549988266.640015266.859985266.85998596007400
mpf.plot(df[700:850],type='bars',volume=True,mav=(20,40))

png

有关使用mplfinance的更多示例,请参阅**examples**目录中的Jupyter笔记本。


一些历史

我叫Daniel Goldfarb。2019年11月,我成为了matplotlib/mpl-finance的维护者。该模块正在被弃用,取而代之的是当前的matplotlib/mplfinance。旧的mpl-finance包含从已弃用的matplotlib.finance模块中提取的代码以及一些使用示例。在过去的三年里,它基本上没有得到维护。

我打算很快将matplotlib/mpl-finance存档,并将所有人引导至matplotlib/mplfinance。更名的主要原因是为了避免连字符和下划线的混淆:之前,mpl-finance安装时使用连字符,但导入时使用下划线mpl_finance。今后,安装和导入都将简单地使用mplfinance


旧API的可用性

安装了这个新的mplfinance包后,除了新API之外,用户仍然可以访问旧API。旧API可能有一天会被移除,但在可预见的未来,我们会保留它...至少直到我们非常确信旧API的用户可以用新API完成相同的任务。

要在安装了新的mplfinance包后访问旧API,请将旧的导入语句

从:

    from mpl_finance import <方法>

改为:

    from mplfinance.original_flavor import <方法>

其中<方法>表示您要导入的方法,例如:

    from mplfinance.original_flavor import candlestick_ohlc
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号