프로젝트/비트코인 자동매매

캔들 조회 로직 - 파이썬 업비트 비트코인 자동매매

Tech&Fin 2021. 7. 15. 17:30
반응형

캔들(봉)은 차트를 이용하여 자동매매를 하는 프로그램을 만들기 위해서 반드시 필요한 정보이며 더불어 MACD, RSI, MFI 등 다양한 지표들을 산출하기 위해서도 유용하게 사용되기 때문에 비트코인 자동매매 프로그램을 만들기 위한 필수 정보라고 해도 과언이 아닙니다.

 

이번 시간에는 캔들(봉) 정보를 조회하는 로직에 대해서 살펴보려고 합니다.

 

아직 이전 포스팅들을 확인하지 못하여 비트코인 자동매매에 대해서 익숙하지 않으시다면 아래 프로젝트 구조 만들기 부터 천천히 살펴 보시면 도움이 되실 것 같습니다.

 

2021.06.06 - [프로젝트/비트코인 자동매매] - 비트코인 자동매매 - 프로젝트 구조 만들기

 

비트코인 자동매매 - 프로젝트 구조 만들기

이번 시간에는 본격적으로 로직을 만들고 살을 붙이기 전에 프로젝트 구조를 만들어 보도록 하겠습니다. 비트코인 자동매매 프로그램을 만드는 것이 얼마나 간단한지는 아래 포

technfin.tistory.com

 

 

목차 - 클릭하면 이동합니다.

     

    캔들(봉) 조회

    위에서 보시는 바와 같이 캔들은 촛대 모양을 연상시키기 때문에 영어로 candle이라고 불리고 있으며 우리나라에서는 봉이라고 부르고 있습니다.

     

    캔들은 1분봉, 5분봉 등 분봉부터 일단위 및 주단위까지 다양한 기간을 기준을 조회하실 수 있습니다.

     

    캔들(봉)에 관련된 자세한 내용은 네이버 또는 구글에 검색해 보시면 자세히 설명한 블로그나 사이트들이 있으니 해당 부분을 참고 하시면 좋을 것 같으며 오늘은 기본적인 캔들에 대한 개념을 아는 상태에서 캔들 값을 조회하는 방법을 파이썬과 업비트를 활용하여 알아보도록 하겠습니다.

     

    캔들 조회 로직

    # -----------------------------------------------------------------------------
    # - Name : get_candle
    # - Desc : 캔들 조회
    # - Input
    #   1) target_item : 대상 종목
    #   2) tick_kind : 캔들 종류 (1, 3, 5, 10, 15, 30, 60, 240 - 분, D-일, W-주, M-월)
    #   3) inq_range : 조회 범위
    # - Output
    #   1) 캔들 정보 배열
    # -----------------------------------------------------------------------------
    def get_candle(target_item, tick_kind, inq_range):
        try:
    
            # ----------------------------------------
            # Tick 별 호출 URL 설정
            # ----------------------------------------
            # 분붕
            if tick_kind == "1" or tick_kind == "3" or tick_kind == "5" or tick_kind == "10" or tick_kind == "15" or tick_kind == "30" or tick_kind == "60" or tick_kind == "240":
                target_url = "minutes/" + tick_kind
            # 일봉
            elif tick_kind == "D":
                target_url = "days"
            # 주봉
            elif tick_kind == "W":
                target_url = "weeks"
            # 월봉
            elif tick_kind == "M":
                target_url = "months"
            # 잘못된 입력
            else:
                raise Exception("잘못된 틱 종류:" + str(tick_kind))
    
            logging.debug(target_url)
    
            # ----------------------------------------
            # Tick 조회
            # ----------------------------------------
            querystring = {"market": target_item, "count": inq_range}
            res = send_request("GET", server_url + "/v1/candles/" + target_url, querystring, "")
            candle_data = res.json()
    
            logging.debug(candle_data)
    
            return candle_data
    
        # ----------------------------------------
        # Exception Raise
        # ----------------------------------------
        except Exception:
            raise

     

    입력 변수

    ① target_item : 대상 종목

    ② tick_kind : 캔들 종류 (1, 3, 5, 10, 15, 30, 60, 240 - 분, D-일, W-주, M-월)
    ③ inq_range : 조회 범위

     

    업비트에서 제공하는 캔들 종류는 분봉, 일봉, 주봉, 월봉이 있으며 분봉은 세부적으로 1분봉, 3분봉, 5분봉, 10분봉, 15분봉, 30분봉, 60분봉으로 조회하실 수 있습니다. 만들고자 하는 로직에 적절한 봉의 종류를 사용하는 것이 상당히 중요하기 때문에 각각의 봉의 성격과 어떤 경우에 적절한지 등을 고민해 보셔야 합니다.

     

    ③ 조회 범위 변수에는 원하는 캔들(봉) 데이터의 개수를 넘기면 되는데 업비트에서 최대로 조회 가능한 개수를 200개로 제한하고 있기 때문에 300을 입력한다 하더라도 200개만 조회되어 나오는 점에 대해서 참고 부탁 드립니다.

     

    조회 결과

    분봉의 경우 위와 같은 리턴 결과를 받으실 수 있습니다. 하지만 조회 결과는 캔들 종류에 따라 약간씩 다르기도 하고 업비트에서 언제든지 변경할 수 있기 때문에 아래 링크를 통해 업비트 개발자 센터에서 최신 내용을 확인하시는 것이 좋을 것 같습니다.

     

    업비트 개발자 센터 바로가기

     

    실행 결과

    # 캔들 정보 조회
    candle_data = upbit.get_candle('KRW-DOGE', '5', 5)

     

    위와 같이 호출하게 되면 도지코인(KRW-DOGE)에 대해서 5분봉을 최근 기준부터 5개 조회하게 됩니다. ②번과 같이 정상적으로 캔들정보 조회 후 결과가 출력되었음을 확인할 수 있습니다.

     

    활용 방법

    캔들(봉)은 기본적으로 해당 시간/기간 동안의 시가, 고가, 저가, 종가를 한번에 확인할 수 있으며 누적 거래량 및 거래금액 또한 제공해 주기 때문에 자동매매 로직을 만들때 유용하게 사용 됩니다. 특히 자주 쓰는 지표인 MACD 및 RSI, MFI 지표 등을 산출하기 위해서는 반드시 필요한 기초 데이터이기도 합니다.

     

    추후에 오늘 살펴본 캔들 데이터를 이용하여 각종 지표를 산출하는 로직을 만들어 볼 예정이며 그 이후에는 자동매매를 하는 아주 간단한 프로그램을 한번 만들어 보도록 하겠습니다.

     

    의견 청취

    꾸준히 파이썬과 업비트를 이용한 비트코인 자동매매 프로그램을 만드는 과정에 필요한 부속 로직들을 설명 드릴 예정이며 중간 중간에 간단한 전체 프로그램을 하나씩 만들어서 공유해 보려고 합니다.

     

    매수/매도에 방법론에 대한 의견이 있으시면 댓글로 알려 주세요. Tech&FIn에서 코딩이 가능한 부분이라면 전체 프로그램을 만들 때 의견 주신 로직을 적용하여 프로그램을 만들어 보도록 하겠습니다.

     

    그럼 많은 관심과 댓글 부탁 드립니다.

    반응형