제가 가장 좋아하는 지표! Keltner Channels 입니다. 해석만 잘할 수 있다면, 변동성과 추세, 진입 근거까지 보여주는 지표이기 때문이죠. 포스팅을 통하여 해석의 방법 보다는 어떻게 객관적으로 진입 신호를 차트에 표현할 수 있을까 를 연구해보도록 하겠습니다.
공식
https://school.stockcharts.com/doku.php?id=technical_indicators:keltner_channels
지수 이동평균선을 기본 베이스로 활용하여, 위아래로 ATR 값을 더하고 빼 채널 형태로 만들 활용하는 보조지표 입니다. 이동평균선을 활용하여 단기 추세를 해석할 수 있으며, ATR 값으로 변동성을, 채널과 가격의 관계를 이용하여 진입 근거로 활용할 수 있습니다.
여기서 만져볼 수 있는 변수는 세 가지 정도로 보입니다.
- 지수 이동평균선의 주기
- ATR 의 주기
- ATR 값에 곱하는 계수 (위 공식에서는 2)
오늘은 계수를 살짝 바꾸어 활용하는 방법에 대하여 알아보도록 하겠습니다!
수식화
먼저 코드로 표현해줍니다.
highband = ema(close,20) + atr(10)1
lowband = ema(close,20) - atr(10)1
지수 이동평균선을 의미하는 ema 에 종가 값을 넣어 20 주기 값
평균 변동성을 표현해주는 ATR 의 10 주기를 1 의 계수로 곱한 값
그리고 평균 변동성을 지수 이동평균선에서 더하고 뺀 값을 각각 윗 밴드와 아랫 밴드로 정의해줍니다.
plot(highband, linewidth = 2)
plot(lowband, linewidth = 2)
highband 와 lowband 를 차트에 표현을 해줍니다. 선이 너무 앏으면 눈이 침침해서 안보이니.... 굵기는 2 로 설정해줍니다. (linewidth = 2)
여기까지가 기본 베이스입니다.
관찰 하기
이제 차트에 그려둔 코드를 관찰을 해보겠습니다.
직관적으로 벤드의 상단에 있을 때 에는 상승 추세
벤드의 하단에 있을 때 에는 하락 추세
벤드의 사이에 있을 때 에는 비추세 구간이라고 보실 수 있습니다. 비추세 구간의 경우는 포지션이 애매하긴 합니다. 역추세 구간도 가격이 벤드로 밀려 들어가며 역추세를 켈트너 채널을 사용하여 구분할 수는 없을 것 같습니다.
엄밀히 정의를 하려면, 상승 추세 이후 역추세가 발생하고 이후 가격이 벤드 안에서 이동하면 비추세라고 정의할 수 있으나, 이런 아이디어를 코드로 표현하기는 어려움이 있기에 단순화하여 가격이 벤드 안으로 들어오면 우리가 예측하기 힘든 비추세 구간으로 정의하겠습니다.
벤드 두 개가 같이 상승하고 있엇으면, 대체로 상승 추세.
벤드 두 개가 같이 하락을 하고 있으면, 대체로 하락 추세.
관찰 내용 코드화
일단 상승 추세를 정의해봅시다.
close > highband
먼저 종가가 윗 벤드보다 위에 있어야 합니다! (종가가 윗 밴드보다 크다!)
highband > highband[1]
윗 벤드가 상승하고 있어야 합니다. (이전 밴드보다 현재 밴드의 크기가 크다!)
uptrend = close > highband and highband > highband[1]
그걸 uptrend 라고 정의해주고,
bgcolor(color = uptrend ? #FFA500: na, transp = 50)
상승 추세에 해당할 때 그려줍니다.
코드화한 내용 관찰하기
코드로 표현한 상승 추세의 배열을 관찰합니다. 어떤 부분을 빼고 싶은지. 일단 변동성항을 아직 추가하지 않은 상태이기 때문에, 저 변동성 구간에서 발생하는 신호들을 제거해줄 필요가 있겠습니다.
이런 구간의 신호들은 크게 의미가 없는 것 같습니다. 변동성 항을 추가하는걸로 하고!
또한 진입 시그널만 보고 싶으니, 이전 종가는 밴드 아래에,현재 종가는 밴드 위에 있을 경우로 신호를 수정해줍시다. 위 사진과 같이 딱 교차하는 시점의 신호만 출력하도록!
uptrend = close > highband and highband > highband[1] and close[1] < highband
그리고 장기 추세에 대한 파트도 필요해보입니다. 아무래도 짧은 20주기 지수 이동 평균선 (현재 가격에 편향된) 을 사용하는 만큼 민감하게 움직여 아래와 같은 역추세 구간에서 지속적으로 진입 시그널을 보내고 있습니다. 추세 항을 추가하는 걸로 !
여기까지 한 내용을 그림으로 표현한다면
이러한 복잡하게 생겼지만, 알고 보면 단순한 조건에서 매수 시그널을 캐치할 수 있습니다.
변동성 항 추가
직관적으로 차트를 볼 때에는 벤드의 크기가 넓어지고 있는지 좁아지고 있는지를 통하여 변동성이 커지고 있는지 작아지고 있는지를 파악할 수 있습니다. 하지만 코드화를 하면 결국 ATR 을 이용하는 값이기에 이전에 사용하던 변동성 항을 가지고와 적용해봅시다!
atrshort= atr(5)
atrlong= atr(50)
highvolatility = atrshort > atrlong
https://www.steemcoinpan.com/sct/@roostermine/20-atr
uptrend = close > highband and highband > highband[1] and close[1] < highband and highvolatility
저 변동성 구간에서 발생하는 상승 추세가 사라졌습니다. 상승 추세에서 뚜렷한 상승 변동성과 상승 가격을 형성할때에만 시그널을 보여주고 있구요.
추세 항 추가
정확히 제거하고 싶은 시그널 입니다. 바닥을 찍과 과매수 권에서 올라오는 역추세 파동. 추세적인 파트를 적용하면 하락 추세로 나와 시그널이 사라질 것 같습니다. 이동평균선에 대한 필터를 넣어줍시다.
longtrend = close > sma(close, 50)
각도에 대한 파트는 켈트너 채널에서 이미 활용을 하였음으로, 종가가 이동평균선 50 위에 있기만하면 상승 추세라고 정의해주고.
uptrend = close > highband and highband > highband[1] and close[1] < highband and highvolatility and longtrend
기존 매수 시그널에 longtrend 를 추가해줌으로써 시그널을 보완해줍니다.
이로써 원하지 않는 시그널을 제거할 수 있습니다.
켈트너 채널의 특징으로는 변동성까지 포함한 매우 민감한 보조지표 임으로 단기로 사용할 때에는 많은 숙련도를 요합니다. 전체적인 차트가 향하고 있는 방향성이 머릿속에 이미 탑재되어 있어야 합니다. 하지만 위 예시로 사용한 일봉 이상의 경우에는 충분한 변동성, 확실한 추세 조건이 이미 포함되어 있기 때문에 비교적 편하게 사용하실 수 있습니다.
켈트너 채널의 경우 저는 손절을 하단 밴드로 설정합니다. 아직 진입에 대하여 배우고 있는 만큼, 손절 및 익절은 크게 다루지 않고 있지만, 채널 지표인 만큼 하단 밴드가 상승과 함께 같이 올라와 가격이 상승을 하면 손절을 같이 올리는 방법을 사용하실 수 있습니다.
위 사진 처럼 진입과 동시에 손절을 하단 밴드로 설정하고, 익절은 설정하지 않습니다. 이후 가격이 움직이고, 종가로 밴드 하단으로 다시 내려오면 손절 또는 익절을 하고 트레이딩을 종료하시는 방법도 있습니다.
만약 트레이딩을 17년 말에 시작하셧다 하더라도,
- 1회: 0% 익절
- 2회: 76.88% 익절
- 3회: 31.76% 손절
총 세번의 기회가 있었을 것이며, 40% 정도의 수익을 내실 수 있었을 것 입니다.
질문, 댓글, 팔로우는 감사합니다!
새로운 아이디어, 종목 추천 등은 언제나 환영입니다!
구독합니다
제가 윈하는글 이에요
감사합니다!! :) 많이 방문해주세요~