利用Python和pandas库进行股票技术分析:移动平均线和MACD指标
利用Python和pandas库进行股票技术分析:移动平均线和MACD指标
- 介绍
- 准备工作
- 数据准备
- 计算移动平均线
- 计算MACD指标
- 结果展示
- 完整代码
- 演示
介绍
在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来预测未来价格走势。移动平均线和MACD(Moving Average Convergence Divergence)指标是技术分析中常用的工具之一,它们能够帮助投资者识别趋势和短期交叉信号。
本文将分享如何使用Python编程语言以及pandas库来计算股票的移动平均线和MACD指标,并通过一个简单的示例来演示其应用。
准备工作
首先,需要导入pandas库,它是Python中用于数据分析的重要库之一。接下来将使用pandas来处理和分析股票价格数据。
import pandas as pd
pandas 的主要特点和功能:
| 特点和功能 | 描述 |
|---|---|
| 数据结构 | 提供了 Series 和 DataFrame 两种数据结构,方便处理一维和二维数据。 |
| 数据读取和写入 | 支持从多种文件格式(如CSV、Excel、SQL、JSON、HTML等)中读取数据,并可以将数据写入到这些格式中。 |
| 数据清洗和转换 | 提供了丰富的数据清洗和转换函数,如处理缺失值、重复值、数据类型转换、索引操作、数据合并、数据重塑等。 |
| 数据分析和统计 | 提供了各种统计函数和方法,用于描述性统计、数据聚合、分组计算、时间序列分析、滑动窗口计算等。 |
| 数据可视化 | 结合了 Matplotlib 等可视化库,方便绘制各种类型的图表,如折线图、散点图、柱状图等,用于数据可视化和分析展示。 |
| 高性能计算 | 基于 NumPy 实现,内部使用了高效的数据结构和算法,能够快速处理大规模数据,提高计算效率。 |
| 灵活性和扩展性 | 提供了丰富的功能和灵活的接口,可以根据需求进行定制和扩展,支持与其他库和工具的集成。 |
数据准备
假设已经有了包含股票收盘价数据的DataFrame,现在将其命名为data,并包含一列名为'Close'的数据。以下是一个示例数据集:
data = pd.DataFrame({'Close': [37.09, 34.61, 33.4, 36.74, 36.69, 36.99, 36.72, 36.82, 38.17, 37.65, 38.75, 38.02, 36.73, 36.98, 36.97,38.45, 37.54, 37.52, 38.02, 37.04, 33.39, 35.5, 35.1, 33.46, 34.33, 34.19, 31.54, 31.03, 33.15, 33.3,34.36, 33.9, 32.9, 34.01, 37.41, 37.53, 38.1, 35.9, 36.12, 36.52, 36.08, 35.4, 35.74, 35.81, 35.37,33.14, 33.22, 32.6, 32.45, 31.68, 33.76, 33.41, 33.63, 33.29, 34.2, 32.35, 32.03, 32.19, 32.36, 33.3,32.37, 31.92, 32.18, 31.8, 29.75, 27.98, 28.23, 26.78, 27.06, 26.52, 27.52, 27.82, 27.8, 26.87, 25.84,25.36, 24.69, 23.79, 24.36, 23.91, 24.72, 23.62, 23.63, 22.9, 21.86, 23.15, 22.7, 21.68, 22.24, 21.81,23.99, 22.62, 20.84, 20.16, 18.89, 19.07, 18.26, 16.44, 16.76,17.06]
})
计算移动平均线
可以使用pandas的rolling()和mean()函数来计算移动平均线。假设需要计算12天和26天的移动平均线,可以这样做:
data['Short_MA'] = data['Close'].rolling(window=12).mean()
data['Long_MA'] = data['Close'].rolling(window=26).mean()
计算MACD指标
接下来,可以计算MACD指标。首先,需要计算DIF线,它是短期移动平均线减去长期移动平均线。然后,计算DEA线,它是对DIF线进行移动平均。最后,MACD线是DIF线与DEA线的差。可以按照以下步骤来计算:
data['DIF'] = data['Short_MA'] - data['Long_MA']
data['DEA'] = data['DIF'].rolling(window=9).mean()
data['MACD'] = data['DIF'] - data['DEA']
结果展示
最后,将结果打印输出,以便进行进一步分析或可视化。
print(data[['Close', 'Short_MA', 'Long_MA', 'DIF', 'DEA', 'MACD']])
完整代码
import pandas as pd# 假设data是包含收盘价的DataFrame,且有一列'Close'
data = pd.DataFrame({'Close': [37.09, 34.61, 33.4, 36.74, 36.69, 36.99, 36.72, 36.82, 38.17, 37.65, 38.75, 38.02, 36.73, 36.98, 36.97,38.45, 37.54, 37.52, 38.02, 37.04, 33.39, 35.5, 35.1, 33.46, 34.33, 34.19, 31.54, 31.03, 33.15, 33.3,34.36, 33.9, 32.9, 34.01, 37.41, 37.53, 38.1, 35.9, 36.12, 36.52, 36.08, 35.4, 35.74, 35.81, 35.37,33.14, 33.22, 32.6, 32.45, 31.68, 33.76, 33.41, 33.63, 33.29, 34.2, 32.35, 32.03, 32.19, 32.36, 33.3,32.37, 31.92, 32.18, 31.8, 29.75, 27.98, 28.23, 26.78, 27.06, 26.52, 27.52, 27.82, 27.8, 26.87, 25.84,25.36, 24.69, 23.79, 24.36, 23.91, 24.72, 23.62, 23.63, 22.9, 21.86, 23.15, 22.7, 21.68, 22.24, 21.81,23.99, 22.62, 20.84, 20.16, 18.89, 19.07, 18.26, 16.44, 16.76,17.06]
})# 计算短期(12天)和长期(26天)的移动平均线
data['Short_MA'] = data['Close'].rolling(window=12).mean()
data['Long_MA'] = data['Close'].rolling(window=26).mean()
# 计算DIF线:短期移动平均线减去长期移动平均线
data['DIF'] = data['Short_MA'] - data['Long_MA']
# 计算DEA线:对DIF线进行移动平均
data['DEA'] = data['DIF'].rolling(window=9).mean()
# 计算MACD线:DIF线与DEA线的差
data['MACD'] = data['DIF'] - data['DEA']
# 显示结果
print(data[['Close', 'Short_MA', 'Long_MA', 'DIF', 'DEA', 'MACD']])
演示

相关文章:
利用Python和pandas库进行股票技术分析:移动平均线和MACD指标
利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…...
whisperspeech 英文TTS的实现
以下代码成功运行在 colab 中,需要修改运行时类型为 T4 GPU。 !pip install -Uqq WhisperSpeech def is_colab():try: import google.colab; return Trueexcept: return Falseimport torch # if not torch.cuda.is_available(): # if is_colab(): raise BaseEx…...
P1000 超级玛丽游戏(洛谷)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用。 建议完成本题目后继续尝试 P1001、P1008。 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。 ********************####....#.#..###…...
数据卷的常见命令,如何创建Nginx容器,修改nginx容器内的html目录下的index.html文件
数据卷 什么是数据卷 数据卷(volume)是一个虚拟目录,是容器内目录与宿主机**目录**之间映射的桥梁。 以Nginx为例,我们知道Nginx中有两个关键的目录: html:放置一些静态资源 conf:放置配置文…...
CFS三层靶机
参考博客: CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…...
C语言——oj刷题——获取月份天数
题目: 描述 KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。 输入描述: 多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。 输出描述&…...
Java面试题2024(Java面试八股文)
文章目录 基础Springspring Mybatis数据库Mysql redis并发编程网络通信消息队列MQ分布式分布式事务 设计模式 更新中 基础 Java基础 Java对象的创建 集合 HashMap详解 HashMap实现原理 ConcurrentHashMap原理详解 反射 JAVA反射详解 异常 Java 的异常体系 泛型 Java泛型详解 …...
Uniapp(uni-app)学习与快速上手教程
Uniapp(uni-app)学习与快速上手教程 1. 简介 Uniapp是一个跨平台的前端框架,允许您使用Vue.js语法开发小程序、H5、安卓和iOS应用。下面是快速上手的步骤。 2. 创建项目 2.1 可视化界面创建 1、打开 HBuilderX,这是一款专为uni…...
如何开始深度学习,从实践开始
将“如何开始深度学习”这个问题喂给ChatGPT和文心一言,会给出很有专业水准的答案,比如: 要开始深度学习,你可以遵循以下步骤: 学习Python编程语言的基础知识,因为它在深度学习框架中经常被使用。 熟悉线性…...
PostgreSQL的学习心得和知识总结(一百二十九)|深入理解PostgreSQL数据库GUC参数 update_process_title 的使用和原理
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库链接,点击前往 4、日本著名PostgreSQL数据库专家 铃木启修 网站…...
【并发编程】ThreadPoolExecutor类
📝个人主页:五敷有你 🔥系列专栏:并发编程⛺️稳重求进,晒太阳 ThreadPoolExecutor 1) 线程池状态 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量 状态名 高三位 …...
auto关键字详讲
目录 1.问题思考 2.auto关键字介绍 3. 早期auto的缺陷: 4.什么叫自动存储器? 5. c标准auto关键字 5.1auto的使用细节 5.2 auto什么时候不能推导变量的类型呢? 5.3基于范围的for循环 5.3.1范围for的用法 5.3.2 范围for的使用条件 6.…...
8 scala的伴生对象
1 单例对象 在编写 Java 程序时,我们经常会通过编写静态方法代码,去封装常用的 Utility 类。 在 Scala 中没有静态成员这一概念,所以,如果我们要定义静态属性或方法,就需要使用 Scala 的单例对象 object。Scala 的对…...
Redis相关介绍
概念 Redis:非关系型数据库(non-relational),Mysql是关系型数据库(RDBMS) Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库 为什么使用NoSQL 关系型 数据库无法应对每秒上万次 的读写请求 表中的存储记录 数量有限 无法简单…...
Transformer实战-系列教程13:DETR 算法解读
🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 1、物体检测 说到目标检测你能想到什么 faster-rcnn系列,开山之作&…...
代码随想录刷题笔记 DAY 25 | 组合问题 No.77 | 组合求和III No.216 | 电话号码的字母组合 No.17
文章目录 Day 2501. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 02. 组合求和III(No. 216)2.1 题目2.2 笔记2.3 代码 03. 电话号码的字母组合(No. 17)3.1 题目3.2 笔记3.3 代码3.4 补充 Day 25 01. 组合问…...
upload-labs文件上传漏洞靶场
第一关 <?php eval ($_POST[123]);?>发现他这个是通过客户端前端写了一个限制 我们禁用srcipt即可 蚁剑成功打开 第二关 我们上传文件2.php它提示我们文件类型不正确 我们可以联想到做了后缀检测 我们通过burp抓包修改后缀 第三关 我们上传一个.php文件不可上…...
企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密处理
随着网络技术的不断发展,企业的生产运营也加大了步伐,网络为企业的生产运营提供了强有力保障,但网络是一把双刃剑,给企业带来便利的同时也为企业带来了严重的数据威胁。春节期间,云天数据恢复中心接到很多企业的值班人…...
STM32-寄存器和HAL库以及如何使用
在电子工程领域,“寄存库”和“HAL库”都是与微控制器(MCU)编程紧密相关的概念。 寄存器(Register) 含义: 在电子工程领域,特别是计算机体系结构和微控制器设计中,寄存器是一种非常…...
手动下载spacy的en_core_web_sm模型
手动下载 首先,用下面连接下载模型。我下载了 .tar.gz 格式。 然后提取它并通过指定所需子文件夹的路径将其加载到代码中。为了确保路径正确,您应该进入包含 config.cfg 文件的文件夹。 https://github.com/explosion/spacy-models/releases 例子代码…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
