mplfinance常用方法
一、主题相关
- 查看可用预设主题
mpf.available_styles()
默认的主题包括:'binance','blueskies','brasil','charles','checkers','classic','default','ibd','kenan','mike','nightclouds','sas','starsandstripes','yahoo' - 设置主题
mpf.plot(daily,**kwargs,style='classic')
- 自定义主题
#设置表示涨和跌的颜色
`mc = mpf.make_marketcolors(up='g',down='r')`
#设置自定义主题
`s = mpf.make_mpf_style(marketcolors=mc)`
#使用自定义主题
`mpf.plot(daily,**kwargs,style='classic')`
- 其他细节
除了设置涨跌颜色外,还可以设置蜡烛图的的边框、烛芯、成交量等颜色,如果想指定某个属性的颜色和涨跌颜色一致,可以将该值直接设置成i,in,inh。如果其他属性颜色属性都希望和涨跌颜色保持一致,直接设置属性inherit=True
即可
mc = mpf.make_marketcolors(up='g',down='r',
edge='lime',
wick={'up':'blue','down':'orange'},
volume='in',
ohlc='i')
s = mpf.make_mpf_style(marketcolors=mc)
- 可以结合预设主题和自定义颜色使用
# 用法1:
# Create my own `marketcolors` to use with the `nightclouds` style:
mc = mpf.make_marketcolors(up='#00ff00',down='#ff00ff',inherit=True)
# Create a new style based on `nightclouds` but with my own `marketcolors`:
s = mpf.make_mpf_style(base_mpf_style='nightclouds',marketcolors=mc)
# 用法2:
mc = mpf.make_marketcolors(base_mpf_style='nightclouds',
edge='#505050',wick='#505050',volume='silver')
# Create a style based on `seaborn` using those market colors:
s = mpf.make_mpf_style(base_mpl_style='seaborn',marketcolors=mc)
二、 坐标轴、标题、大小等设置
- 设置大小
mpf.plot(daily,figratio=(18,10),figscale=0.5)
- 坐标轴显示非交易日
mpf.plot(daily,type='candle',figscale=0.9,show_nontrading=True)
- 坐标轴文本、标题
mpf.plot(daily,type='candle',volume=True,
title='\nS&P 500, Nov 2019',
ylabel='OHLC Candles',
ylabel_lower='Shares\nTraded',
xlabel='DATE')
- 设置横坐标日期格式和旋转角度
mpf.plot(daily,figscale=0.65,datetime_format=' %A, %d-%m-%Y',xrotation=90)
- 设置线条颜色
mpf.plot(daily, type='line', linecolor='#00ff00')
- 调整版面布局
mpf.plot(daily,volume=True,figscale=0.75,mav=(3,6),tight_layout=True)
- 颜色填充
# 只给纵坐标着色
mpf.plot(daily,figscale=0.7,fill_between=dict(y1=daily['Low'].values,y2=daily['High'].values))
# 同时给横坐标和纵坐标
dates_df = pd.DataFrame(daily.index)
buy_date = pd.Timestamp('2019-11-06')
sell_date = pd.Timestamp('2019-11-19')
where_values = pd.notnull(dates_df[ (dates_df>=buy_date) & (dates_df <= sell_date) ])['Date'].values
y1values = daily['Close'].values
y2value = daily['Low'].min()
mpf.plot(daily,figscale=0.7,
fill_between=dict(y1=y1values,y2=y2value,where=where_values,alpha=0.5,color='g')
)
三、多图绘制
- 基本用法
fig = mpf.figure(style='yahoo',figsize=(7,8))
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
mpf.plot(df,ax=ax1,volume=ax2)
- 给不同子图指定不同主题
fig = mpf.figure(figsize=(12,9))
ax1 = fig.add_subplot(2,2,1,style='blueskies')
ax2 = fig.add_subplot(2,2,2,style='yahoo')
s = mpf.make_mpf_style(base_mpl_style='fast',base_mpf_style='nightclouds')
ax3 = fig.add_subplot(2,2,3,style=s)
ax4 = fig.add_subplot(2,2,4,style='starsandstripes')
mpf.plot(df,ax=ax1,axtitle='blueskies',xrotation=15)
mpf.plot(df,type='candle',ax=ax2,axtitle='yahoo',xrotation=15)
mpf.plot(df,ax=ax3,type='candle',axtitle='nightclouds')
mpf.plot(df,type='candle',ax=ax4,axtitle='starsandstripes')
- 不同子图同步坐标轴
fig = mpf.figure(figsize=(9,6),style='yahoo')
ax1 = fig.add_subplot(2,3,1)
ax2 = fig.add_subplot(2,3,2)
ax3 = fig.add_subplot(2,3,3)
av1 = fig.add_subplot(3,3,7,sharex=ax1)
av2 = fig.add_subplot(3,3,8,sharex=ax1)
av3 = fig.add_subplot(3,3,9,sharex=ax3)
mpf.plot(aapl,type='candle',ax=ax1,volume=av1,mav=(10,20),axtitle='AAPL')
mpf.plot(goog,type='candle',ax=ax2,volume=av2,mav=(10,20),axtitle='GOOG')
mpf.plot(spy ,type='candle',ax=ax3,volume=av3,mav=(10,20),axtitle='SPY')
- 组合图形
# 方式1:通过使用addplot参数
ap = mpf.make_addplot(spy,type='ohlc')
mpf.plot(aapl,type='candle',style='yahoo',addplot=ap)
# 方式二:使用双轴形式 ax.twinx()
s = mpf.make_mpf_style(base_mpl_style='seaborn',rc={'axes.grid':False})
fig = mpf.figure(style=s,figsize=(7.5,5.75))
ax1 = fig.subplot()
ax2 = ax1.twinx()
mpf.plot(spy ,ax=ax1,type='ohlc',style='default')
mpf.plot(aapl,ax=ax2,type='candle',style='yahoo')
- 结合使用addplot和双轴形式
# 用法1:
fig = mpf.figure(style='blueskies',figsize=(7,8))
ax1 = fig.add_subplot(2,1,1)
ax2 = ax1.twinx()
ax4 = fig.add_subplot(2,1,2)
ap = mpf.make_addplot(df[['UpperB','LowerB']],ax=ax2,ylabel='Bollinger Bands')
mpf.plot(df,ax=ax1,volume=ax4,addplot=ap,xrotation=10,type='candle')
# 用法2:
fig = mpf.figure(style='charles',figsize=(7,8))
ax1 = fig.add_subplot(3,1,1)
ax2 = fig.add_subplot(3,1,2,sharex=ax1)
ax3 = fig.add_subplot(3,1,3)
ap = [ mpf.make_addplot(df,type='ohlc',ax=ax2,ylabel='OHLC Price'),
mpf.make_addplot(df[['UpperB','LowerB']],ax=ax1)
]
mpf.plot(df,ax=ax1,volume=ax3,addplot=ap,xrotation=10,type='candle')
四、按不同频率作图
# 将数据聚合成周、月、季度
aggregation = {'Open' :'first',
'High' :'max',
'Low' :'min',
'Close' :'last',
'Volume':'sum'}
dfw = df.resample('1W').agg(aggregation)
dfm = df.resample('1M').agg(aggregation)
dfq = df.resample('1Q').agg(aggregation)
kwargs=dict(volume=True,type='candle',tight_layout=True)
# 可以绘制出周、月和季度的波动图
mpf.plot(df,**kwargs,title='\nINTC Daily ')
mpf.plot(dfw,**kwargs,title='\nINTC Weekly ')
mpf.plot(dfm,**kwargs,title='\nINTC Monthly ')
mpf.plot(dfq,**kwargs,title='\nINTC Quarterly ')
mplfinance常用方法的更多相关文章
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- Jquery元素选取、常用方法
一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- C# Webbrowser 常用方法及多线程调用
设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...
- list,tuple,dict,set常用方法
Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...
- 记录yii2-imagine几个常用方法
记录yii2-imagine几个常用方法: //压缩 Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)->save(Yii::g ...
- DOM常用方法总结
DOM(Document Object Model:文档对象模型)为javascript中的一部分,它为访问和修改html文档或xml文档提供了一些编程接口,DOM以对象的形式来描述文档中的内容,以树 ...
- JSP内置对象及常用方法
jsp九大内置对象及四个作用域: 何为作用域 先让我们看看效果: 大概流程是这样的,我们访问index.jsp的时候,分别对pageContext, request, session,applicat ...
- java中集合类中Collection接口中的Map接口的常用方法熟悉
1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...
- 解析Exception和C#处理Exception的常用方法总结
在.NET中,异常是指成员没有完成它的名称宣称可以完成的行动.在异常的机制中,异常和某件事情的发生频率无关. 异常处理四要素包括:一个表示异常详细信息的类类型:一个向调用者引发异常类实例的成员:调用者 ...
随机推荐
- 禁用a标签点击事件
a标签是没有disable属性的 ,如果想用disable 禁用a标签的点击事件,也可以实现: 1.a标签要用disable属性,必须和pointer-events属性一起使用, html代码: &l ...
- 遗忘的pawn 创建
默认加载 pawn::staticclass; ConstructorHelpers::FClassFinder<>Pawnpath(TEXT("_C")); 然后是的 ...
- opencv-python 批量更改图像分辨率并且保留图像原有的透明度
opencv-python环境安装:https://www.cnblogs.com/technicist/p/17138657.html 案例代码(批量压缩图像分辨率为原来的一半,例如2400*139 ...
- 问题记录——nginx加载lua 模块,启动报错找不到 libluajit-5.1.so.2
环境:SUSE 12 SP3 问题说明:根据工作需求,重新编译nginx加载 lua 模块后启动报错如下: 首先是尝试在 /etc/profile 配置文件中添加环境变量并 source /etc/p ...
- MySQL 8.0 新特性-原子DDL
背景 MySQL 8.0 原子DDL 是一个复杂的过程,涉及比较多的模块,例如:MDL 锁,表定义缓存,行格式,Row Log,DDL Log,online 属性,表空间物理文件操作等.本文主要通过与 ...
- @NotNull,@NotBlank,@NotEmpty注解的区别
开发中常看见@NotNull,@NotBlank,@NotEmpty三个注解,但却没有深入了解过,下面介绍一下他们的应用场景和区别 @NotNull:主要用在基本数据类型上(Int,Integer,D ...
- 创建一个与a.txt文件同目录下的另一个文件b.txt
File file1 = new("d:\\a\\a.txt"); File file2 = new(file1.getParent(),"b.txt"): F ...
- CH582m串口透传程序
目录 参考了沁恒官网22年1月更新的CH583EVT包中的UART1例程 功能:上位机通过串口1发送指令规定串口2和3的波特率,实现串口2和3之间的数据透传 担心串口3的接收中断会被串口2的发送中断打 ...
- Python中Websocket的实现及基本原理
一.什么是 WebSocket ? WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输.但它跟 HTTP 没什么关系,它是基于 TCP 的一种独立实现. 以前客户端想知道服务 ...
- 使用Libusb测试USB device
一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...