利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

news/2024/2/28 0:01:13

利用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']])

演示

在这里插入图片描述


http://www.ppmy.cn/news/1350016.html

相关文章

备战蓝桥杯---组合数学基础1

让我们来几道高中的组合题吧: 1.我们一定有n个向下,为 2.我们挑最大的两个,条件是他们奇偶性相同,为2*A10,2; 3.用捆绑法即可。 4.我们用隔板法,为 5.问题等价于23个相同的球放到3个盒子里,每个盒子至少…

golang设置

golangci-lint 代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golint 会自动查找项目中的 .golangci.yml 配置文件 会检查代码中潜在常见问题以及代码风格问题 # 文档:https://golangci-lint.run/ # https://github.com/golangci/golang…

[2024]常用的pip指令

[2024]常用的pip指令 HI,这里是肆十二,好久不见,大家! 新年好! pip是Python的包管理工具,它可以用来安装、升级、卸载Python包。以下是一些常用的pip指令: 安装包: bash复制代码…

【Python】洛谷P4325 [COCI2006-2007#1] Modulo

P4325 [COCI2006-2007#1] Modulo 题面翻译 给出 10 10 10 个整数,问这些整数除以 42 42 42 后得到的余数有多少种。 第一个样例的十个结果是 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 1,2,3,4,5,6,7,8,9,10 1,2,3,4,5,6,7,8,9,10,有 10 10 10 个不…

Vscode SSH使用云服务器访问内网主机

Vscode SSH使用云服务器访问内网主机 云服务器在配置策略中开放使用到的端口号,比如250和251作为使用。 首先在内网主机上使用ssh-copy-id root云服务器公网IP,将内网主机的公钥放到服务器上 这一步必须完成,不然下面的命令无法成功建立隧…

精读《js 模块化发展》

1 引言 如今,Javascript 模块化规范非常方便、自然,但这个新规范仅执行了 2 年,就在 4 年前,js 的模块化还停留在运行时支持,10 年前,通过后端模版定义、注释定义模块依赖。对经历过来的人来说,…

Hadoop:认识MapReduce

MapReduce是一个用于处理大数据集的编程模型和算法框架。其优势在于能够处理大量的数据,通过并行化来加速计算过程。它适用于那些可以分解为多个独立子任务的计算密集型作业,如文本处理、数据分析和大规模数据集的聚合等。然而,MapReduce也有…

从零开始实现消息队列(二)

从零开始实现消息队列 .核心API交换机类型持久化网络通信Connection和Channel 消息应答模块划分 . 核心API 对于Broker来说,要实现以下核心API,通过这些API来实现消息队列的基本功能. 创建队列(queueDeclare)销毁队列(queueDelete)创建交换机(exchangeDeclare)销毁交换机(exc…

QT学习文件操作类 QFile

(一)QFile QFile 是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能,支持文本和二进制文件。QFile 继承自 QIODevice ,因此它可以像其他 IO 设备一样使用。 (1)主要功能 1. 文件读写…

学习记录691@spring面试之bean的作用域

Spring为Bean定义了5种作用域,分别为Singleton(单例)、Prototype(原型)、Request(请求级别)、Session(会话级别)和Global Session(全局会话)。 S…

mysql、mybatis中SORT

SORT排序 根据数据表sys_series中HOT(int类型)进行升序排列: 原来的数据库中存储: 排序 # 结果是HOT字段为null的所有数据都排在最前面,不为null的数据按升序排列 SELECT * FROM sys_series ORDER BY HOT;# 结果是H…

项目02《游戏-13-开发》Unity3D

基于 项目02《游戏-12-开发》Unity3D , 任务 :宠物系统 及 人物头像血条 首先在主面板MainPanel预制体中新建一个Panel, 命名为PlayerInfo 新建Image,作为头像 新建Slider,作为血条 对Panel组件添加一个水…

python从入门到精通(二十):python的exe程序打包制作

python的exe程序打包制作 python打包的概念python打包的模块导入模块安装验证基本语法命令参数文件夹模式单文件模式资源嵌入exe更改图标启动画面(闪屏)禁用异常提示 python打包的概念 将普通的*.py程序文件打包成exe文件。exe文件即可执行文件&#xf…

林浩然与杨凌云的Java世界奇遇记:垃圾回收大冒险

林浩然与杨凌云的Java世界奇遇记:垃圾回收大冒险 The Java Adventure Chronicles of Lin Haoran and Yang Lingyun: Garbage Collection Odyssey 在一个充满0和1代码森林的世界里,住着两位勇敢的程序员侠侣——林浩然和杨凌云。林浩然是个身怀Java绝技的…

[职场] 如何通过运营面试_1 #笔记#媒体#经验分享

如何通过运营面试 盈利是公司的事情,而用户就是你运营的事情。你需要彻底建立一个庞大而有效的用户群,这样才能让你们的公司想盈利就盈利,想战略就战略,想融资就融资。 一般从事运营的人有着强大的自信心,后台数据分析…

Ainx-V0.2-简单的连接封装与业务绑定

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于Ainx系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基础系列…

爬爬今天爬小说————爬虫练习

爬不同的的小说,会有略微的改动。 我今天这个是从一章的提前到全部的提前。 在我们电脑里面了,想怎么看就怎么看。 代码代码: import re import requestsheaders {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x6…

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画,就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像,两次绘制的图像之间差异较小,肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法,可以借助于…

【每日一题】牛客网——链表分割

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

设计模式-状态模式 State

状态模式 一、简介概述二、有限状态机1、分支法2、查表法3、状态模式 三、重点回顾 一、简介概述 状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。 状态设计模式是一种行为型设计模式,它允许对象在其内部状态发生变化…
最新文章