본문 바로가기
Python/업비트

[업비트] 실시간 MACD API Python Code

by Guardy 2021. 9. 9.
728x90

upbit upbit macd upbit python code 업비트 오토트레이딩 macd macd 계산식 

업비트 개발자 센터에서는 실시간으로 MACD 값을 제공하는 API가 없습니다.

업비트에서 제공하는 시세 종목 조회 API를 이용해서 실시간 MACD 를 출력하는 프로그램을 짜보고자 합니다.

MACD란?

MACD는 Moving Average Convergence Divergence의 줄임말로 이동평균선의 수렴과 발산을 분석하는 보조지표입니다.

이동평균선이란 주가평균을 이은 선으로서 단기 이평선이 장기 이평선에서 멀어지면 발산, 단기 이평선이 장기 이평선에서 가까워지면 수렴을 한다고 합니다.

또한 주식의 경우 파동의 성질을 가지고 있어 발산과 수렴이 반복해서 일어나는 것을 확인할 수 있습니다.

이 반복성을 분석하는 지표가 바로 MACD입니다.

MACD에서 단기 이평선을 12일 장기 이평선을 26일로 놓습니다. 또한 신호 지표로서 9일 이평선입니다.

이동 평균선을 구하는 코드는 다음과 같습니다.

tradePrice.ewm(span=num, adjust=False).mean()

이를 이용해서 12일과 26일의 이평선을 구할 수 있습니다.

exp12 = tradePrice.ewm(span=12, adjust=False).mean()
exp26 = tradePrice.ewm(span=26, adjust=False).mean()

macd는 단기에서 장기 이평선을 뺀 것이기 때문에 다음과 같습니다.

    exp12 = tradePrice.ewm(span=12, adjust=False).mean()
    exp26 = tradePrice.ewm(span=26, adjust=False).mean()
    macd = exp12-exp26

macd 오실레이터는 macd와 macd 시그널의 이격차입니다.

exp12 = tradePrice.ewm(span=12, adjust=False).mean()
exp26 = tradePrice.ewm(span=26, adjust=False).mean()
macd = exp12-exp26
exp = macd.ewm(span=9, adjust=False).mean()

전체 코드는 다음과 같습니다.

import pandas as pd 
import requests
def MACD(tradePrice):

    exp12 = tradePrice.ewm(span=12, adjust=False).mean()
    exp26 = tradePrice.ewm(span=26, adjust=False).mean()
    macd = exp12-exp26
    exp = macd.ewm(span=9, adjust=False).mean()
    return exp

if __name__ == "__main__":
    url = "https://api.upbit.com/v1/candles/days"
    querystring = {"market":"KRW-BTC","count":"200"}

    response = requests.request("GET", url, params=querystring)

    data = response.json()

    df = pd.DataFrame(data)
    df=df.iloc[::-1]
    
    macd = MACD(df['trade_price'])
    print(macd[0])

업비트 차트의 경우 소수점 셋째짜리에서 반올림하기 때문에 MACD 값이 1830000 가량 나온 것을 확인 할 수 있습니다. 코드로 돌린 값은 다음과 같습니다.

값이 같은 것으로 확인되는 것을 볼수 있습니다.

구현하고 싶은 보조지표가 있다면 댓글로 남겨주세요. 도움이 되셨다면 공감과 댓글 부탁드립니다.

728x90