MACDについて
概要
- MACD(Moving Average Convergence Divergence)は、移動平均線の収束拡散を利用したテクニカル指標
- 26日移動平均線と12日移動平均線の差を取ることで、トレンドの強さを示す
- 2本の移動平均線のクロスで売買シグナルを出すことができる
具体的な計算
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import seaborn as sns
# 株価データを取得
ticker = '^GSPC'
data = yf.download(ticker, start='2024-01-01', end='2024-07-27')
# MACDを計算
short_window = 12
long_window = 26
signal_window = 9
data['EMA12'] = data['Close'].ewm(span=short_window, adjust=False).mean()
data['EMA26'] = data['Close'].ewm(span=long_window, adjust=False).mean()
data['MACD'] = data['EMA12'] - data['EMA26']
data['Signal Line'] = data['MACD'].ewm(span=signal_window, adjust=False).mean()
data['Histogram'] = data['MACD'] - data['Signal Line']
# seabornスタイルを設定
sns.set(style='whitegrid')
# プロット
fig, ax1 = plt.subplots(figsize=(14,7))
# 株価のプロット
sns.lineplot(data=data, x=data.index, y='Close', label='Close Price', color='black', ax=ax1)
# 第二軸を作成
ax2 = ax1.twinx()
# MACDラインのプロット
sns.lineplot(data=data, x=data.index, y='MACD', label='MACD', color='blue', ax=ax2)
# シグナルラインのプロット
sns.lineplot(data=data, x=data.index, y='Signal Line', label='Signal Line', color='red', ax=ax2)
# ヒストグラムのプロット
ax2.bar(data.index, data['Histogram'], label='Histogram', color='gray', alpha=0.3)
# 凡例を設定
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# タイトルを設定
plt.title('MACD for S&P 500 (^GSPC)')
plt.show()