[python] MACD 구하기
파이썬을 이용한 MACD 구하기
MACD 란
MACD는 이동평균수렴발산(Moving Average Convergence Divergence)의 약자로, 단기 이동평균선과 장기 이동평균선이 서로 가까워지거나(수렴) 멀어지는(발산) 원리를 이용하여 만들어졌다.주가 흐름의 추세를 확인하고 추세의 강도와 지속성을 파악하는데 활용되는 대표적인 추세추종형 보조지표이다.
산출법
MACD 를 구성하는 요소는 다음의 방식으로 계산할 수 있다.
- MACD = 단기 지수이동평균 − 장기 지수이동평균
- 시그널 = MACD의 K일 지수이동평균
- 히스토그램=MACD−시그널
소스코드
import pandas as pd
import numpy as np
from utils import *
class Macd():
def __init__(self):
super().__init__()
def cal_macd(self, fast=12, slow=26, signal=9):
data = [
['2023-12-08', 207000, 215000, 204000],
['2023-12-11', 213000, 213000, 206000],
..........
['2024-01-17', 186000, 197000, 186000],
['2024-01-18', 186700, 188700, 184400]
]
df = pd.DataFrame(data)
df.columns = ['Date', 'Close', 'High', 'Low']
df['Date'] = pd.to_datetime(df['Date'])
df = df.sort_values(by=['Date'], ascending=True)
try:
df['fast'] = df['Close'].ewm(span=fast, min_periods=fast - 1, adjust=True).mean()
df['slow'] = df['Close'].ewm(span=slow, min_periods=slow - 1, adjust=True).mean()
df['macd'] = fast - slow # 단기 지수이동평균 − 장기 지수이동평균
df['signal'] = df['macd'].ewm(span=signal, adjust=False).mean() # MACD의 K일 지수이동평균
df['diff'] = df['macd'] - signal
except Exception as e:
print('I got a ExceptionError - reason "%s"' % str(e))
pass
if __name__ == "__main__":
cal = Macd()
cal.cal_macd(12, 26, 9)