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

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


介绍

在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来预测未来价格走势。移动平均线和MACD(Moving Average Convergence Divergence)指标是技术分析中常用的工具之一,它们能够帮助投资者识别趋势和短期交叉信号。

本文将分享如何使用Python编程语言以及pandas库来计算股票的移动平均线和MACD指标,并通过一个简单的示例来演示其应用。

准备工作

首先,需要导入pandas库,它是Python中用于数据分析的重要库之一。接下来将使用pandas来处理和分析股票价格数据。

python 复制代码
import pandas as pd

pandas 的主要特点和功能:

特点和功能 描述
数据结构 提供了 Series 和 DataFrame 两种数据结构,方便处理一维和二维数据。
数据读取和写入 支持从多种文件格式(如CSV、Excel、SQL、JSON、HTML等)中读取数据,并可以将数据写入到这些格式中。
数据清洗和转换 提供了丰富的数据清洗和转换函数,如处理缺失值、重复值、数据类型转换、索引操作、数据合并、数据重塑等。
数据分析和统计 提供了各种统计函数和方法,用于描述性统计、数据聚合、分组计算、时间序列分析、滑动窗口计算等。
数据可视化 结合了 Matplotlib 等可视化库,方便绘制各种类型的图表,如折线图、散点图、柱状图等,用于数据可视化和分析展示。
高性能计算 基于 NumPy 实现,内部使用了高效的数据结构和算法,能够快速处理大规模数据,提高计算效率。
灵活性和扩展性 提供了丰富的功能和灵活的接口,可以根据需求进行定制和扩展,支持与其他库和工具的集成。

数据准备

假设已经有了包含股票收盘价数据的DataFrame,现在将其命名为data,并包含一列名为'Close'的数据。以下是一个示例数据集:

python 复制代码
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天的移动平均线,可以这样做:

python 复制代码
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线的差。可以按照以下步骤来计算:

python 复制代码
data['DIF'] = data['Short_MA'] - data['Long_MA']
data['DEA'] = data['DIF'].rolling(window=9).mean()
data['MACD'] = data['DIF'] - data['DEA']

结果展示

最后,将结果打印输出,以便进行进一步分析或可视化。

python 复制代码
print(data[['Close', 'Short_MA', 'Long_MA', 'DIF', 'DEA', 'MACD']])

完整代码

python 复制代码
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']])

演示

相关推荐
sun_tao15 分钟前
LlamaIndex + Qwen3.5-4B 关闭 Thinking 模式调试记录
python·llamaindex·qwen3.5-4b·huggingfacellm
书到用时方恨少!22 分钟前
Python os 模块使用指南:系统交互的瑞士军刀
开发语言·python
带娃的IT创业者1 小时前
WeClaw_40_系统监控与日志体系:多层次日志架构与Trace追踪
java·开发语言·python·架构·系统监控·日志系统·链路追踪
亓才孓1 小时前
【提示词五要素】
python·ai·prompt
财经资讯数据_灵砚智能1 小时前
全球财经资讯日报(夜间-次晨)2026年3月28日
大数据·人工智能·python·语言模型·ai编程
水哥ansys2 小时前
Pyansys-PyMAPDL基本语法01-APDL原生命令流改写格式
python·二次开发·水哥ansys·pyansys·apdl
城数派2 小时前
2000-2024年1km精度人口分布栅格数据(全球/全国/分省/分市)
arcgis·信息可视化·数据分析·excel
迷藏4942 小时前
# 发散创新:低代码开发新范式——用可视化逻辑构建企业级业务系统 在当今快速迭代的软件工程实践
java·python·低代码
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列7--相关Python基础知识6
python·学习·测试工具·pytest
山川行2 小时前
Python快速闯关8:内置函数
java·开发语言·前端·笔记·python·学习·visual studio