📜  macd 计算 (1)

📅  最后修改于: 2023-12-03 14:44:06.350000             🧑  作者: Mango

MACD 指标简介

MACD 指标,即移动平均收敛/发散指标(Moving Average Convergence/Divergence),是由Gerald Appel在1970年代末开发的一种技术分析工具,主要用于判断市场的趋势和超买/超卖信号。MACD 指标的核心是基于两条指数移动平均线EMA(Exponential Moving Average)的计算,其计算公式如下:

MACD = EMA(12)-EMA(26)

其中,EMA(12)指12日指数移动平均线,EMA(26)指26日指数移动平均线,两者的差值即为MACD。

除了MACD指标之外,常用的还有MACD离散指标(MACD Histogram),它是MACD和信号线(Signal Line)之间的差值,通常以柱状图形式呈现。其计算公式如下:

MACD Histogram = MACD - Signal Line

其中,Signal Line 通常是 MACD 的九日移动平均线,用于辅助判断市场趋势。

MACD 指标计算实现

在计算 MACD 指标时,需要指定两条指数移动平均线的天数,比如 12 天和 26 天,还需要指定信号线的天数,比如 9 天。以下是 Python 实现计算 MACD 指标的代码片段:

# 计算 12 和 26 日指数移动平均线
ema_12 = df['close'].ewm(span=12, adjust=False).mean()
ema_26 = df['close'].ewm(span=26, adjust=False).mean()

# 计算 MACD
macd = ema_12 - ema_26

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

# 计算 MACD 离散指标
macd_hist = macd - signal_line

其中,df['close'] 是指股票收盘价格的序列,ewm() 函数是指数移动平均线的计算函数,span 参数指定移动平均线的天数,adjust 参数指定是否按指定天数进行加权平均,默认为 True,即按照指定天数进行加权平均。

MACD 指标应用实例

以 Python 为例,下面是如何使用 ta-lib 库对股票数据进行 MACD 指标计算和可视化的代码片段:

import talib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 加载股票数据
df = pd.read_csv('AAPL.csv', index_col='Date', parse_dates=True)

# 计算 MACD
macd, macd_signal, macd_hist = talib.MACD(df['Close'], fastperiod=12, slowperiod=26, signalperiod=9)

# 可视化 MACD
plt.figure(figsize=(12,6))
plt.plot(df.index, df['Close'], label='Close')
plt.plot(df.index, macd, label='MACD')
plt.plot(df.index, macd_signal, label='Signal Line')
plt.bar(df.index, macd_hist*2, label='MACD Histogram')
plt.legend()
plt.show()

其中,talib 是 Python 的一个技术分析库,可以方便地计算多种指标,包括 MACD 指标。注意,MACD() 函数的参数与前面介绍的计算公式略有不同,这是 ta-lib 库的规定写法。在可视化部分,使用了 matplotlib 库绘制股票价格和 MACD 指标的曲线以及 MACD 离散指标的柱状图。