[파이썬] 업비트 지표 구하기 - MACD(이동평균수렴·확산지수)

2023. 2. 23. 10:00자동매매/업비트

반응형

MACD란, Moving Average Convergence & Divergence의 약자로, 한국어로 번역하면 이동평균수렴·확산지수라고 한다. 기본적으로 장단기 이동평균선간의 차이를 이용하여 매매신호를 포착하려는 기법으로, 장기 이동평균선과 단기 이동평균선이 멀어지게 되면(Divergence) 언젠가는 다시 가까워져서(Convergence) 어느 시점에 서로 교차하게 되는 성질을 이용한 것이다.

 

MACD는 기본적으로 단기 이동평균선에는 12일 지수이동평균을 사용하고, 장기 이동평균선에는 26일 지수이동평균선을 이용하므로, 앞에서 스터디한 이동평균선을 구하는 코드를 이용해서 쉽게 만들어낼 수 있는 지표 중 하나이며, MACD의 기본 공식은 아래와 같다. (이동평균 관련 코드는 블로그 하단 링크 참고)

 

 

반응형

 

 

   1) MACD = 12일 지수이동평균 - 26일 지수이동평균

   2) Signal = MACD의 9일 지수이동평균

   3) Oscillator = MACD - Signal

 

위의 기봉공식을 이용해서 시간에 따라 그래프를 그리면, 아래와 같이 코인 거래소 어플이나 증권사 어플의 차트에서 볼 수 있는 MACD 그래프로 나타낼 수 있다.

 

 

MACD 차트

 

 

MACD 값을 구해서 위의 그래프처럼 구현하면 좋겠지만, 우리는 자동매매용 코딩이 목적이므로 상황에 따라서 24시간 동안, 초 단위로 시세를 파악하고 매수/매도 등을 판단해야 하기 때문에 위와 같은 그래프 구현은 한정된 컴퓨터 자원을 낭비하게 되므로 과감하게 생략하기로 하고 아래의 코드와 같이 MACD 지표로 알 수 있는 값(MACD, Signal, Oscillator등)을 구분해서 잘 정리할 수만 있으면 된다.

 

 

 

 

import pyupbit
import pandas as pd
import requests


# Upbit 로그인 시작
access = "액세스 코드 입력"
secret = "시크릿코드 입력"
upbit = pyupbit.Upbit(access, secret)


# MACD 값 구하기
querystring = {"market":'KRW-BTC',"count":"100"}
response = requests.request("GET", url, params=querystring)
data = response.json()
df = pd.DataFrame(data)
df = df.iloc[::-1]
df = df['trade_price']
exp12 = df.ewm(span=12, adjust=False).mean()
exp26 = df.ewm(span=26, adjust=False).mean()
macd = exp12 - exp26                                                              # MACD = 12일 지수이동평균 - 26일 지수이동평균
signal = macd.ewm(span=9, adjust=False).mean()                  # Signal = MACD의 9일 지수이동평균
oscillator = macd - signal                                                          # Oscillator = MACD - Signal


print("[ KRW-BTC ]")
print("- exp12         : ", exp12[0])
print("- exp26         : ", exp26[0])
print("- MACD          : ", macd[0])
print("- Signal        : ", signal[0])
print("- Oscillator    : ", oscillator[0])

 

MACD (Moving Average Convergence & Divergence, 이동평균수렴-확산지수)

 

 

 

https://skydance.tistory.com/36

 

[파이썬] 업비트 지표 구하기 - 단순이동평균(SMA)

이동평균선은, 주식시장이나 파생상품시장에서 기술적 분석을 할 때 쓰이는 기본 도구 중 하나이며, 풀네임보다는 줄여서 이평선이라고 많이 부른다. 거래액, 매매대금, 주가 등 다양한 분야에

skydance.tistory.com

 

https://skydance.tistory.com/37

 

[파이썬] 업비트 지표 구하기 - 지수이동평균(EMA)

지수이동편균(EMA)은 각 거래일의 종가에 동일한 가중치를 사용하는 단순 이동평균과는 달리, 최근 데이터에 더 높은 가중치(지수 가중치)를 부여하는 이동평균으로, 단순이동평균 보다 최근의

skydance.tistory.com

 

https://skydance.tistory.com/38

 

[파이썬] 업비트 지표 구하기 - 가중이동평균(WMA)

가중이동편균(WMA) 역시 지수이동평균(EMA)과 같이 최근 데이터에 더 높은 가중치를 부여하는 이동평균이지만, 차이점은 가중치가 등차수열로 반영된다는 점이다. 아래의 코드는 일봉데이터 100개

skydance.tistory.com

 

반응형