股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据
数据
数据是上证指数日行情数据,股票代码000002.sz,原始数据shdata示例如下:

读取数据:
import numpy as np
import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.ticker as ticker
import talib
from mplfinance.original_flavor import candlestick_ohlc
#from matplotlib.ticker import MaxNLocator, FuncFormatter
shdata = pd.read_csv("D:/my_files/sh_index.csv")
shdata['date'] = pd.to_datetime(shdata['trade_date'], format="%Y%m%d") #设置date列格式为年月日
shdata_beiyong = shdata.copy()
shdata.set_index('date',inplace=True) #设置索引
日数据转周数据
有时候需要以周为单位对数据进行分析或观测,数据转换代码如下:
p='w'
pshdata = shdata.resample(p).last() #转换,周线的每个变量都等于那一周中最后一个交易日的变量值
pshdata['open'] = shdata['open'].resample(p).first() #周线的open等于那一周中第一个交易日的open
pshdata['high'] = shdata['high'].resample(p).max() #周线的high等于那一周中的high的最大值
pshdata['low'] = shdata['low'].resample(p).min() #周线的low等于那一周中的low的最大值
pshdata['vol'] = shdata['vol'].resample(p).sum() #周线的vol和amount等于那一周中vol和amount各自的和
pshdata['amount'] = shdata['amount'].resample(p).sum()
pshdata = pshdata[pshdata['open'].notnull()] #删除一整周没有数据的周
K线
K线图又称蜡烛图、日本线、阴阳线、棒线等,常用说法是“K线”,K线是一条柱状的线条,由影线和实体组成,影线在实体上方的部分叫上影线,下方的部分叫下影线,实体分阳线和阴线。其中影线表明当天交易的最高和最低价,而实体表明当天的开盘价和收盘价。为了展示更清晰,这里只用12个数据画K线:
shdata12 = shdata.iloc[-12: , : ] #只保留最近12个数据
mpf.plot(shdata12, type='candle', style='yahoo') #做K线图
均线(MA)
移动平均线 又称为 均线(Moving Average ), 也常简称MA,代表过去一段时间里的平均成交价格,均线最主要目的是用来判断趋势通常是预期市场现在跟未来可能的走势。一般会用两条均线(短期均线和长期均线)结合来分析股票走势,这里绘制5日均线与20日均线,同时用灰色绘制日收盘价:
#计算5日均线、10日均线数据
shdaily = pd.DataFrame(shdata['close']) #提取收盘价列
ma_list = [5, 20] # 要绘制的均线列表
for ma in ma_list:shdaily['ma_' + str(ma)] = shdaily['close'].rolling(ma).mean() #计算均线数据
plt.plot(shdaily['close'], '-', label = 'close',color = 'gray') #收盘价作图
for ma in ma_list:plt.plot(shdaily['ma_' + str(ma)], '-', label = 'ma_' + str(ma)) #ma作图
plt.gcf().autofmt_xdate()
plt.legend() #显示图例
#plt.savefig('all.png')
plt.show()#显示图片

MACD与RSI图
MACD是平滑异同移动平均线(Moving Average Convergence / Divergence) 的缩写,为 Gerald Appel于1979年所创,包括两条线和1个柱形图共3种信号,分别为DIFF线、DEA线和MACD红绿柱线。当MACD从负数转向正数,是买的信号。当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。
相对强弱指标(RSI)又叫力度指标,其英文全称为“Relative Strength Index”,由威尔斯•魏尔德所创造的,是目前股市技术分析中比较常用的中短线指标。RSI是一定时期内市场的涨幅与涨幅加上跌幅的比值,它是买卖力量在数量上和图形上的体现,投资者可根据其所反映的行情变动情况及轨迹来预测未来股价走势。在实践中,人们通常将其与移动平均线相配合使用,借以提高行情预测的准确性。
VOL是一个成交量指标,是指个股或者大盘一定时间内的成交数量,一般的炒股软件中都是指成交总手数(1手=100股)。成交量体现在炒股软件上就是一根竖着的柱子,成交量越大,柱子越高,反之越矮,成交量反映的就是一段时间内市场热不热闹,投资者交易的热情高不高。
MACD、RSI与成交量绘图代码如下:
data = shdata_beiyong
data=data.reset_index() #重置index
data=data.iloc[:,1:]
data["macd"], data["macd_signal"], data["macd_hist"] = talib.MACD(data['close']) #获取macd
data["ma8"] = talib.MA(data["close"], timeperiod=8) #获取8日均线
data["ma25"] = talib.MA(data["close"], timeperiod=25) #获取25日均线
data["rsi"] = talib.RSI(data["close"]) #获取rsi
fig = plt.figure() #创建绘图区,包含四个子图
fig.set_size_inches((20, 16))
ax_candle = fig.add_axes((0, 0.72, 1, 0.32)) #蜡烛图子图
ax_macd = fig.add_axes((0, 0.48, 1, 0.2), sharex=ax_candle) #macd子图
ax_rsi = fig.add_axes((0, 0.24, 1, 0.2), sharex=ax_candle) #rsi子图
ax_vol = fig.add_axes((0, 0, 1, 0.2), sharex=ax_candle) #成交量子图
ohlc = [] #存放数据,candlestick_ohlc需要传入固定格式的数据
row_number = 0
for date, row in data.iterrows():date, openp, highp, lowp, closep = row[2:7]ohlc.append([row_number, openp, highp, lowp, closep])row_number = row_number + 1date_tickers = data.date.values #获取Date数据
def format_date(x, pos=None): #数据在date这个位置传入的是int类型,使date_tickers是所有日期的字符串形式列表if x < 0 or x > len(date_tickers) - 1:return ''return date_tickers[int(x)]#绘制带均线的K线图
ax_candle.plot(data.index, data["ma8"], label="MA8")
ax_candle.plot(data.index, data["ma25"], label="MA25")
candlestick_ohlc(ax_candle, ohlc, colorup="g", colordown="r", width=0.8)
ax_candle.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
ax_candle.xaxis.set_major_locator(ticker.MultipleLocator(8)) #设置间隔为6个交易日
ax_candle.grid(True)
ax_candle.set_title("title", fontsize=20)
ax_candle.legend()#绘制MACD
ax_macd.plot(data.index, data["macd"], label="macd")
ax_macd.bar(data.index, data["macd_hist"] * 3, label="hist")
ax_macd.plot(data.index, data["macd_signal"], label="DIF")
ax_macd.set_title('MACD')
ax_macd.legend()#绘制RSI
ax_rsi.set_ylabel("(%)")
ax_rsi.plot(data.index, [70] * len(data.index), label="overbought")
ax_rsi.plot(data.index, [30] * len(data.index), label="oversold")
ax_rsi.plot(data.index, data["rsi"], label="rsi")
ax_rsi.set_title('rsi')
ax_rsi.legend()#绘制成交量
ax_vol.bar(data.index, data["vol"] / 1000000)
ax_vol.set_ylabel("(Million)")
plt.show()

相关文章:
股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据
数据 数据是上证指数日行情数据,股票代码000002.sz,原始数据shdata示例如下: 读取数据: import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…...
重写equals()方法为什么同时要重写hashcode()
equals()方法 equals()方法是Object类中的一个方法,在Object类中,equals等同于。 在不同的类中,往往会对equals()按需求进行重写。重写的目的都是:用于比较两个对象是否 "相等"。如果两个对象的内容相同,那…...
安全及应用(更新)
一、账号安全 1.1系统帐号清理 #查看/sbin/nologin结尾的文件并统计 [rootrootlocalhost ~]# grep /sbin/nologin$ /etc/passwd |wc -l 40#查看apache登录的shell [rootrootlocalhost ~]# grep apache /etc/passwd apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin#改变…...
Hadoop权威指南-读书笔记-03-Hadoop分布式文件系统
Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 还是老样子~挑重点记录哈😁有兴趣的小伙伴可以去看看原著😊 第三章 Hadoop分布式文件系统 当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分…...
Rust入门实战 编写Minecraft启动器#2建立资源模型
首发于Enaium的个人博客 我们需要声明几个结构体来存储游戏的资源信息,之后我们需要将json文件解析成这几个结构体,所以我们需要添加serde依赖。 serde { version "1.0", features ["derive"] }资源相关asset.rs use serde::De…...
小白学C++(第一天)基础入门
温馨提醒:本篇文章,请各位c基础不行的童鞋不要贸然观看 C的第一个程序 第一个关键字namespace namespace 是定义空间的名字的关键字,使用格式格式如下: namespace 空间名 { } 其中{ }内的命名空间的成员,可以定义…...
谷歌正在试行人脸识别办公室安全系统
内容提要: 🧿据美国消费者新闻与商业频道 CNBC 获悉,谷歌正在为其企业园区安全测试面部追踪技术。 🧿测试最初在华盛顿州柯克兰的一间办公室进行。 🧿一份内部文件称,谷歌的安全和弹性服务 (GSRS) 团队将…...
【CSS01】CSS概述,使用样式的必要性,CSS语法及选择器
文章目录 一、什么是样式二、使用样式的必要性三、使用样式的几种方式四、CSS基本语法:五、CSS的注释六、CSS选择器——重点相关单词 一、什么是样式 概念: Cascade [kˈskeɪd] Style Sheet [ʃiːt] 级联样式单/表,层叠样式表 CSS有化腐…...
PostgreSQL的pg_bulkload工具
PostgreSQL的pg_bulkload工具 pg_bulkload 是一个针对 PostgreSQL 提供高性能批量数据加载的工具。相较于内置的 COPY 命令,pg_bulkload 更加灵活并且在许多情况下性能更高。它支持数据的强制加载、数据过滤、数据转换以及错误处理等多种功能,非常适合需…...
【Java伴学笔记】Day-01 命令行|环境|编译解释运行|Java的相关分支|Java的特性|字面量
一、关于命令行 图形化界面的缺点 需要加载图片等一系列资源 效率较低 命令行 CMDMicrosoft Learn-CMDWindows CMD常用命令大全(值得收藏) 二、环境 什么是JDK JDK是Java Development Kit的缩写,意为Java开发工具包。它是一个用于开发Java应用…...
如何使用Vue3创建在线三维模型展示?
本文由ScriptEcho平台提供技术支持 项目地址:传送门 代码相关的技术博客 代码应用场景介绍 本段代码使用 RoughJS 库在 HTML5 Canvas 上创建了手绘风格的图像,展示了 RoughJS 库的强大功能,可用于创建具有有机手绘外观的图形。 代码基本…...
使用ndoe实现自动化完成增删改查接口
使用ndoe实现自动化完成增删改查接口 最近工作内容比较繁琐,手里需要开发的项目需求比较多,常常在多个项目之间来回切换,有时候某些分支都不知道自己开发了什么、做了哪些需求, 使用手写笔记的方式去记录分支到头来也是眼花缭乱&a…...
排序 -- 手撕归并排序(递归和非递归写法)
一、基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有…...
防火墙基础及登录(华为)
目录 防火墙概述防火墙发展进程包过滤防火墙代理防火墙状态检测防火墙UTM下一代防火墙(NGFW) 防火墙分类按物理特性划分软件防火墙硬件防火墙 按性能划分百兆级别和千兆级别 按防火墙结构划分单一主机防火墙路由集成式防火墙分布式防火墙 华为防火墙利用…...
【Vue】使用html、css实现鱼骨组件
文章目录 预览图组件测试案例 预览图 组件 <template><div class"context"><div class"top"><div class"label-context"><div class"label" v-for"(item, index) in value" :key"index&qu…...
Python的多态
在 Python 中,多态(Polymorphism)是指不同的对象可以对相同的消息(方法调用)做出不同的响应。 简单来说,多态允许使用一个统一的接口来操作不同类型的对象,而这些对象会根据自身的类型来执行相应…...
001uboot体验
1.uboot的作用: 上电->uboot启动->关闭看门狗、初始化时钟、sdram、uart等外设->把内核文件从flash读取到SDRAM->引导内核启动->挂载根文件系统->启动根文件系统的应用程序 2.uboot编译 uboot是一个通用的裸机程序,为了适应各种芯片&…...
Flask之电子邮件
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、使用Flask-Mail发送电子邮件 1.1、配置Flask-Mail 1.2、构建邮件数据 1.3、发送邮件 二、使用事务邮件服务SendGrid 2.1、注册SendGr…...
Vue 2 与 ECharts:结合使用实现动态数据可视化
在现代前端开发中,数据可视化变得越来越重要。ECharts 是一个强大的数据可视化库,而 Vue 2 则是一个流行的前端框架。本文将介绍如何将 Vue 2 和 ECharts 结合使用,以实现动态数据可视化。 安装与配置 首先,确保你的项目中已经安…...
.net core Redis 使用有序集合实现延迟队列
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的…...
【Polars 2.0企业级数据清洗黄金法则】:5大生产环境避坑指南+实测性能提升3.7倍基准报告
第一章:Polars 2.0企业级数据清洗黄金法则总览Polars 2.0 以零拷贝语义、并行执行引擎与原生 Arrow 内存布局为核心,重构了企业级数据清洗的性能边界与工程可靠性。其惰性 API 与 eager 模式无缝协同,使复杂清洗流水线既可交互调试࿰…...
LeetCode 热题100——128.最长连续序列
题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums [100,4,200,1,3,2] 输出&…...
DS1881对数型数字电位器I²C驱动详解
1. DS1881 数字电位器驱动深度解析:面向嵌入式系统的IC对数型精密控制方案1.1 器件本质与工程定位DS1881 是 Dallas Semiconductor(后被 Maxim Integrated 收购)推出的单通道 IC 接口对数型数字电位器,其核心价值不在于“可编程电…...
突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破
突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你是否厌倦了百度网盘的龟速下载&…...
Polars 2.0清洗性能天花板在哪?实测对比Dask/Modin/Vaex:单机1TB数据清洗仅需11.3秒(附完整安装脚本)
第一章:Polars 2.0 大规模数据清洗技巧Polars 2.0 引入了更严格的惰性执行模型、增强的字符串与时间处理能力,以及原生支持多线程 I/O 的 LazyFrame API,显著提升了 TB 级数据清洗的吞吐与可控性。相比 Pandas,其列式内存布局与零…...
终极指南:30分钟打造你的首个ESP32 AI智能硬件项目
终极指南:30分钟打造你的首个ESP32 AI智能硬件项目 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 还在为嵌入式AI开发的高门槛而烦恼吗?物联…...
intv_ai_mk11生成效果:对‘提高工作效率’需求输出结构清晰、可执行的5条建议
intv_ai_mk11生成效果:对"提高工作效率"需求输出结构清晰、可执行的5条建议 1. 模型介绍与使用场景 intv_ai_mk11是一个基于Llama架构的中等规模文本生成模型,特别适合处理通用问答、文本改写、解释说明等任务。这个模型已经完成本地部署&am…...
Vue 3 useModel与defineModel实战对比:如何根据项目需求选择最佳双向绑定方案
1. Vue 3双向绑定技术演进与核心概念 双向数据绑定一直是Vue框架的核心特性之一。在Vue 3.4版本中,官方引入了两种新的实现方式:useModel和defineModel。这两种API虽然目标相同,但在使用场景和实现方式上存在明显差异。 要理解它们的区别&…...
102. 在控制平面主机名更改后恢复 Rancher 配置的 RKE2 集群
Environment 环境 Rancher provisioned RKE2 downstream cluster control plane node hostname changed, without removing the node from the cluster. Rancher 配置了 RKE2 下游集群控制平面节点的主机名更改,但未将该节点从集群中移除。 Procedure 程序It is …...
告别重复编码:用Copaw结合快马平台,自动化生成你的常用工具模块
作为一名经常需要整理会议纪要的开发者,我一直在寻找能提升效率的工具。最近尝试用Copaw结合InsCode(快马)平台做了一个会议纪要自动生成器,效果出乎意料地好。整个过程几乎没写代码,却实现了核心功能,分享下具体实现思路…...

