빙구처럼 트레이딩: 코인 차트 "처음부터" 공부하기 #39- 복합 전략 만들기 II (Keltner Channel, Volatility Stop)

in #sct5 years ago


다들 평온한 주말을 보내고 계신지요~ 오늘은 주말인 만큼 가벼운 전략으로 가지고 왔습니다. 켈트저 채널을 이용하여 진입을 하여, 손절만 살짝 럭셔리한 Volatility Stop 을 이용하여 수익을 극대화 하는 방향으로 만들어 보겠습니다!

매번 반복하고 있지만, 반복 할 수록 더 잘 외워진다는 점! (후후... 과외할때 무한 반복 시켰었던...) 보조지표들을 벌 써 까먹으셨을 까봐, 다시 한번 복습하고 넘어가겠습니다.


먼저 켈트너 채널은 현재 가격의 추세와 변동성을 둘 다 나타내는 지표 입니다. 변동성은 ATR 을 이용하여 표현하며, 각각 ema 에 더하고 뺀 값을 채널로 표현합니다. 그리고 ema 는 지수 이동평균선으로, 현재 가격에 가중치를 줘 현재 추세에 더 충실하도록 조작해줍니다.


두 번째 손절의 기준을 뜻하는 Volatility Stop 은 손절의 기준으로 사용됩니다. 고점을 높일 때 마다 현재 ATR 값 만큼 뺀 손절 가격이 올라오기에, 추세가 끝나는 지점까지 선이 이어져 수익률을 보존하는데 매우 유용한 툴 입니다.


사용할 보조지표

추세: Keltner Channel
진입 시그널: Keltner Channel
변동성: Keltner Channel / ATR (Keltner Channel 공식에 ATR 포함됨!)
손절: Volaility Stop

그래서! 오늘 코딩할 전략은 위와 같이 생긴 친구 입니다. 머릿속에 모델이 있어야 코딩하기 쉽지요. 얼마전 Keltner Channel 과 SAR 을 이용한 전략과 비슷합니다. 하지만 VS 와 SAR 의 상승 속도가 다르기에, 어떻게 수익률 및 다른 결과물들에 영향을 미치는지 연구해봐야겠습니다.


스크립트 세팅

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

일단 시작 세팅은 요렇게~ 이전 포스팅과 동일하게 1회 진입시 천 달러 씩, 초기 자본은 천 달러!


추세/진입/변동성의 기준점: Keltner Channel

일단 켈트너 채널 부터 코딩 하겠습니다. 오늘도 최적화까지 할 것 이기에, 전부 input 함수를 이용하여 코딩을 해보죠!

ATRinput = input(10)
KCmultiplier = input(1)
EMAinput = input(20)

먼저 input 부터, 각각 EMA, ATR, KC 계수 에 대한 숫자를 채워주고,

highband = ema(close, EMAinput) + atr(ATRinput) * KCmultiplier
lowband = ema(close, EMAinput) - atr(ATRinput) * KCmultiplier

각각 KC 공식을 사용하여 input 들의 변수들로 채워줍니다.


손절의 기준: Volatility Stop

VS 의 경우 제가 트레이딩뷰에서 본 함수 중 에서 가장 복잡했기에... 바로 가져왔습니다.

length = input(20)
mult = input(3)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : na, style=cross, linewidth=2)

이 코드에 대한 해석은

https://www.steemcoinpan.com/sct/@roostermine/34-volatility-stop-i

요기를 방문해주세요!

일단 코드 자체는 복잡한데 저희가 이용한 부분은 is_uptrend 이라는 부분 입니다. 만약 가격이 VS 보조지표 위에 있다면 is_uptrend 가 참이고, 아니라면 거짓이 되는 부분입니다. 그래서 추가적으로

is_downtrend = not is_uptrend

요렇게 is_uptrend 가 아닐 경우 is_downtrend 도 정의해줍니다.


매수 진입과 손절 정의

이제 매수 진입에 대한 정의를 해줍시다.

매수는! 상단 벤드를 종가로 뚫을 때 진입을 하라고 할 것이며, 이 때 VS 는 가격의 아래에 생성되고 있어야 합니다!

Buy = is_uptrend and close > highband and open < highband

이런식으로, VS 에 따른 상승 추세에서, 종가는 상단 채널 위에, 시가는 상단 채널 아래에 있을 경우 매수 진입 한다는 식을 써줍니다.


이제 손절/익절 포인트는 VS 를 이용할 것 이니 단순하게

Sell = is_downtrend

진입을 VS 기준 상승 추세에서 했으며, VS 기준 하락 추세로 변한다면 익절/손절 하고 나와라! 라는 정의를 세워줍니다.


전략 구성

if (Buy)
strategy.entry("long", strategy.long)
if (Sell)
strategy.close("long")

그리고 단순하게 Buy 시그널이면 사고, Sell 시그널이면 팔면 되겠죠?


관찰

관찰 시간! 뭐 항상 기본값을 넣으면 손절이 너무 빨리 터집니다. 왜냐? 대부분의 지표는 일봉 기준으로 개발되었습니다. 즉, 변동성 및 노이즈가 훨씬 적은 환경에서 만들어졌으니, 저희는 일봉 지표를 시간봉 지표로 변경하는 작업이 필수적입니다.

진입 횟수는 나쁘지 않은데, 최대 손실률이 음.. 나쁩니다. 저정도면 버려야하는 전략이죠. 고쳐봅시다.


항상 손절부터! 진입을 바보같이해도, 수익을 나게끔 환경을 조성하는 것을 선호합니다!

Length 는 VS 에 들어가는 ATR 에 대한 주기를 나타내는 것이여서, 저건 살짝 빼두고, 손절의 길이를 관장하는 mult 값을 최적화 해보겠습니다.


피크가 세 개 보입니다. 6, 11, 19 계수에 대한 값들이죠. 비교해보면,


위와 같은 값들이 나옵니다. 일단 6번은 최대 손실률이 월등하게 높아 탈락. 이제 11과 19 는 손실률이 4% 정도 차이나고, 진입 횟수가 2배 정도 차이납니다. 만약 저라면 손실률이 약간 높더라도 11 계수를 선택하여, 통계적 이점을 활용할 것 같습니다.


손절을 기준점으로 잡으면 이러한 형태의 거래를 진행하게 됩니다.

관찰을 더 해야하지만, 전 관찰을 해서 수익률/오류를 찾을만한 부분이 안보이기에 바로 KC 에 대한 계수를 변경하러 출발~


요 계수에 대하여 0.5 부터 10 까지 넣어서 수익률을 비교해보겠습니다.


오호 피크가 두 개 정도 보이는군요. 0.5와 3 을 비교해보겠습니다.


으.. 이건 비교하기가 참.. 난해하군요. 그래도 통계적 이점을 가지는 29회 짜리 친구를 사용하는 것이 좋아보입니다. 18회는 통계적으로 승리하는 전략이라고 부르기에는 어려움이 있다고 봅니다.


일단 좋은 전략이다.

좋은 전략의 1번째 룰은 다른 차트에 적용해도 일관성있게 높은 수익률을 기록하는 경우 입니다.

비캐

리플

이더

이오스

라코

스팀은 네 시간쯤은 되야 위 차트와 움직이는 폭이 비슷해져서 수익...


전략 비교

대망의 비교 시간입니다!

크흐.. 일단 일단! MA 보다 수익률도 높고, 최고 손실률도 낮습니다. 역시 어느정도 복잡함과 정교함이 있는 친구랑, 쉽게 만든 친구랑 수익률이 다르군요! (힘들게 만든 보람이 있드아!)

38번 전략과 비교하면, 훨씬 다양한 용도에 사용할 수 있다는 점에서 가산점을 부여할 수 있을 것 같습니다. 38번은 비트코인 bitfinex 차트에서만 수익률이 월등히 높았거든요!


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

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