
세 번째로 알아보는 캔들 패턴 입니다. 오늘 연구해볼 패턴은 흔히 알고 계시는 장악형 캔들 (engulfing) 으로 매도세가 이어지다가 갑작스러운 매수세가 출현하는 것을 뜻하는 캔들 입니다. 또한 상승 추세에서 약한 조정을 표현하는 음봉 이후, 매수세가 나와 추세를 이어나가는 경우에 나타나게 됩니다. 여러가지 상황에서 발생하는 장악형 캔들에 대하여 연구하여, 어떤 상황에서 이 캔들 패턴을 사용할 수 있는지, 또 코딩으로 어떻게 장악형 캔들을 표시할 수 있는지 알아보겠습니다.
장악형 캔들

먼저 장악형 캔들의 정의 입니다. 장악형 캔들은 두 개의 캔들에 대한 패턴입니다. 따라야할 구성으로는
- 이전 캔들은 음봉, 현 캔들은 양봉이여야 한다.
- 전 캔들보다 저가가 높아져야 한다.
- 전 캔들의 고점보다 현 캔들의 종가가 높아야 한다.
이 정의는 제가 사용하는 정의로, 전통적인 장악형 캔들에서는
- 전 캔들보다 저가가 높아져야할 필요는 없다.
- 전 캔들의 시가보다 고가가 더 높아야 한다
라느 구성을 사용하기도 합니다.
파동의 관점
이런 캔들 패턴을 캔들이 가지고 있는 파동으로 해석했을 때 고점과 저점을 올리는 상승 파동을 그리게 됩니다.

먼저 캔들을 파동으로 분해하여, 단순화 시킨 모델로 만들었을 때 그려질 모습입니다. 파동을 표시해보면

이제 상승 파동을 찾아보게되면

이러한 고점과 저점을 높이는 상승 파동이 위와 같은 캔들 패턴에서 무조건 발생하게되며,

수렴의 기준이 되는 전 캔들의 고점 파동을 넘어 수렴이 아님을 확인 시켜주며, 그 위에서 종가를 형성함으로써, 상승 파동을 확인시켜줍니다.
즉, 위와 같은 저가가 높아지며, 고가보다 높은 종가를 형성함으로써 위와같은 상승 파동은 무조건 발생하게 됩니다.
캔들의 의미
위에서 잠깐 설명드렸다시피, 하락세가 발생했다가, 갑작스러운 매수세가 발생했을때 발생하는 캔들 패턴입니다. 직관적으로 가격이 상승 추세에 있을 때, 조정을 주고 다시 추세를 이어가려하는 부분에서 배팅을 할 때 도움을 받을 수 있는 패턴 입니다.


그래서 위 캔들 패턴을 사용하기 위해서는 상승 추세가 이미 있어야 하며, 조정을 주고 있을 때 이 패턴을 찾아야 합니다. 흔히들 매수를 많이 하시는 되돌림에 해당하는 구간 또는 추세의 지속을 생각해봐야하는 구간 발생하는 캔들 패턴 이기에 사용하기 유용한 패턴들 중 하나라고 생각합니다. 또는, 큰 추세가 이미 상승세를 보여주고 있고, 작은 조정 이후 가격이 더 상승할 수 있는 위치에 있을때 진입이 가능합니다.
코딩
이론은 여기까지 하고, 바로 코딩으로 넘어가보죠. 똑같은 캔들 패턴이기에 저번 포스팅에서 작성한 포스팅 위에 만들어보겠습니다.
먼저 가장 간단한 종가가 전 캔들의 고가보다 커야하고, 저가가 더 높아져야한다! 그리고 전 캔들의 시가가 현 캔들의 시가보다 커야한다 = 전캔들은 음봉, 현캔들은 양봉을 섹시한 언어로 :)
engulfing = close > high[1] and low > low[1] and open[1] > open
그리고 필터링 없이 바로 출력해봅시다.
barcolor(color = engulfing ? #0000FF: na)
캔들 패턴이기에 캔들위에 색깔을 칠하는 걸로! #0000FF = 파란색!

벌써 저만 느낌이 오나요? 색깔이 눈에 안띔으로 좀 바꿔줍시다.
barcolor(color = engulfing ? #FFFF00: na)
노란색으로! (요즘 밝은색이 .... 땡기더라구요 ㅎㅎ )

필터링
대충 나와야하는 곳에 나오긴 합니다. 이제 너무 캔들 사이즈가 작으면 안되며, 몸통에 대한 값이 들어가 있으니, 몸통에 대한 값을 비교할 수 있는, 어제 만든 코드를 가져와봅시다.
engulfingcandlebody = abs(close - open)
engulfingcandlebodyaverage = ema(candlebody,20)
그리고 굳이 캔들이 장대 양봉만큼 클 필요는 없으니, 평균치보다만 크게 계수를 따로 추가하지 않게 하면,
engulfingcondition1 = engulfingcandlebody > engulfingcandlebodyaverage
engulfingbuy = engulfing and engulfingcondition1
barcolor(color = engulfingbuy ? #FFFF00: na)
여기까지 수정을 해서, 캔들 값이 충분히 컸을 때에만 출력을 하게 바꿔봅시다.

너무 작은 캔들에대해서 아직도 필터링이 안된 느낌이군요. ATR 필터를 추가해줍시다. 결국 변동성이 있는 구간에서 발생해야 좋은 시그널이기에..
atrshort= atr(5)
atrlong= atr(50)
highvolatility = atrshort > atrlong
engulfingbuy = engulfing and engulfingcondition1 and highvolatility

노란색 구간에서 발생하던 가짜 시그널들이 많이 사라졌습니다.

이제 하락 추세에서 발생하는 시그널은 보고 싶지 않습니다. 하락 추세에서 발생하는 시그널을 파동으로 해석하면

하락 추세에서 저가에서 발생하는 시그널이 되게 됩니다. 즉, 역추세가 발생하고 다시 추세를 이어갈 확률이 높은 자리이죠.
간단하게 이동평균에 대한 필터를 적용해보겠습니다.
MA5 = sma(close,50)
up = close > MA5
down = close < MA5
ascending = MA5 > MA5[1]
goingup = up and ascending
engulfingbuy = engulfing and engulfingcondition1 and highvolatility and goingup

이렇게 깔끔하게 원하는 조정을 마치고 추세를 이어가는 자리에서만 시그널이 발생하게 됩니다!


수렴구간에서는 패턴 자체가 발생하지 않는 것을 확인할 수 있습니다. 하지만 고점 부분에서 변동성이 너무 커졌을 경우에는 봉 수를 줄여서 확인해보는 것이 더 좋아보입니다.
매매방법

단순하게 켈트너 채널을 이용하여 트레일링 스탑 형식으로 손절/익절을 정하고 매매를 한다면 위와 같은 매매가 가능합니다.

고점 부근에서는 일봉이 캐치할 수 있는 변동성을 초과하여 손해가 약간 발생하였고

현재에는 100% 수익중,

과거에도 구간별로 29% , 6% , 15% 수익을 가져갔을 것 입니다.
질문, 댓글, 팔로우는 감사합니다!
새로운 아이디어, 종목 추천 등은 언제나 환영입니다!
늘 꾸준히 주식트레이딩 하시는거 대단하신것 같에요.^^
하핫 감사합니다~ !!