코딩 강의/유용한 스킬 없을까요

비트코인 암호 화폐 거래소 업비트 API(파이썬)를 활용한 변동성 돌파 전략 구현 방법 (돌파 계수 = 노이즈 비율)

아미넴 2021. 6. 17.
반응형

프로그램 매매에 관심있으신 분들은 아마 변동성 돌파 전략을 한 번쯤은 들어 보셨을 것이라 짐작합니다.

아무래도 이 전략으로 입문하는 것이 좋을 듯 싶어서 저도 공부 중 입니다.

 

목차

     

    변동성 돌파 전략이란

    변동성 돌파 타겟 가격 = 당일 시가 + (전일 고가 - 전일 저가)*k

    당일 시가에 전일 가격의 변동폭에 특정 계수를 곱한 값을 더한 가격을 매수 시점으로 삼는 방법을 말합니다. 상승 추세에 맞춰 즉시 들어가서 짧게 먹고 빠지는 전략으로 변동성이 크게 있는 코인 시장에서 유리한 전략입니다. 전략이 매우 단순하여 저처럼 트레이딩 지식이 많이 없는 사람도 쉽게 이해할 수 있을 정도이지만 효과는 좋은 편이라고 합니다.

     

    파이썬으로 변동성 돌파 전략 타겟 가격 구하기

    그럼 타겟 가격을 구하는 코드를 작성해 보겠습니다.

    def check_volatility_break(df, k=None):
        if k is None:
            k = get_noise_ratio(df)[-2]
        target_price = (df['close'] + (df['high'] - df['low'])*k)[-2]
        current_price = df['close'][-1]
        if current_price > target_price:
            return True
        else:
            return False

    특정 코인의 시세를 담은 데이터프레임 객체를 인자로 받아 당일 시가(전일 종가)와 전일 고가, 전일 저가를 뽑아내서 타겟 가격을 계산하고 현재 가격이 그 가격보다 더 큰 지를 비교하여 참/거짓을 리턴하는 함수를 간단히 만들었습니다.

     

    특정 코인의 시세를 가져오는 방법은 이전에 설명한 글로 대체 하겠습니다.

    pyupbit 라이브러리를 통한 비트코인 가상화폐 거래소 API(파이썬) 사용 방법

     

    pyupbit 라이브러리를 통한 비트코인 가상화폐 거래소 API(파이썬) 사용 방법

    오늘은 pyupbit 라이브러리를 이용하여 업비트에서 제공하는 API를 좀 더 손쉽게 사용하는 방법을 알아 보겠습니다. 고마운 분들이 API를 사용하기 편리하게 만들어 놓았습니다. 우리는 그냥 가져

    sangminem.tistory.com

     

    그런데 중간에 보이는 get_nosie_ratio 함수는 뭘까요? 바로 노이즈 비율을 구하는 함수인데요.

    돌파 계수 k 값으로 보통 0.5를 추천하고 있습니다. 그 값을 정하는 방법은 여러 가지가 있을 수 있는데 0.5는 가장 단순하면서도 무난한 값이라고 하네요. 그런데 고정 값을 이용하는 것보다는 상황에 맞게 값을 주는 것이 더 유리할 수 있다고 합니다. 여기에 이용할 수 있는 값 중 하나가 바로 노이즈 비율입니다.

     

    노이즈 비율이란

    노이즈 비율 = 1 - (시가 - 종가 절대값)/(고가 - 저가)

    차트의 캔들에서 꼬리 부분의 비율이 적으면 추세적이고 꼬리가 길면 비추세적이라고 판단할 수 있는 지표입니다. 내리면 오르고, 오르면 내리고를 반복하여 고/저가 폭 대비 시/종가 폭이 적어 추세를 알기 어렵게 된다는 것입니다. 일반적으로 노이즈 비율 값이 적을 수록 추세가 강하다고 볼 수 있습니다.

     

    파이썬으로는 다음과 같이 간단하게 구현이 가능합니다.

    def get_noise_ratio(df, n=None):
        if n is None:
            n = 10
        noise_ratio = 1 - abs(df['open']-df['close'])/(df['high']-df['low'])
        return noise_ratio.rolling(window=n).mean()

    위에 설명한 내용을 그대로 적용한 코드입니다. 기본적으로 노이즈 비율 10일 평균 값을 구하도록 하였습니다. 

    노이즈 비율 계산한 값을 찍어보면 위와 같이 잘 나오는 것을 확인할 수 있습니다.

     

    실전에 활용하기

    위의 함수를 실전에 활용하기 위해서는 여러 단계가 필요한데요. 실제 매수도 해야하고 매도 시점도 계산을 해야 합니다.

    while True:
        if 현재시각 == 자정:
            매도
    
        df = pyupbit.get_ohlcv()
        if check_volatility_break(df):
            매수
    
        time.sleep(1)

    대략적으로 위와 같이 구현할 수 있습니다. 먼저 특정 시각이 되면 보유하고 있던 전량 매도하는 로직을 넣습니다. 여기서는 자정을 예로 들었지만 다른 좋은 아이디어가 있으면 매도 시점으로 삼아도 됩니다. 그리고 구매하고자 하는 코인의 시세 정보를 가져와서 변동성 돌파 전략 타겟가격에 부합하는지 체크를 하고 조건이 참이 되면 매수를 합니다. 이 로직을 1초 간격으로 무한 반복 합니다.

    기본적인 원리는 단순합니다. 이 구조를 베이스로 살을 붙이고 더 좋은 전략을 가미하여 본인만의 훌륭한 트레이딩 전략을 만들 수 있습니다.

    반응형

    댓글

    💲 추천 글