본문 바로가기
경제공부

[Chart Study] 볼린저밴드(Bollinger Bands)

by zemba 2022. 3. 30.
반응형
SMALL

안녕하세요! 벌써 두 번째 차트에 대해서 포스팅하게 되었네요~ㅎㅎ
지난번 포스팅에서 언급했듯이 오늘은 볼린저밴드에 대해서 알아보려고 합니다! 우선 볼린저 밴드의 의미부터 먼저 확인하고 살펴보겠습니다. 

 

1980년대 존 볼린저가 개발하고 2011년 상표권 취득한 주가 기술적 분석 도구이다. 
트레이딩 밴드 개념에서 발전된 볼린저 밴드와 상대지표 그리고 대역폭은 이전 거래와의 상대적 가격의 높음과 낮음을 판단하는 데 사용된다.
볼린저 밴드는 켈트너 채널과 비슷한 변동성 지표이다. 
볼린저 밴드는 주가가 이동평균선 중심으로 표준편차 범위 안에서 움직인다는 전제로 개발되었다.
(출처 : https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C)

위키백과에 나온 의미를 가져왔습니다. 이것을 바탕으로 우선 개념을 이해해보고 넘어가려고 합니다.
대역폭을 통하여 이전 거래와의 상대적 가격의 높낮음을 판단하기 위해서 사용되는 지표라고 되어있습니다. 주가가 이동평균선 중심으로 표준편차 범위 안에서 움직인다는 전제로 개발되었다는 내용을 보니 추측을 해보건대 상한선과 하한선이 있을 것 같아 보입니다. ㅎㅎㅎ

실제 볼린저 밴드의 차트를 한번 확인해 보겠습니다.

출처 - 알파스퀘어 볼린저 밴드 지표

그림과 같이 잘 보이도록 색상을 좀 변경해서 차트를 출력해보았습니다. 우리가 예상(?) 한 것과 같이 볼린저밴드는 상한선과 하한선 그리고 중심선 이렇게 구성되어있고 상한선과 하한선 사이에 캔들이 움직이는 모양을 나타내고 있는 지표입니다. 
그럼 각각의 선의 의미에 대해서 좀 더 자세히 알아보겠습니다.

  • 중심선 - 이동평균선 20일을 기준으로 합니다 ( 여기서 이평선은 SMA 즉 단순 이동평균선으로 사용됩니다. )
  • 상한선 - 중심선 + (2 * 20일 표준편차)
  • 하한선 - 중심선 - (2 * 20일 표준편차)

이렇게 구성되어있습니다. 그럼 상한선과 하한선의 간격이 큰 구간도 있고 좁은 구간도 있는 것을 볼 수 있는데 이 의미가 어떤 건지 알아보려고 합니다. 상한선과 하한선의 밴드폭이 얼마나 큰지를 나타내 주는 지표를 밴드폭 (Bandwidth)라고 합니다. 주가의 변동폭이 클 경우 볼린저 밴드의 폭이 넓어지고, 주가의 변동폭이 적을 때는 볼린저 밴드의 폭 또한 좁아진다고 하네요 ㅎㅎ 그림에서 보면 최저점이 표시된 구간에서의 위치를 보면 간격이 크게 벌어진 것을 볼 수 있습니다. 이것은 주가의 변동폭이 크다고 볼 수 있겠습니다. 금액으로 보면 최저점이 68,300원이고 그전 가까운 최고점을 보면 약 83,000원대의 금액을 종가로 기록하였습니다. 대략적으로 계산해보면 83,000원에서 -18% 정도 하락했을 때 68,300원쯤 돼 보이네요~ ( -18%면 저 같은 쫄보들은 후들후들하겠네요 ㅎㅎㅎㅎ )
그렇기 때문에 -18%가 최소 2주 안에 변동되었기 때문에 가격 변동폭이 커서 밴드의 폭 간격이 벌어진 모습을 볼 수 있습니다.

그럼 여기서 볼린저 밴드의 매매 포인트를 한번 살펴보겠습니다.

  • 상하한선의 폭을 이용한 매매법
  • 상한선, 하한선을 돌파를 이용한 매매법

출처 - 업비트 질리카 차트

위 차트를 보시면 정말 쉽게 이해가 될 것 같아 보여 가져왔습니다. 최근 질리카 코인이 거의 100% 이상 상승 중인데요~ 볼린저 밴드를 보시면 폭이 엄청 좁게 형성되어 이동되다가 상한선을 건들면서 엄청난 큰 상승이 발생하면서 상한선과 하한선의 폭도 역시 엄청 간격이 커지는 모습을 볼 수 있습니다. 그래서 상한선을 캔들이 돌파할 경우에 상승추세가 강하다고 하여 매수 포인트로 사용하고 반대로 하한선을 돌파할 경우에 하락 추세가 강하다고 하여 매도 포인트로 사용되고 있습니다. 그리고 폭이 좁다는 것은 횡보한다는 의미로 봐도 되겠죠? ㅎㅎ 이렇게 해석하면서 자신만의 기준을 가져가면 매매 포인트를 잡을 수 있을 것 같습니다.

그럼 이 볼린저 밴드는 항상 20, 표준편차 +2,-2만 사용해야 하는 것일까요? 아닙니다 ㅎㅎ 이미 눈치 채신분들도 계시겠지만 중심선이 현재 20일 이평선 기준으로 설정한 다음 편차를 계산하기 때문에 중심선에 대한 기준을 변경하면 그만큼 편차도 달라지겠죠? ㅎㅎ 그렇기 때문에 이러한 값들은 사용자가 자신의 전략에 맞추어서 변경이 가능합니다.


자 그럼 의미와 매매법을 알아보았으니 이제 코드 구현을 한번 해보도록 하겠습니다.
볼린저밴드의 구성을 보시면 중심선 기준으로 표준편차를 계산하기 때문에 우선 중심선을 구하기 위한 SMA의 지표가 있어야 하겠죠?
지난 포스팅에서 만들어둔 기능을 그냥 사용해도 되고 간단하니까 그냥 다시 작성해도 무관합니다 ㅎㅎ

def bolingerband(ohlcv: pd.DataFrame, w=20, k=2):
    mbb = ohlcv["close"].rolling(w).mean()
    ubb = mbb + k * ohlcv["close"].rolling(w).std()
    lbb = mbb - k * ohlcv["close"].rolling(w).std()
    return ubb, mbb, lbb

 우선 함수의 파라미터 정보를 보면 이평선의 중심선을 구하기 위한 일정보를 받고, k라는 표준편차의 값을 받아서 사용자가 변경 가능하도록 파라미터를 정의합니다. 그래서 전달받은 값으로 원하는 정보를 구할 수 있도록 만들어줍니다.
mbb는 중심선을 구하는 것입니다. 저희는 SMA를 구해야 하기 때문에 지난 포스팅에서 작성한 정보를 그대로 사용하면 됩니다. 하지만 코드가 너무 간단하여 import하지 않고 재작성해도 무관합니다. (참고 : https://zemba.tistory.com/47)

 

[Chart Study] 이동평균선(moving average)

이번 포스팅은 이동평균선에 대해서 알아보려고 합니다. 어떠한 HTS, MTS 등 차트를 조회하게 되면 가장 먼저 표시되어있는 항목 중에 한 가지라고 봐도 좋습니다. 기본적으로 이동평균선은 초기

zemba.tistory.com

그다음에 ubb, lbb라고 정의한 변수는 믿기 어렵겠지만 상한선과 하한선의 변수입니다 ㅋㅋㅋ 여기서는 표준편차를 계산해야 하기 때문에 rolling(w). std() 함수를 이용하여 계산을 해주었습니다. ( Pandas는 정말 최고인 듯!! )

스펙을 확인해보니 Rolling의 편차 값을 계산하는 함수가 맞군요 ㅎㅎ 그래서 이것을 전달받은 K와 계산을 해서 중심선의 값에서 +,-하여 상하한선을 구해주면 볼린저 밴드를 구현할 수 있습니다. Python은 Return 해주는 값을 여러 개로 지정이 가능하더군요 ㅎㅎ 자바는 이렇게 안돼서 불편한데 Python은 편리한 기능들이 아주 많은 듯합니다. ㅎㅎㅎㅎ

네 오늘은 볼린저밴드에 대해서 알아보았습니다. 차트의 의미와 매매법, 코드로 구현까지 하는 것을 알아보았습니다. 내용을 작성하다 보니 프로그램으로 이 볼린저밴드를 가지고 여러 가지 포인트들을 활용하여 사용할 수 있을 것 같아 보였습니다.
다음 포스팅에서는 일목균형표에 대해서 알아보도록 하겠습니다. 
역시나 이렇게 꾸준히 만들면 저에게 언젠가는 큰 도움이 될 것입니다. 매매법은 일반적인 부분들을 적어놓은 것이니 실제 거래에 대해서는 본인이 전략에 맞도록 잘 판단하여 거래하시길 바랍니다.
다음 포스팅에서 만나요~ ㅎ

반응형
LIST

댓글