股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据

news2024/9/21 15:47:23

数据

        数据是上证指数日行情数据,股票代码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 + 1

date_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()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三、mysql-万字长文读懂mysql

mysql 三、 Mysql3.1 基础3.1.1 mysql执行流程-组成架构3.2 索引3.2.1 索引底层的数据结构与算法分类在创建表时,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引B+树结构3.2.2 为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构3.2.2.1. 从磁盘角度出发3.2.2.2. 数据…

全志A527 T527 设置左右分屏修改为单屏幕,应用分屏改为单屏

1.前言 android13中,A527的系统设置变成,左边是一级菜单,右侧是二级菜单, 这样跟我们以前android7/8/9的布局是不一样的,我们需要将它修改为一级菜单,点进去才是二级菜单这种。 效果如下 2.系统设置实现分析 它这里使用的是google新出的embedding activity, 相关的知…

MHA Master High Availability

一、MHA工作原理和架构 MHA利用 SELECT 1 As Value 指令判断master服务器的健康性,一旦master 宕机,MHA 从宕机崩溃的master保存二进制日志事件&#xff08;binlog events&#xff09;识别含有最新更新的slave应用差异的中继日志&#xff08;relay log&#xff09;到其他的sla…

celery执行任务报错ValueError: not enough values to unpack

背景 在做用户注册模块的时候需要对手机号验证的过程进行优化&#xff0c;目前想到的方式是通过celeryrabbitmq的方式进行异步处理&#xff0c;选择使用celery是因为使用方便、性能好、可分布式部署。 环境信息 目前使用地win11容器化启动 rabbitmq:3.13.2 python:3.6.8 cel…

21. Java AQS 原理

1. 前言 本节内容主要是对 AQS 原理的讲解&#xff0c;之所以需要了解 AQS 原理&#xff0c;是因为后续讲解的 ReentrantLock 是基于 AQS 原理的。本节内容相较于其他小节难度上会大一些&#xff0c;基础薄弱的学习者可以选择性学习本节内容或者跳过本节内容。 了解什么是 AQ…

【目录】阅读须知!全博文、专栏大纲

首先要和大家说一下&#xff0c;博主的文章并不是想到哪里写到哪里&#xff0c;而是以整个大后端为主题&#xff0c;成体系的在写专栏&#xff0c;从和后端紧相关的计算机核心课程开始、到JAVA SE、JAVA EE、到数据库、MQ等各类中间件、再到业务场景、性能优化。当然也会涉及一…

Git秘籍大公开:从基础概念到高级技巧的全面解析

文章目录 前言一、Git基础介绍1. 作用2. 为什么要进行源代码管理?3. Git的诞生4. Git管理源代码特点5. Git操作流程图解 二、工作区暂存区和仓库区介绍1. 工作区2. 暂存区3. 仓库区 三、Git单人本地仓库操作1. 安装git2. 查看git安装结果3. 创建项目4. 创建本地仓库5. 配置个人…

鸿蒙系统:未来智能生态的引领者

在当今这个日新月异的互联网领域&#xff0c;操作系统作为连接硬件与软件的桥梁&#xff0c;其重要性不言而喻。随着华为鸿蒙系统&#xff08;HarmonyOS&#xff09;的崛起&#xff0c;一场关于操作系统未来的讨论再次被推向高潮。 鸿蒙OS&#xff0c;华为的全新力作&#xff…

字节码编程javassist之打印方法耗时和入参

写在前面 本文看下如何实现打印方法耗时和入参。 1&#xff1a;程序 需要增强的类&#xff1a; public class ApiTest1 {public Integer strToInt(String str01, String str02) {return Integer.parseInt(str01);}}插桩类 package com.dahuyou.javassist.huohuo.aa;import…

【数据结构】线性表----栈详解

栈 栈&#xff08;Stack&#xff09;是一种常见的数据结构&#xff0c;它具有**后进先出&#xff08;Last In, First Out, LIFO&#xff09;**的特点。栈的运作类似于物理世界中的叠盘子&#xff1a;最新放上去的盘子最先被拿走&#xff0c;而最底部的盘子最后才能被取出。 如…

C语言学习记录Day2

for循环 for&#xff08;表达式1&#xff1b;表达式2&#xff1b;表达式3&#xff09; 循环语句&#xff1b; 注&#xff1a;表达式1&#xff1a;初始化部分.表达式2&#xff1a;条件判断部分 表达式3&#xff1a;调整部分 不可再for循环体内修改循环变量&#xff0c;防止f…

【5G VoNR】VoNR流程简述

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

支持向量机 (support vector machine,SVM)

支持向量机 &#xff08;support vector machine&#xff0c;SVM&#xff09; flyfish 支持向量机是一种用于分类和回归的机器学习模型。在分类任务中&#xff0c;SVM试图找到一个最佳的分隔超平面&#xff0c;使得不同类别的数据点在空间中被尽可能宽的间隔分开。 超平面方…

const 修饰不同内容区分

1.修饰局部变量 const int a 1;int const a 1; 这两种是一样的 注意&#xff1a; const int b; 该情况下编译器会报错&#xff1a;常量变量"b”需要初始值设定项 将一个变量没有赋初始值直接const修饰后&#xff0c;在以后时无法更改内容的。 2.修饰常量字符串 a.…

Python前沿技术:机器学习与人工智能

Python前沿技术&#xff1a;机器学习与人工智能 一、引言 随着科技的飞速发展&#xff0c;机器学习和人工智能&#xff08;AI&#xff09;已经成为了计算机科学领域的热门话题。Python作为一门易学易用且功能强大的编程语言&#xff0c;已经成为了这两个领域的首选语言之一。本…

U盘管理软件有哪些?3款好用的软件亲测有效!

在数字化办公与数据交换日益频繁的今天&#xff0c;U盘作为便携的存储设备&#xff0c;其重要性不言而喻。 然而&#xff0c;U盘的使用也带来了数据泄露、病毒感染等安全隐患。为了有效管理U盘&#xff0c;确保数据安全与合规性&#xff0c;市场上涌现出了众多U盘管理软件。 小…

电脑选购全解析!你需要知道的一切!

在选择电脑类型时&#xff0c;你可以考虑以下因素&#xff1a; 你的主要用途是什么&#xff1f; 你是否需要携带电脑&#xff1f; 你的预算是多少&#xff1f; 你对性能和图形要求有多高&#xff1f; 你是否需要特定的软硬件功能&#xff1f;根据这些因素&#xff0c;你可以…

生成式人工智能:开发者的得力助手还是职业威胁?

在过去的几年里&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;在软件开发领域引发了广泛关注。AI工具在代码生成、错误检测、自动化测试等方面的应用&#xff0c;正在迅速改变开发者的工作方式。AI究竟是在帮助开发者提高效率&#xff0c;还是在逐渐取代他们&#xf…

预提待摊费用处理费时费力?这样做更高效!

一笔费用发生之后&#xff0c;发票取得时间、资金支付时间、费用所属时间都可能不一致&#xff0c;在权责记账规则下&#xff0c;“预提”、“待摊”的账务处理方法成为企业财务业务处理的常用手段。相应地&#xff0c;预提和摊销业务在企业极为常见&#xff0c;仅针对企业规模…

Android network - NUD检测机制(Android 14)

Android network - NUD检测机制 1. 前言2. 源码分析2.1 ClientModeImpl2.2 IpClient2.3 IpReachabilityMonitor 1. 前言 在Android系统中&#xff0c;NUD&#xff08;Neighbor Unreachable Detection&#xff09;指的是网络中的邻居不可达检测机制&#xff0c;它用于检测设备是…