# 如何使用Python實現MACD畫圖
## 引言
MACD(Moving Average Convergence Divergence)是一種常用的技術分析指標,由Gerald Appel于1970年代提出。它通過計算不同周期的指數移動平均線(EMA)之間的差異,幫助投資者判斷市場趨勢和買賣時機。本文將介紹如何使用Python的`matplotlib`和`pandas`庫實現MACD的計算與可視化。
---
## 1. 準備工作
### 1.1 安裝必要庫
確保已安裝以下Python庫:
```bash
pip install pandas matplotlib numpy yfinance # 數據獲取與處理
以股票數據為例,使用yfinance獲取歷史數據:
import yfinance as yf
# 下載蘋果公司股票數據
data = yf.download("AAPL", start="2020-01-01", end="2023-01-01")
print(data.head())
MACD由三部分組成: - DIF線:12日EMA與26日EMA的差值。 - DEA線:DIF的9日EMA(又稱信號線)。 - MACD柱:DIF與DEA的差值。
def calculate_ema(data, window):
return data['Close'].ewm(span=window, adjust=False).mean()
data['EMA_12'] = calculate_ema(data, 12)
data['EMA_26'] = calculate_ema(data, 26)
data['DIF'] = data['EMA_12'] - data['EMA_26']
data['DEA'] = data['DIF'].ewm(span=9, adjust=False).mean()
data['MACD'] = data['DIF'] - data['DEA']
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), gridspec_kw={'height_ratios': [2, 1]})
ax1.plot(data.index, data['Close'], label='Close Price', color='black')
ax1.plot(data.index, data['EMA_12'], label='EMA 12', color='blue', linestyle='--')
ax1.plot(data.index, data['EMA_26'], label='EMA 26', color='red', linestyle='--')
ax1.set_title('Price with EMA Lines')
ax1.legend()
# DIF與DEA線
ax2.plot(data.index, data['DIF'], label='DIF', color='blue')
ax2.plot(data.index, data['DEA'], label='DEA (Signal)', color='red')
# MACD柱狀圖
ax2.bar(data.index, data['MACD'], label='MACD Histogram',
color=np.where(data['MACD'] > 0, 'green', 'red'))
ax2.set_title('MACD Indicator')
ax2.legend()
plt.tight_layout()
plt.show()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
# 數據獲取
data = yf.download("AAPL", start="2020-01-01", end="2023-01-01")
# 計算MACD
data['EMA_12'] = data['Close'].ewm(span=12, adjust=False).mean()
data['EMA_26'] = data['Close'].ewm(span=26, adjust=False).mean()
data['DIF'] = data['EMA_12'] - data['EMA_26']
data['DEA'] = data['DIF'].ewm(span=9, adjust=False).mean()
data['MACD'] = data['DIF'] - data['DEA']
# 繪圖
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), gridspec_kw={'height_ratios': [2, 1]})
ax1.plot(data.index, data['Close'], label='Close Price', color='black')
ax1.plot(data.index, data['EMA_12'], label='EMA 12', color='blue', linestyle='--')
ax1.plot(data.index, data['EMA_26'], label='EMA 26', color='red', linestyle='--')
ax1.set_title('Price with EMA Lines')
ax1.legend()
ax2.plot(data.index, data['DIF'], label='DIF', color='blue')
ax2.plot(data.index, data['DEA'], label='DEA', color='red')
ax2.bar(data.index, data['MACD'], color=np.where(data['MACD'] > 0, 'green', 'red'))
ax2.set_title('MACD Indicator')
ax2.legend()
plt.tight_layout()
plt.show()
通過Python實現MACD可視化,投資者可以更直觀地理解市場動態,輔助決策制定。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。