mplfinance 一个堪称完美python量化金融可视化工具详析

文章目录

  • 1.mplfinance安装
  • 2.获取数据(从tushare接口)
  • 3. 获取数据(从本地csv)
  • 4. mplfinance可视化
  • 5. 自定义风格样式
  • 6. 添加其他线条


1.mplfinance安装

使用清华源快速安装mplfinance库,执行以下命令即可:

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

2.获取数据(从tushare接口)

使用tushare的接口获取金融数据,将数据格式化后,并保存为csv文件。
从tushare获取数据需要密匙,具体可以去tushare官网注册账号获取。
我们获取数据后,需要将其索引设置为时间序列的数据,并将列名更改为mplfinance库适用的格式,即下边的’trade_date’, ‘open’, ‘high’, ‘low’, ‘close’, ‘vol’。
最后将时间倒序排列。
获取数据需要传入的参数是股票代码,此外为了便于识别数据文件对应的上市公司,我们也获取了股票列表以根据股票代码匹配上市公司名字。考虑到文件命名不能存在星号*,但是被警告或将退市的上市公司的名字前边可以冠以*ST或**ST。当遇到这样的情况时,将星号改为汉字“星之”即可。
以平安银行的数据为例,平安银行对应的股票代码为"000001.SZ"。获取其数据并保存为csv文件。
现新建一个get_data.py文件,并编辑代码如下:

import tushare as ts
import pandas as pdtokenn = 'Your token'
pro = ts.pro_api(tokenn)
# 获取股票列表,以便提取股票名称
stock_list = pro.stock_basic()def get_data(tscode):df = pro.daily(ts_code=tscode)df = df.loc[:, ['trade_date', 'open', 'high', 'low', 'close', 'vol']]df.rename(columns={'trade_date': 'Date','open': 'Open','high': 'High','low': 'Low','close': 'Close','vol': 'Volume'},inplace=True)       # 重定义列名,方便统一规范操作。df['Date'] = pd.to_datetime(df['Date'])  # 转换日期列的格式,便于作图df.set_index(['Date'], inplace=True)  # 将日期列作为行索引df = df.sort_index()return dfdef get_name(ts_code):name = stock_list.name[stock_list['ts_code'] == ts_code].values[0]if name[0] == '*':name = '星之' + name[1:]return namets_code = '000001.SZ'
data = get_data(ts_code)
name = get_name(ts_code)
data.to_csv(name + '日线行情.csv')

保存好的数据如下图所示:
     在这里插入图片描述


3. 获取数据(从本地csv)

读取完数据后,如果直接对上边的变量data进行操作也是可以的,data已经满足mplfinance对数据要求的规范。
但是考虑到代码不断调试的过程,我们还是新建一个demo.py文件对上边获取到的'平安银行日线行情.csv'文件进行重新读取。
且读取后的数据,需要再对索引稍微做一点格式化。(即将时间列转换为时间序列数据格式,并设置为索引)

import mplfinance as mpf
import pandas as pddef read_data(filename):df = pd.read_csv(filename)df['Date'] = pd.to_datetime(df['Date'])df.set_index(['Date'], inplace=True)return df# 此时的数据,才满足mplfinance的数据的使用规范
df = read_data('平安银行日线行情.csv')
print(df)

符合规范的数据格式如下图所示
(不论你是怎么获取数据的,只要数据格式规范如此,即可继续随文章向下进行):
         在这里插入图片描述


4. mplfinance可视化

使用mplfinance库绘图,所有命令浓缩于mpf.plot()接口。故只需了解该接口的参数即可。
现将mpf.plot()接口主要参数示例如下。

参数描述
type绘制图线的种类
ylabely轴标签
style风格样式
title图表标题
mav均线,格式为一个元组,如(5, 10)表示绘制5日均线和10日均线
volume是否绘制量柱图,默认为False,表示不绘制。
figratio图像横纵比,如(5,3)表示图像长比宽为5:3。
ylabel_lower表示底部图像的标签(一般是量柱图)
savefig如果需要将图像保存为一个图片文件,则通过该参数指定文件路径即名字即可。不指定则默认不保存,但是图像会显示出来。如果指定了则图像不会直接显示出来。

其中参数type可以的取值有

type取值描述
candle蜡烛图
ohlcOHLC图,也称“美国线”。即用一根垂直的线段表示一天的行情,在开盘和收盘价格处划一笔刻度。
line直线,即近绘制收盘价曲线
renko砖形图
pnfpnf图,由圈和叉构成

(如果对图像有疑问可以百度了解,也可以自行测试)


其中参数style可以的取值有

style描述
‘binance’币安风格
‘blueskies’蓝天风格
‘brasil’巴西风格
‘charles’查理风格
‘checkers’跳棋风格
‘classic’古典风格
‘default’默认风格
‘mike’迈克风格
‘nightclouds’夜云风格
‘sas’SAS风格
‘starsandstripes’星条旗风格
‘yahoo’雅虎风格

这些参数值分别对应着不同的风格。此外还可以自定义风格,具体方法会在下边说到。


以 对平安银行2022年6-8月份行情数据,绘制一幅简单的蜡烛图 为例。使用蓝天风格(“blueskies”)。
并使用mav参数添加上5日均线和10日均线,以及附带上量柱图。

mpf.plot(df.loc['2022-6':'2022-8'],type='candle',ylabel="price",style='blueskies',title='PINGANBank from 2022-6-1 to 2022-8-31',mav=(5, 10),volume=True,figratio=(5, 3),ylabel_lower="Volume")

图像输出效果如下:
在这里插入图片描述
一幅美观的图表就这样绘制出来了。


5. 自定义风格样式

我们也可以使用mpf.make_mpf_style()方法来生成新的自定义风格。

mpf.make_mpf_style()方法可以使用的参数有

参数描述
base_mpf_style要继承的mplfinance风格
base_mpl_style要继承的matplotlib风格
marketcolors用于设置K线的颜色。使用mpf.make_marketcolors()方法生成。
mavcolors移动平均线的颜色
facecolor图像的填充颜色。指的是坐标系内侧的部分的颜色。
edgecolor坐标轴的颜色。
figcolor图像外周边填充色。
gridcolor网格线颜色。
gridstyle设置网格线样式,可以是’-', ‘–’, ‘-.’, ‘:’, ‘’, offset, on-off-seq
gridaxis网格线的方向,可以是’vertical’, ‘horizontal’, 或 ‘both’
y_on_right设置y轴的位置是否在右边
rc设置字体相关。中文和负号的正常显示问题都需要操作该参数。以字典形式传入。
legacy_rc也是用于设置字体格式的,不过与rc不同的是,rc仅会将rc中传入的值更新进字典,并保留原有其他字体参数。而legacy_rc会将所有原字典删除,而仅仅使用legacy_rc。
style_name风格名字,可以在使用mpf.write_style_file(style,filename)方法写自定义风格样式文件时使用。

其中,关于颜色的参数,也可以是rgb的格式,不过要求把元组变为字符串写入,形如figcolor=‘(107, 195, 224)’

下边绘制

import mplfinance as mpf
import pandas as pddef read_data(filename):df = pd.read_csv(filename)df['Date'] = pd.to_datetime(df['Date'])df.set_index(['Date'], inplace=True)return df# 获取数据
df = read_data('平安银行日线行情.csv')# 设置线元素的颜色
my_color = mpf.make_marketcolors(up="red",  # 上涨K线的颜色down="green",  # 下跌K线的颜色edge="black",  # 蜡烛图箱体的颜色volume="purple",  # 成交量柱子的颜色wick="black"  # 蜡烛图影线的颜色
)# 自定义风格
my_style = mpf.make_mpf_style(base_mpf_style='nightclouds',# base_mpl_style='seaborn',  # 也可以试试matplotlib的seaborn等风格。marketcolors=my_color,figcolor='(0, 0.8, 0.85)',gridcolor='(0.9, 0.9, 0.9)',rc={'font.family': 'SimHei', 'axes.unicode_minus': 'False'}
)# 选择平安银行2022年8月的数据进行绘图
mpf.plot(df.loc['2022-6':'2022-8'],type='candle',ylabel="price",style=my_style,title='平安银行6-8月 日线行情',mav=(5, 10),volume=True,figratio=(5, 3),ylabel_lower="Volume")

图像输出效果如下:
   在这里插入图片描述


6. 添加其他线条

mplfinance提供了添加多条线的方式。即通过mpf.plot()接口的addplot参数。
以添加唐奇安通道(20日唐奇安)的三条线为例,代码如下:

import mplfinance as mpf
import pandas as pddef read_data(filename):df = pd.read_csv(filename)df['Date'] = pd.to_datetime(df['Date'])df.set_index(['Date'], inplace=True)return dfdf = read_data('平安银行日线行情.csv')# 设定上、下、中通道线初始值
upboundDC = pd.Series(0.0, index=df.Close.index)
downboundDC = pd.Series(0.0, index=df.Close.index)
midboundDC = pd.Series(0.0, index=df.Close.index)# 求唐奇安上、中、下通道
for i in range(20, len(df.Close)):upboundDC[i] = max(df.High[(i-20):i])downboundDC[i] = min(df.Low[(i-20):i])midboundDC[i] = 0.5 * (upboundDC[i] + downboundDC[i])df['upboundDC'] = upboundDC
df['downboundDC'] = downboundDC
df['midboundDC'] = midboundDC
data = df.loc['2022-5':'2022-8']my_color = mpf.make_marketcolors(up="red",  # 上涨K线的颜色down="green",  # 下跌K线的颜色edge="black",  # 蜡烛图箱体的颜色wick="black",  # 蜡烛图影线的颜色volume="inherit"  # 继承up和down的颜色
)# 设置图表的背景色 
my_style = mpf.make_mpf_style(base_mpl_style='seaborn',marketcolors=my_color,rc={'font.family': 'SimHei', 'axes.unicode_minus': 'False'}
)add_plot = [mpf.make_addplot(data['upboundDC']),mpf.make_addplot(data['midboundDC']),mpf.make_addplot(data['downboundDC'])]mpf.plot(data,type='candle',ylabel="price",style=my_style,title='平安银行5-8月 日线行情',addplot=add_plot,mav=(5, 10),volume=True,figratio=(5, 3),ylabel_lower="Volume")

输出图像效果如下:
   在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71224.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Yfinance和Plotly分析金融数据

大家好,今天我们用Python分析金融数据,使用Yfinance和Plotly绘制图表,带你了解在Python中使用Plotly制作图表,利用Plotly强大的图表功能来分析和可视化金融数据。 导语 在本文中,我们将深入研究Plotly,从…

分析师的嘴,骗人的鬼?年薪百万的券商分析师靠谱吗?Python量化大数据给你答案!| 邢不行

如果你有一定的交易经验,应该会或多或少看过券商分析师们推荐股票的信息。 甚至仅需49元/月,就能通过支付宝得知,被认为最优秀的新财富分析师们每天实时推荐的股票。 这些年薪百万的分析师们真的靠谱吗?本文我们就用大数据来验证…

网站用户活跃度统计服务器,活跃用户统计规则

1. 活跃用户 1.1. 基础说明 1.1.1. 指标定义 活跃用户指的是当前统计时间周期内启动过应用并浏览了页面的设备,MTA通过用户/程序在不同场景下是否上报日志作为活跃的判断标准。 注意:活跃用户默认只计算前台使用的用户为活跃用户,即上报页面日…

Q1手机银行运营报告:交易规模超150万亿,月活跃用户4.9亿

易观分析:由中国电子银行网、易观分析联合发布的“2022中国手机银行综合运营报告”显示:第一季度受活跃用户规模增长放缓、手机银行更新迭代较少等综合因素影响,其运营指数较上一季度有所下降,其中2月份的运营指数为77.3&#xff…

app数据分析体系 - 用户粘性 DAU,MAU 和 月人均活跃天数

用户粘性指标 DAU MAU 月均活跃天数 DAU 和 MAU 日活跃用户占月活跃用户的比例越高,表明用户对App的使用粘性越高。 DAU,即:Daily Active User,指日活跃用户数 MAU,即:Monthly Active User,指…

最近七天内连续三天活跃用户数

最近七天内连续三天活跃用户数 首先,感谢大华公司给的面试机会,非常感谢~! 进入正题,建表: create table uv_detail_daycount( mid int )PARTITIONED BY(dt string);通过load将hdfs文件加载到hive中。 数据文件名如下…

数据统计之日活跃用户统计

日活跃用户统计 接口分析 请求方式:GET /meiduo_admin/statistical/day_active/ # 日活跃用户统计url(r^statistical/day_active/$, statistical.UserActiveCountView.as_view()), 请求参数: 通过请求头传递jwt token数据。 返回数据: J…

中创|没人比我更懂!马斯克发出警告:人类要小心人工智能

马斯克在过去十年对AI的态度一直非常鲜明,很早就对这个问题有深入地思考: 2014 “我们对AI要非常小心,这可能是我们最大的存在威胁。” 2016 “AI的未来发展方向可能并不乐观,起码不会所有结果都是好的。” 2017 “AI会比地…

被培训班割韭菜,还期待高薪入场,哥们醒醒

刚毕业,两眼一抹黑,觉得前端高薪便急忙入场,可能一开始这条路就是错的。 1. 就在今天早晨07:53,有人要添加我的微信好友。现在基本上有人加我微信,我都是秒通过的,因为绝大部分加我wx的,都是从我…

如何看待培训机构出来的非科班程序员

看着身边的同学和朋友的情况,有感而发,打算从各方面角度说一说这件事。 近几年,互联网创业潮让IT技术人员的需求大大增加,各类IT培训机构风生水起,办得如火如荼。大多培训机构都是以保底工资nk,年薪轻松上…

腾讯XR,为什么凉了

深燃(shenrancaijing)原创 作者 | 李秋涵 编辑 | 魏佳 大厂的业务线,从成立到部分解散能有多快? 最近有一个新答案是,8个月。 2月16日下午,腾讯XR(扩展现实)业务线员工李钢铁还是先通…

两个offer:一个996,月薪3万;一个885,月薪2万,怎么选?

转载自:架构师社区 找工作时,钱和闲,你选哪个? 一位网友拿到了两个offer,一个996,月薪3万,一个885,月薪2万,怎么选? 一部分网友选择885,因为自己是…

科技巨头Facebook推出能自由对话的机器人,技术远超GPT-3

距离现在差不多一年前的光景,一款叫做BB1.0(BlenderBot 1.0,后文简称BB1.0)的人工智能机器人被Facebook创造了出来。 点击下方链接,自测是否符合美国百年理工强校在线计算机硕士入学申请资格,和线下一样的师…

Python美股量化交易填坑记录——13a.Vegas隧道交易机器人

目录 1.背景和目标 2.算法介绍 3.机器人参数 4.实盘测试(进行中) 第1天实盘:10月6日,周三 第2天实盘:10月7日,周四 第3天实盘:10月8日,周五 第4天实盘:10月11日&…

和众视野加入飞桨技术伙伴计划,共同推动纺织行业智能化转型

近日,北京和众视野科技有限公司正式加入飞桨技术伙伴计划,双方将共同努力开发AI视觉检测技术和机器人流程自动化相结合的系统解决方案。 北京和众视野科技有限公司 北京和众视野是一家实验室检测仪器及解决方案供应商,一直专注于视觉检测和检…

【MES】聚酯,纺丝,假捻的工艺路线

聚酯工艺路线(PET) PET(聚对苯二甲酸乙二醇酯)中文称聚酯,俗称涤纶树脂、聚酯切片。 聚酯的主工艺路线为聚酯到切片。 聚酯无子工艺路线。 聚酯使用的原料,就是上面提到的回收的PET瓶片,他们本身就是聚酯塑料瓶。 因此不需要经过酯化反应,只需要清洗,筛选,去杂,然后…

【2023/05/08】雅卡尔织布机

Hello!大家好,我是霜淮子,2023倒计时第3天。 Share The world puts off its mask of vastness to its lover. It becomes small as one song,as one kiss of the eternal. 译文: 世界对着它的爱人,把它浩瀚的面具揭…

计算机毕业设计作品

计算机毕业设计作品统计 ①C语言项目源码大全(60套)②Android项目源码(168套)③计算机专业精选代码lun文(26套)④计算机专业-VB(350套)⑤计算机专业-PHP(76套&#xff09…

【毕业季·进击的技术er】大学生计算机毕业设计应该这样写

活动地址:毕业季进击的技术erhttps://marketing.csdn.net/p/f4a818f6455f3a9a7a20c89f60ad35f7 目录 扉页 摘要 目录 一 绪论 二、相关技术环境介绍 三、系统需求分析 四、系统架构设计 五、系统实现 六、系统测试 致谢 参考文献 以一个过来学长的角度来看…

某高校毕业设计-数据分析课题技术实现篇

文章目录 某高校毕业设计-数据分析课题技术实现篇1.确定分析目标2.初步判断数据研判数据2.1能不能找到数据-->可以找到2.2分析指标2.2.1 指标1 各个老师的毕设通过率2.2.2 指标2 每年的毕设重修人数2.2.3 各个学院每年答辩通过率2.2.4 指标new2.2.15 指标new 2.3 基于需要分…