Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python macd

作者:我愿等你贰年〃   发布日期:2026-03-08   浏览:43

# MACD (Moving Average Convergence Divergence) 指标的 Python 实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
import yfinance as yf

# 获取股票数据
def get_stock_data(ticker, start_date, end_date):
    stock_data = yf.download(ticker, start=start_date, end=end_date)
    return stock_data['Adj Close']

# 计算MACD指标
def calculate_macd(data, short_window=12, long_window=26, signal_window=9):
    # 计算短期和长期的指数移动平均线
    ema_short = data.ewm(span=short_window, adjust=False).mean()
    ema_long = data.ewm(span=long_window, adjust=False).mean()

    # 计算MACD线
    macd_line = ema_short - ema_long

    # 计算信号线
    signal_line = macd_line.ewm(span=signal_window, adjust=False).mean()

    # 计算MACD柱状图
    macd_histogram = macd_line - signal_line

    return macd_line, signal_line, macd_histogram

# 绘制MACD图表
def plot_macd(data, macd_line, signal_line, macd_histogram):
    fig, ax = plt.subplots(2, 1, figsize=(14, 10), sharex=True)

    # 绘制股票价格
    ax[0].plot(data.index, data, label='Stock Price')
    ax[0].set_title('Stock Price')
    ax[0].grid(True)

    # 绘制MACD线、信号线和柱状图
    ax[1].plot(macd_line.index, macd_line, label='MACD Line', color='blue')
    ax[1].plot(signal_line.index, signal_line, label='Signal Line', color='orange')
    ax[1].bar(macd_histogram.index, macd_histogram, label='MACD Histogram', color='gray', alpha=0.5)
    ax[1].set_title('MACD Indicator')
    ax[1].legend(loc='best')
    ax[1].grid(True)

    plt.tight_layout()
    plt.show()

# 示例使用
if __name__ == "__main__":
    ticker = 'AAPL'  # 苹果公司股票代码
    start_date = '2022-01-01'
    end_date = '2023-01-01'

    # 获取股票数据
    stock_data = get_stock_data(ticker, start_date, end_date)

    # 计算MACD指标
    macd_line, signal_line, macd_histogram = calculate_macd(stock_data)

    # 绘制MACD图表
    plot_macd(stock_data, macd_line, signal_line, macd_histogram)

解释说明:

  1. 获取股票数据

    • 使用 yfinance 库从 Yahoo Finance 获取指定股票的历史价格数据。
  2. 计算MACD指标

    • MACD 是通过计算两个不同周期的指数移动平均线(EMA)之间的差异来生成的。
    • 短期 EMA 和长期 EMA 的差值构成 MACD 线。
    • MACD 线的 EMA 构成信号线。
    • MACD 柱状图是 MACD 线与信号线之间的差异。
  3. 绘制MACD图表

    • 使用 matplotlib 库绘制股票价格和 MACD 指标。
    • 图表分为两部分:上半部分显示股票价格,下半部分显示 MACD 线、信号线和柱状图。
  4. 示例使用

    • 获取苹果公司(AAPL)在指定日期范围内的股票数据,并计算和绘制 MACD 指标。

上一篇:python 读取word

下一篇:python类和对象

大家都在看

python 二维码识别

python excel 库

python时间格式

pythoneval函数用法

列表切片操作python

python读取文件路径

staticmethod在python中有

python 保存json文件

python开发windows应用程序

python中len是什么意思

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站