[python] MACD 구하기

[python] MACD 구하기 updated_at: 2024-01-19 16:55

파이썬을 이용한 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)
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글