目录

一、说明

二、数据获取工具Tushare

2.1 Tushare简介

2.2 Tushare安装

三、介绍mplfinance模块

3.1 mplfinance — matplolib 用于绘制财务数据的不为人知的库

3.2 安装

四、mplfinance显示财务数据

4.1 显示数据约定

4.2 数据预处理

4.3 预处理代码解释

4.4 股市数据显示

4.5 结果图

五、mplfinance的各种绘图风格

5.1 OHLC图表

5.2 OHLC图表追加对比线

5.3 蜡烛图

5.4 莲子图

5.5 点数图

5.6 添加样式和一般美化

六、保存文件


一、说明

直到最近我才发现 matplotlib 有一个单独的库/模块专门用于财务绘图。它称为 mplfinance,在本文中,我将展示它的一些不错且非常独特的功能。注意,我们这里的意义,不是尝试显示数据为最后目的,而是用这些原始数据完成我们自己的交易策略和代码实现,因此,这种原生态数据比通过其它工具软件获得的策略建议要有意义的多。

二、数据获取工具Tushare

2.1 Tushare简介

        Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。

Tushare还在不断的完善和优化,后期将逐步增加港股、期货、外汇和基金方面的数据,所以,您的支持和肯定才是Tushare坚持下去的动力。

为了更好的为用户提供服务,特地建立了一个收费群“Tushare会员群”:621499723,每人200元,送2000积分。(可以通过捐助里面的二维码支付并留下QQ号即可),会员能获得更多数据和技术相关服务。

2.2 Tushare安装

pip install tushare

三、介绍mplfinance模块

3.1 mplfinance — matplolib 用于绘制财务数据的不为人知的库

众所周知,matplotlib 用途广泛,几乎可以用来创建您想要的任何类型的图表。它可能不是最简单或最漂亮的,但在 StackOverflow 上查看足够多的问题后,它很可能最终会很好地解决问题。

我知道可以在纯 matplotlib 中创建烛台图等财务图表,但这并不是最愉快的体验,使用 plotly 或 altair 等库可以更轻松地完成此操作。

然后,我们下载要处理的股票价格——在这篇文章中,我们使用 Apple 从 2020 年下半年开始的股票价格。如果您对下载股票价格的更多详细信息感兴趣,可以查看我的另一篇文章。

3.2 安装

pip install --upgrade mplfinance
# For more information, see: https://pypi.org/project/mplfinance/

四、mplfinance显示财务数据

4.1 显示数据约定

1)从tushare得到股票数据:

dataframe = ts.get_hist_data('000881')
# 其中:’000881‘是股票编号。

2)要想在mplfinance上显示,必须符合以下约束:

  • 1) data必须是pandas.DataFrame数据类型,对所包含的列也有要求。(自然满足)
  • 2) 必须包含’Open’, ‘High’, ‘Low’ 和 ‘Close’ 数据(注意:首字母是大写的)。
  • 3)而且行索引必须是pandas.DatetimeIndex。
  • 4)行索引的名称必须是’Date‘(同理注意首字母大写),
  • 5)此外还有一列是’Volume’,如果绘制成交量这一列是必须的。

4.2 数据预处理

#import mplfinance as mpf
import tushare as ts
import pandas as pddataframe = ts.get_hist_data('000881')
dataframe.columns=['Open', 'High', 'Close', 'Low', 'Volume', 'price_change', 'p_change','ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover']
date_time = pd.to_datetime(dataframe.index)
dataframe.index = date_time
dataframe.index.name='Date'

4.3 预处理代码解释

1)对columns的名称进行改名:

dataframe.columns=['Open', 'High', 'Close', 'Low', 'Volume', 'price_change', 'p_change','ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover']

columns的 原始数据:

['open', 'high', 'close', 'low', 'volume', 'price_change', 'p_change','ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover']

2)原index名称“date”,改成“Date”

dataframe.index.name='Date'

3)原index类型是string,改成date后重新索引。

date_time = pd.to_datetime(dataframe.index)
        dataframe.index = date_time

4.4 股市数据显示

import mplfinance as mpf
import tushare as ts
import pandas as pddataframe = ts.get_hist_data('000881')
dataframe.columns=['Open', 'High', 'Close', 'Low', 'Volume', 'price_change', 'p_change','ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover']
date_time = pd.to_datetime(dataframe.index)
dataframe.index = date_time
dataframe.index.name='Date'mpf.plot(dataframe,type='line')
mpf.plot(dataframe, type='line', mav=(2, 5, 10))
mpf.plot(dataframe, type='line', mav=(2, 5, 10), volume=True)
mpf.plot(dataframe,type='line',mav=(2, 5, 10), volume=True,show_nontrading=True)

4.5 结果图

五、mplfinance的各种绘图风格

5.1 OHLC图表

mplfinance 提供了几种有助于分析资产价格模式的图表。第一个是 OHLC 图表,也是库中的默认图表。我们可以通过简单地使用 plot 函数来创建它:

mpf.plot(df["2020-12-01":])

其中 df 是包含 OHLC 数据和 DatetimeIndex 的 pandas DataFrame。我们仅将数据限制为上个月,以便清楚地看到情节元素的形状。

解释与烛台图非常相似。左边的水平线表示开盘价,右边的水平线表示收盘价。垂直线代表价格的波动,我们可以从两个极端读取高/低价格。

在这一点上,值得一提的是,mplfinance 提供了一种在一张图表上堆叠多层信息的简单方法。例如,假设我们想要将最高价和最低价作为线添加到先前创建的图中。我们可以使用 make_addplot 函数轻松做到这一点,如下所示。我们首先定义附加线,然后将它们作为附加参数传递给 plot 函数。

5.2 OHLC图表追加对比线

extra_plot  = mpf.make_addplot(df.loc["2020-12-01":, ["High","Low"]])
mpf.plot(df["2020-12-01":], addplot=extra_plot)

运行代码生成以下图像,它仅确认垂直线的极端对应于给定日期的最高价和最低价。

当然,这是一个简化的例子。在更复杂的情况下,我们可能有兴趣添加一些技术指标,例如布林带或简单移动平均线。我们很快就会回到后者。我们还可以使用相同的函数来创建显示我们进入/退出位置的符号。

5.3 蜡烛图

可用图表类型的下一个是烛台图。使用 mplfinance 生成它们就像向 plot 函数添加一个额外的参数一样简单。

mpf.plot(df["2020-12-01":], type="candle")

当您查看蜡烛和日期时,很明显那里缺少一些日期。这自然是因为市场在周末和一些特殊日子休市。如果你想考虑到这一点,你可以为 plot 函数提供一个额外的参数:

mpf.plot(df["2020-12-01":], type="candle", show_nontrading=True)

让我们向情节添加更多信息。首先,我们可以将一个方便的参数传递给 plot 函数 — mav — 它会自动添加我们想要的任何简单移动平均线。对于此图,让我们采用 10 天和 20 天均线。其次,我们还可以添加交易量。

mpf.plot(df, type="candle", mav=(10, 20), volume=True)

5.4 莲子图

老实说,mplfinance 是我第一个看到以下两种图的地方,因为它们不如 OHLC 和烛台图受欢迎。第一个称为 Renko 图表,它是使用价格变动构建的,没有像大多数图表那样考虑标准化的时间间隔。

它在实践中的意思是,当价格移动指定量时创建一个新块,并且每个后续块都以与前一个块成 45 度角的方式添加,无论是在它的上方还是在它的下方。

Renko 图表最常见的用途是滤除价格序列中的噪音并帮助识别价格趋势。这是因为所有小于指示框大小的价格变动都被过滤掉了。

我们可以通过在使用 plot 函数时简单地指定类型参数来创建 Renko 图表。

mpf.plot(df,type="renko")

我们也可以根据自己的喜好修改积木的大小。在下面的代码片段中,我们将其设置为 2。

mpf.plot(df, type="renko", renko_params=dict(brick_size=2))

5.5 点数图

库中可用的最后一种图表是点数图。与 Renko 图表类似,它没有考虑时间的流逝。 P&F 图表使用堆叠的 X 和 O 的列,其中每个符号代表特定的价格变动(由框大小决定,我们可以根据自己的喜好进行调整)。

X代表价格上涨一定幅度,而O代表下跌。我们需要的最后一条信息是创建不同符号的新列的条件(O 跟随 X,反之亦然)。为了创建一个新列,价格必须改变反转量,通常设置为框大小的三倍(在 mplfinance 中,默认值为 1)。

mpf.plot(df, type="pnf")

我们可以轻松地将此 P&F 图与第一个 Renko 图进行比较,以查看完全相同的模式。

5.6 添加样式和一般美化

使用 mplfinance 创建的绘图已经非常适合单线显示,因此绝对不会在纯 matplotlib 中经常发生的事情。但是,我们可以在 plot 函数中使用更多可用选项,使我们的绘图更加漂亮。

对于下一个图,我们更改图形的比例,添加标题,选择紧凑的布局并应用样式。我们使用 binance 风格,这使得情节类似于流行的加密货币交易所提供的情节。

mpf.plot(df, figratio=(10, 6), type="candle", mav=(21), volume=True,title = f"Price of {TICKER}",tight_layout=True, style="binance")

就我个人而言,我会说这对于我们必须编写的额外代码量来说是一个很大的改进。如果你对库中有哪些样式感到好奇,可以使用以下命令查看所有样式:

mpf.available_styles()

六、保存文件

最后,我们还可以轻松地将图形保存到本地文件。为此,我们只需要将文件名提供给 plot 函数的 savefig 参数。代码如下所示。

mpf.plot(df, figratio=(10, 6), type="candle", mav=(21), volume=True,title = f"Price of {TICKER}",tight_layout=True, style="binance", savefig=f"{TICKER}.png")

【量化分析】如何下载和显示股票交易数据相关推荐

  1. 【量化分析】用mplfinance显示交易图时,处理 Expect data.index as DatetimeIndex?

    目录 一.说明 二.程序代码和出错描述 三.合理化建议 3.1 读入数据时指定索引 3.2 读入数据后,使用数据前指定日期(时间戳)索引 一.说明 我打算从比特币数据中获取烛台图.这是我在加载 csv ...

  2. Python毕业设计 机器学习股票数据量化分析与预测系统 - python 大数据

    文章目录 0 前言 1 课题背景 2 实现效果 UI界面设计 web预测界面 RSRS选股界面 3 软件架构 4 工具介绍 Flask框架 MySQL数据库 LSTM 0 前言

  3. 从直觉主义到量化分析 让大数据做主

    文章讲的是从直觉主义到量化分析 让大数据做主,还记得去年8·15电商竞争价格大战吗?如果你是某电商CEO,你还会采用这样的竞争战略吗?变化是永恒的主题,企业管理不能一成不变.在大数据时代,电商采用价格 ...

  4. 自己做量化交易软件(3)通通量化分析框架构成1

    自己做量化交易软件(3)通通量化分析框架构成1 通通股票量化分析框架采用模块化设计,每个模块存放在不同的py文件中. 通通股票量化分析框架下载: https://download.csdn.net/d ...

  5. python 量化分析 入门_【合辑·收藏】Python量化从入门到精通

    原标题:[合辑·收藏]Python量化从入门到精通 引言 自2018年9月27日发第一篇推文以来,公众号"Python金融量化"专注于分享Python在金融量化领域的实战应用,坚持 ...

  6. 多线程爬虫获取A股历史行情数据!股票量化分析工具QTYX-V2.2.3

    前言 股票数据的获取是从事股票分析的第一步. 数据获取的途径有很多,对大家来说除了数据的质量以外,获取的效率是第二敏感的点. 市面上有一些股票数据服务平台提供了Python接口来获取数据. 总的来说, ...

  7. 通达信全市场数据导入指南—基于股票量化分析工具V2.0!

    今天是除夕夜,祝大家春节快乐!阖家欢乐!万事如意!骑牛冲天! 不少小伙伴准备趁着春节假期,好好结合书本消化下股票量化分析工具V2.0代码. 这样可以把自己的分析思路量化到工具中,来年大干一番! 我了解 ...

  8. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

  9. 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。

    选定日期,筛选涨幅达到10%的股票,并画出K线图.观察涨停后股票走势. 由于创业板涨停板为20%,科创板20%,北交所30%.因此筛选出的涨停股票不完全准确.考虑到目前市场打板主要集中在10%的主板股 ...

最新文章

  1. JDBC与数据库连接工具对比分析
  2. Linux 进阶笔记(二)
  3. SecureCRT防止自动断开
  4. android 动态设置textview的边距,添加边距为动态的Android的TextView(Adding Margins to a dynam...
  5. Java RMI 介绍
  6. 虚拟主机-多域名多目录使用方法
  7. 数据比赛大杀器----模型融合(stackingblending)(转载)
  8. 农学院计算机考试题,天津农学院计算机考试参考.doc
  9. MySql常用语句汇总
  10. 我的世界旅行者地图服务器不显示,我的世界旅行者地图怎么没有传送 | 手游网游页游攻略大全...
  11. 计算机怎么把文字转换成表格,如何将EXCEL的图片转换成excel表格或者文字?,Word将文字转化成表格...
  12. Android 配置SUPL
  13. 51单片机对直流电机的控制(使用proteus仿真)
  14. Alienware-17-R4-630-1060-MacOS 笔记本双显卡 外星人黑苹果hackintosh 10.15
  15. 实验五 java gui
  16. 股票买卖接口源码分享
  17. 自定义UTI注册自己的APP
  18. HTML中如何给代码添加注释
  19. Maven 跳过单元测试
  20. 简单理解float和double、单精度和双精度

热门文章

  1. Scala的集合体系
  2. Android进阶之路 - 可拖拽的悬浮按钮
  3. 玩转js正则表达式与字符串
  4. 文献阅读(11):同步数据流SDF
  5. 关于添加msvcr120d.dll后0xc000007b的错误解决办法
  6. nod32 updata useful links
  7. linux消耗ram内存吗,linux - 释放Ubuntu 8.04服务器上的内存(RAM) - Ubuntu问答
  8. html原理书籍,02_互联网基本原理和HTML入门
  9. 太肝了 5年来最火183个Java面试问题含答案(
  10. CANOPEN使用心得1-cia301、cia402简单提要