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

目录

一、说明

二、数据获取工具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")

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

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

相关文章

个股解析软件排名推荐,股票行情分析软件排名

炒股软件排名前十强,那个好些? 第1名:同花顺。老牌付费炒股软件,凭借多年的积累具有一定数量的付费人群。第2名:经传多赢。7大经典盈利模式,一站式解决炒股难题。第3名:大智慧。拥有最大数量的…

Python+Tushare股票数据分析

Tushare是一个免费提供各类金融数据 , 助力智能投资与创新型投资的平台。在这个平台上可以免费获得股票、期货和外汇的各种数据。(Tushare ID:492265) 本次我就使用Tushare来获取股票数据,模拟股票交易。 一、Tushare的注册安装…

ChatGPT炒股:查询分析某个公募基金的持仓变化

如果很认同某个基金经理的投资理念,可以跟踪基金经理的持仓变化,可以获取一些投资的线索。手动操作也可以实现,但略微麻烦,如果利用ChatGPT写一个跟踪程序,就方便多了。 下面以汇丰晋信副总经理、投资总监、知名基金经…

股票、指数、快照、逐笔... 不同行情数据源的实时关联分析应用

在进行数据分析时经常需要对多个不同的数据源进行关联操作,因此在各类数据库的 SQL 语言中均包含了丰富的 join 语句,以支持批计算中的多种关联操作。 DolphinDB 不仅通过 join 语法支持了对于全量历史数据的关联处理,而且在要求低延时的实时…

股票分析及利用tushare查看股票部分信息

股票分析及利用tushare查看股票部分数据 观前提示:本文面向和我一样不懂炒股的投资小白 本文涉及: 利用python调用tushare最基础的少量操作(查看股价及可类推的基本数据、将多支股票数据放到一个DataFrame并作图) 可能存在逻辑…

股票分析工具

1.软件运行界面 2.安装密码:www.luoruiyuan.cn 3.使用说明: 1.填写您的邮箱地址和邮箱昵称方便可以买卖时提醒您,如果不填就不会通过邮箱提醒. 2.股票分析时股票代码框填写多个时请用英文逗号隔开,每一个股票都要添加上市场代码. 例如:601939.SH,600050.SH,000725.SZ 如果不知道…

利用tushare进行股票数据分析

笔者tushare ID:476408 在经过了半年时间的学习中,对熟练的使用tushare进行股票数据分析方面具有一定的基础,能够基本掌握一些常用的算法编程,以下就以自己在校期间的分析报告为分享内容。 利用tushare获取股票信息,…

如何客观的分析 ChatGPT技术

文章目录 如何客观的分析 ChatGPT技术1、GPT 自己的分析2、我的理解3、预训练模型4、ChatGPT 的隐患 (prompt 注入)如何客观的分析 ChatGPT技术 1、GPT 自己的分析 2、我的理解 OpenAI 发布的基于 GPT-3 模型构建的 ChatAI ,使用起来有许多的惊艳之处,但是我们也不得不看到…

个股与指数行情走势对比分析 !股票量化分析工具QTYX-V2.5.2

前言 股票分析过程中往往会同时查看一只股票多个周期的行情走势,比如日线和周线结合观察,60分钟和日线结合观察,也会同时查看一个板块中多个股票的行情走势。 还有一种场景也非常关键——把个股行情与对应指数的行情对比观察。比如选出一只股…

Tushare之股票数据分析

笔者ID:476408 已经使用了整整1年时间的Tushare,个人来讲,在使用过程中体验还是相当不错的。在获取数方面较全面,涵盖数据内容多,而且还不断完善丰富。 下面是利用Tushare 进行股票数据分析的部分。 import tushare…

玩转ChatGPT:制作AI播报视频

一、写在前面 羊了几天,上线就发现,GPT的第三方插件的数量越来越多,使得官方推出了搜索功能: 我逛了一圈,发现这个插件挺有意思,用来生成AI语音播报视频的。 下面给大家尝尝鲜。 二、实战过程 &#xff0…

用 ChatGPT 制作中英双语字幕

用 ChatGPT 制作中英双语字幕 0. 背景1. 使用剪映生成英文字幕2. 使用 ChatGPT 的制作中英双语字幕 0. 背景 最近在学习 AI 相关的知识,有很多视频是英文的。 为了提高学习效率,我考虑将这些视频加上中英双语字幕。 效果展示如下, 1. 使用…

怎样让chatGPT给你打工然后月入过千?

前言 代码在文末,仅供学习了,现在chatgpt以及百度文库改版较大运行不了了。 chatGPT最近火出圈了,怎么薅一个文字模型给你打工呢? 亲测效果: 20230104: 话不多说,直接上图,上个月12天的收益: 总结一下: 薅的对象百度文库创作中心:地址 除了每个文档一块三左右的收…

如何查询chatgpt-API-KEY接口的使用额度,代码php和python源码

ChatGPT是一款由OpenAI开发的强大自然语言处理模型,可以帮助开发者实现各种自然语言相关的应用场景。为了能够使用ChatGPT,开发者需要通过OpenAI获取API-KEY,然后才能使用模型接口进行开发。 但是,在使用ChatGPT的过程中&#xff…

不输ChatGpt,又一款强大的AI,支持中文Claude

特点: Claude,比较适合中文用户,目前无需翻墙(未来不清楚),对于中文问题有所优化,如果你无法使用ChatGPT,推荐你使用Claude,消费非常不错,回复能力强和速度快…

chatgpt赋能python:Python中如何输入中文——从安装到常见问题解决

Python中如何输入中文——从安装到常见问题解决 Python是一门广泛使用的编程语言,其优秀的开源性、易用性、灵活性以及庞大的生态圈也令越来越多的人选择Python。但是对于初学者来说,如何正确输入中文常常成为一个问题。本篇文章从安装、常见问题解决、…

chatgpt赋能python:如何将Python切换成中文界面

如何将Python切换成中文界面 Python 是一门非常受欢迎的编程语言,有着强大的编程能力和广泛的应用范围。一些朋友可能需要在中文环境下使用 Python,但是默认的 Python 界面是英文的,这给一些初学者带来了不便。本文将介绍如何切换 Python 的…

让chatgpt给我做个项目预算,感觉这样的项目预算才有的赚

访问入口来自于以下网站: 无极低码-三维可视化,免费资源下载,气象数据,编程技术,java开发,素材下载,大数据,解决方案,方案,ppt,5G,数字孪生三维可视化,免费资源下载,气象数据,编程技术,java开发,素材下载,大数据,解决方案,方案,ppt,5G,数字孪生https://wheart.cn/ …

chatgpt赋能python:Python如何发送手机短信:实现方法解析和应用场景介绍

Python如何发送手机短信:实现方法解析和应用场景介绍 随着移动 App 的兴起,手机短信已成为现代人日常生活中不可或缺的一部分。在有些场景下需要编写 Python 程序去自动化发送短信,例如企业营销活动、警报系统等。本文将介绍 Python 发送短信…

ChatGPT学习笔记-1

一.ChatGPT背景 作为“人工智能皇冠上的明珠“,基于大规模预训练语言模型的方法,其突出特点是充分利用大模型、大数据和大计算以求更好效果,ChatGPT 是继数据库和搜索引擎之后的全新一代的“知识表示和调用方式”。 大规模预训练语言模型&…