빙구처럼 트레이딩: 코인 차트 "처음부터" 공부하기 #38- 복합 전략 만들기 I (SAR, MA, RSI, ATR)

in #sct5 years ago (edited)


지금까지는 한 개의 보조지표를 사용하여 전략을 구성하는 방법들에 대하여 알아 보았습니다. 이번 포스팅 부터는 추세를 위한 보조지표, 손절을 위한 보조지표, 필요하다면 변동성에 대한 부분까지 추가하여 복합적인 전략을 구성 후, 과거 데이터를 기반으로 최고 수익률을 내었던 계수 조작을 해주어, 최적화 작업까지 해보겠습니다.

그리고 여러가지 전략을 만든 후 과거에 만들었던 전략들과 수익률/최고 손실률/진입 횟수 를 비교하여 어떤 전략이 가장 좋고, 돈을 많이 벌어주는지 살펴보겠습니다! :)

만약 새로운 보조지표를 활용한 전략을 만들게 되면, 먼저 해당 지표를 소개시켜 드린 후 전략까지 구성하는 방향으로 가겠습니다.

그리고 주관적 요소가 들어가는 일반적인 차트 분석이 아닌, 보조 지표를 활용한 분석하는 방법으로 진행하는 이유는 누가봐도 동의할 수 있는 "통계적" 객관성이 있기 때문 이라고 생각합니다. 최적화한 값을 미래에 대입했을 때 동일한 결과물은 나오지 않겠지만, 일단 수익률이 일반적인 트레이딩 이상으로 나오기에. 그리고 내 전략이 어느정도까지 마이너스 볼 것을 각오 해야하는지 등 어렴풋이 알 수 있습니다.

그리고 저도 실험적으로 접근하는 전략들이기에, 수익률이 안나올 수도, "현실적이지 않을 수"도 있다는 점, 참고해주세요!


사용할 보조지표

추세: 이동평균선
진입 시그널: RSI
변동성: ATR
손절: Parabolic SAR

위 네 가지를 활용하여 "간단하게" 전략을 구성해보겠습니다! 트레이딩을 시작하실 때 가장 쉽게 접근하시는 이동평균선, RSI, SAR 을 사용하며, 좀 더 정확한 부분에서 진입을 위하여 ATR 을 추가해보겠습니다.

복합 전략인 만큼, 복잡한 코드들은 이전 포스팅 것을 쓰겠지만, 쉽거나 이미 트레이딩뷰에서 제공하고 있는 함수이면 복습겸 다시 작성해보도록 하겠습니다! :)


스크립트 세팅

strategy("Awesome SteemCoinPan #17", overlay=true, default_qty_type=strategy.cash, default_qty_value=1000, initial_capital=1000, currency="USD")

스크립트를 위와 같이 세팅해줍니다. 첫 자본금은 천 달러로 시작하여, 1회 배팅할 때 천 달러씩 진입한다!


추세의 기준점: 이동평균선

먼저 추세의 기준을 세워줄 이동평균선 입니다.

MAinput = input(50)
MA = sma(close, MAinput)

먼저 이동평균선을 정의해주고, 나중에 최적화할때 편의성을 위하여 input 처리해줍니다. 어차피 자동으로 진입하여 자동으로 청산시킬 것이기에, 따로 개별적으로 플로팅 (차트에 표기하는 것) 은 하지 않겠습니다. (나중에 확인용으로만~)


trend = MA > MA[1] and close > MA

그리고 추세에 대한 부분을 간단하게 정리해줍니다. 이동평균선이 상승하고 있을때, 종가가 이동평균선 보다 클 때 trend 이다.


진입의 기준: RSI

RSI 역시 코딩을 후딱해줍니다.

RSIinput = input(14)
RSI = rsi(close, RSIinput)

먼저 RSI 역시 나중에 최적화 대상임으로 종가에 대하여 기본값인 14 주기를 먼저 넣어, 저희가 알고 있는 RSI 를 코딩해줍니다.


RSI 에 대한 매수는 이런 과매수가 발생하고, 반등하고 올라가는길에 올라타고 싶습니다. 다시 한 번 말씀드리자면, 저점 잡는 것은 확률적으로 저~엉말 어려우며, 올라가는길에 올라타는게 더 쉽습니다... (코딩하기도 ㅎㅎ 더 쉽습니다...)

RSIbuy = input(25)
buy = RSI[1] < RSIbuy and close > open

그리고 위 사진을 고대로 코딩하면, 이전 캔들이 RSI 과매도 구간 이하에 있고, 현재 캔들이 양봉일 때 매수 시그널 buy 를 정의해줍니다.


변동성의 기준: ATR

이건 제 직관에 의하여 생긴 논리긴 하지만, 가격이 변동성이 클 때랑 작을 때랑 다른 패턴을 보이며 움직입니다. 변동성이 클 경우 좀 더 비이성적인 움직임이 나와, 그것을 패턴화 할 수 있죠.

ATRshort = input(5)
ATRlong = input(50)
ATRconfirm = atr(ATRshort) > atr(ATRlong)

예전에 작성한 ATR 에 대한 기준에 변수를 input 으로 변경하였습니다.


손절의 기준: Parabolic SAR

SARinc = input(0.02)
SARstart = input(0.02)
SARmax = input(0.2)
SAR = sar(SARstart, SARinc, SARmax)
SARstop = close < SAR
SARuptrend = close > SAR

SAR 도 인풋으로 깔끔하게 정리해주고! SAR 의 기준으로 손절과, SAR 의 기준으로 상승 추세도 따로 정의하여, SAR 하락 추세일 경우 매수 진입을 하지 않도록 조작해줍니다.


매수 진입과 손절 정의

이제 위에서 정의한 모든 변수들을 합하여, 매수 추세의 진입 시그널과 손절 시그널을 만들어줍니다.

Entry= buy and trend and ATRconfirm and SARuptrend

먼저 매수 (Entry) 는 RSI 의 매수 시그널, 이동평균선의 추세, ATR 의 충분함, SAR 의 상승 추세가 확인될 때 매수를 잡으며

Stoploss = SARstop

손절은 간단하게 종가가 SAR 보다 밑에 있으면, 손절로 설정하여 손절과 익절의 기능을 동시에 하게끔 조작해 줍니다. 예전에 잠깐 말씀해드렸던 트레일링 스탑의 정석이죠.


전략 구성

이제 마지막 단계 입니다. 전략으로 만들어줍니다!

if (Entry)
strategy.entry("long", strategy.long)
if (Stoploss)
strategy.close("long")

만약 Entry 시그널이 나온다면, 매수 진입해라!
만약 Stoploss 시그널이 나온다면, 매수 진입한 물량을 청산해라!


결과?

ㅋㅋㅋ 전부 기본값을 넣어버렸더니, 진입 횟수 1회 입니다. 계수를 조작해줍시다. 보조지표를 기반으로 만드는 것이니, 차트에 모든 지표들을 가시화 하여 근사값을 찾아보겠습니다.

plot(MA, color =#FF7F00 )
bgcolor(color = buy ? #008000: na, transp = 85)
bgcolor(color = ATRconfirm ? #FF00FF: na, transp = 85)
plot(SAR, color = #FF0000)

먼저 이동평균선은 주황색 선으로 플롯, RSI 에 대한 매수 시그널은 초록색 배경화면으로, 변동성에 대한 부분은 보라색 배경화면으로, SAR 에 대한 부분은 빨간색 선으로 그려줍니다.


관찰하기

  • 가장 눈에 띄는 부분은 SAR 파트 입니다. 빨간색 선으로 되어 있는 SAR 은 추세가 발생했을 경우 추세가 끝날 때 까지 쭉 이어져야 합니다. 하지만 위의 예시에서는 추세가 진행중임에도 위 아래로 흔들리며 추세를 정확히 캐치하지 못하고 있습니다.

요 세값을 조작하여 빨간색 선이 좀 더 매끈하게 이어지도록 조작해줍시다.


시작값과 상승값을 각각 0.1 을 곱해줘, 민감도를 대폭 감소.

훨씬 부드러운 추세를 보여줍니다. 체계적 최적화는 나중에 하기로 하겠습니다.


  • ATR 필터링은 충분하니, 배경 표시를 꺼주도록 하겠습니다.

  • 이제 진입 시그널을 살펴보면, 너무 쌩뚱맞은 구간에서 생깁니다. 주기와 과매수 기준을 낮춰 최대한 추세가 발생하면, 첫 조정에서 바로 진입하도록 조작해줍니다. 주기는 5 정도, 기준은 45 정도.

슬슬 진입을 어느정도 하기 시작하며, 수익권으로 나오기 시작합니다.


최적화

이제 수익권으로 돌아섰으니 최적화를 시작해보겠습니다. 저는 개인적으로 손절 파트부터 건들여, 진입이 얼마나 잘못되었든 최고의 수익률이 나오게 하는 작업을 우선시 합니다! SAR 부터 건들여보겠습니다.


시작값은 임의로 0 으로 설정했습니다. 상승값이 변함에 따라, SAR 값은 크게 변하기에... 0.001 부터 0.001 단위로 0.02까지 쭉~ 넣어보면~

손절을 줄일 수록 수익률이 떨어지는 현상을 보실 수 있습니다. 0.002값이 피크 인 것 같습니다.


0.002 스펙은

상당히 이쁜 우상향 수익률을 보이고 있으며, 최고 손실률이 14.13% 밖에 나오지 않습니다. 진입 횟수는 47 회로 약간 아쉽군요.


여기서 살짝 개인적인 궁금함이 들어서 아예 큰 수를 넣어버려서, "큰 추세가 아닌 작은 추세를 단기로 잡으면 어떨까?" 라는 생각이 들어 0.05 를 넣어보니,

어라? 생각보다 잘나오네요. 범위밖의 또다른 피크를 찾은 것 같습니다.

실질적으로 따져봤을때 0.05값을 넣었을 때 수익률이 훨씬 안정적으로 상승하는 모습을 보실 수 있습니다. 최고 손실률이 7.45% 이며, 수익률이 42% 입니다. 즉, 2배 레버리지를 사용했을 경우 수익률이 84%, 손실률이 15%로 0.0002를 넣었을 때 보다 높은 수익률입니다. 진입 횟수도 10 회 더 많아, 통계적으로 20% 정도 신뢰할 수 있다고 생각합니다.


그래서 0.01 부터 다시 0.1 까지 테스팅.

오호! 그냥 0.05를 진짜 잘 찍은 숫자였군요 ㅋㅋㅋㅋㅋㅋㅋㅋ 이걸로 SAR 상승값 잡아보겠습니다.


이제 SAR 초기값 (시작값) 을 잡아보겠습니다. 임의로 0 으로 두고 시작을 했는데,

똑같이 0.01 부터 0.1 까지!

ㄷㄷ... 0.06 값이 상당하군요.


먼저 추가적인 정보를 보자면 1회 진입시 평균정도 10 캔들 이후 청산이 된다고 합니다. 즉, 단기 트레이딩이라는 점을 확인할 수 있죠.

승률은 50% 조금 안되지만, 최고 손실률이 3% 인 만큼 상당히 꾸준한 상승세를 보입니다. 사실 이렇게만 써도 될 것 같은데....

1시간 봉이라 1년 6개월치 데이타 인데, 18 개월동안 66 회 진입은 음..


일단 진입 횟수를 늘렸을때 어떤 현상이 나타나는지 확인해보고 싶어졌습니다. 진입에 대하여 직접 관장하는 RSI 파트를 건들여보죠.

RSI 를 40 부터 한 70 까지 5 단위로 찾아보죠.

일단 수익률은 50 일 떄가 가장 큽니다.

하지만 살펴보면 최고 손실률이 10% 임으로 위 45 일때보다 거의 3배 차이나는 군요. 수익률이 더 좋아도, 실질적으로 45를 사용하고 레버리지를 사용하는게 더 좋아보입니다.


뭐 이제 건들여볼께 이동평균선 하나 남았네요.

옼헤이 이동평균선은! 60 일 때가 가장 좋다고 합니다. 60 일때 스펙을 살펴보면 손실률이 더 줄었습니다. 하지만 역시 진입 횟수가 너무 안나오네요. 수익률도 늘었습니다.


전략 비교!

오늘 전략과 저번 포스팅 전략을 비교해 보았습니다. 오늘 값이 비트코인 bitfinex 기준이여서, 거래소를 바꾸면 똑같은 수익률이 나오지 않는 "현실적" 이지 않은 값이 나왔으나... 저번 포스팅에서도 bitfinex 기준으로 맞췄으니, 이번에도 bitfinex 기준으로 비교해보았습니다. 최고 손실률이 비정상적으로 낮다는 점에서 오차가 발생했다고 생각합니다.

이 표를 쭉 채워나가, 어떤 전략이 가장 돈을 마니 버나 같이 확인해봅시다!! :)


질문, 댓글, 팔로우는 감사합니다!

새로운 아이디어, 종목 추천 등은 언제나 환영입니다!


Sort:  

일단 코인마켓캡에서 제공하는 데일리 히스토리 데이타를 긁어왔습니다. 이게 있으면 파이쏜 이용하는 법 기본은 보여줄 수 있을 것 같아요 ^^