캔들 차트의 의미와 파이썬 pyplot으로 그리는 캔들스틱 차트

캔들 차트는 주식이나 코인 같은 자산의 가격 변동을 시각적으로 나타내는 방법 중 하나입니다. 이번 포스팅에서는 시계열 데이터의 변화를 확인할 수 있는 캔들스틱 차트를 파이썬 pyplot으로 그리는 방법을 알아보겠습니다. 파이썬 matplotlib의 pyplot으로 캔들 차트를 그릴 수 있다면 다른 기술적 분석 지표들과 함께 시장의 움직임을 훨씬 이해하기 쉬울 것입니다.

 

 


글의 순서

캔들스틱 차트
캔들의 구조
캔들 패턴
캔들 차트 읽는 방법
파이썬 코드 : 캔들스틱 차트를 pyplot 그래프로 작성


캔들스틱 차트

캔들스틱 차트를 mplfinance 패키지 없이 matplotlib의 pyplot으로만 그릴 수 있다면 추세, 모멘텀 변화 등 직접 파이썬으로 분석한 시계열 데이터와 함께 비교할 수 있습니다. 결과적으로 시장 상황을 더욱 폭넓게 이해할 수 있을 것입니다.

먼저 캔들 스틱 자트를 이해해 보겠습니다. 캔들 스틱 차트는 각 시간 구간에서 ohlc 데이터를 한 번에 볼 수 있게 만든 그래프입니다. 여기서, o는 시작가(open), h는 최고가(high), l은 최저가(low), 그리고 c는 종료가(close)를 의미하며, 각각 시가, 고가, 저가, 종가로 표현합니다. 또한 시간 구간은 초(second), 분(m, minute), 시간(h, hour), 일(d, day), 주(w, week), 월(M, month) 등으로 구분할 수 있습니다.

 

 


캔들의 구조

▶몸통(Body)
시가와 종가 사이의 범위를 나타내며, 가격이 상승했는지 하락했는지를 색상으로 표시합니다. 일반적으로 상승 캔들은 녹색 또는 흰색, 하락 캔들은 빨간색 또는 검은색으로 표시됩니다.

그런데, 우리나라 주식 시장의 경우, 시가보다 종가가 높은 상승을 붉은색으로 표시하며, 시가보다 종가가 낮은 하락을 파란색으로 표시합니다. 각각 양봉, 음봉이라고 부르기도 합니다. 시가와 종가 사이를 나타내는 몸통은 굵은 막대로 표시합니다.

▶위꼬리(Upper Shadow): 고가와 몸통의 윗부분 사이의 선으로, 그 시간 구간에서 최고 가격을 나타냅니다.

▶아래꼬리(Lower Shadow): 저가와 몸통의 아랫부분 사이의 선으로, 그 시간 구간에서 최저 가격을 나타냅니다.

몸통을 굵은 막대로, 위꼬리, 아래꼬리를 가는 막대로 표시합니다. 캔들스틱 차트는 이 모양이 초를 닮아 있다고 해서 붙여진 이름입니다.

캔들 차트 이해


캔들 패턴

캔들스틱 차트에는 여러 가지 패턴이 있습니다. 이 패턴으로 시장의 움직임을 예측할 수 있습니다. 주요 캔들 패턴을 정리해보았습니다.

▶망치형(Hammer): 하락 추세에서 발생하며, 작은 몸통과 긴 아래꼬리를 가진 패턴입니다. 저가를 찍고 많이 올랐기 때문에 생긴 모양인 만큼 반등 신호일 수 있습니다.

▶도지(Doji): 시가와 종가가 거의 동일한 패턴으로, 시장의 변동성이 크거나 전환점일 수 있습니다.

▶상승장악형(Bullish Engulfing): 하락 추세 후 작은 하락 캔들을 큰 상승 캔들이 감싸는 패턴으로, 상승 신호일 수 있습니다.

▶하락장악형(Bearish Engulfing): 상승 추세 후 작은 상승 캔들을 큰 하락 캔들이 감싸는 패턴으로, 하락 신호일 수 있습니다.


캔들 차트 읽는 방법

▶몸통의 색상: 몸통의 색상은 해당 기간 동안의 가격 움직임을 나타냅니다. 일반적으로 녹색 몸통은 상승을, 빨간색 몸통은 하락을 의미합니다. 우리나라 주식시장의 경우 상승을 빨간색, 하락을 파란색으로 표시합니다.

▶몸통의 크기: 몸통의 크기는 시가와 종가 사이의 가격 변동 폭을 나타냅니다. 큰 몸통은 강한 변동성을, 작은 몸통은 약한 변동성을 나타냅니다.

▶꼬리의 길이: 꼬리의 길이는 극단적인 가격 변동을 나타내며, 긴 꼬리는 큰 변동성을, 짧은 꼬리는 작은 변동성을 나타냅니다.


파이썬 코드 : 캔들스틱 차트를 pyplot 그래프로 작성

캔들스틱을 그리는 핵심적인 부분인 plot([i, i], [])는 matplotlib 라이브러리를 사용해 특정 위치에 세로선을 그리는 코드입니다. 만약, plot([i, i], [y1, y2])으로 코딩했다면,

▶리스트 [i, i]는 x축 좌표가 두 개의 동일한 값 i로 이루어졌음을 나타냅니다. 즉, x축 위치 i에서 시작해서 위치 i에서 끝난다는 뜻입니다.
▶리스트 [y1, y2]는 y축 좌표가 두 개의 값으로 이루어진 리스트입니다. y축 위치 y1에서 시작해서 위치 y2에서 끝난다는 뜻입니다.

종합해보면, plot([i, i], [y1, y2])는 x축 위치 i에 y값 y1에서 y2까지 수직선을 그린다는 의미입니다.

캔들의 몸통 두께를 나타내는 방법을 위, 아래 차트에서 비교하였습니다. 위는 두께를 linewidth=8로 설정한 경우입니다. 만약 시간 구간의 개수가 늘어나면 캔들 몸통의 두께가 고정되어 있으므로 각 캔들이 겹쳐질 수 있습니다. 아래 차트는 캔들 두께를 시간 구간의 개수에 맞게 동적으로 조절하는 방법을 보여주고 있습니다. 이때 사용된 get_window_extent() 함수는 텍스트, 축, 플롯 등의 위치와 크기를 정확하게 계산할 때 유용하게 쓰입니다.

pyplot으로 그린 캔들 차트


마치며 …

캔들스틱 차트는 가격의 추세를 더 쉽게 파악할 수 있도록 만든 각 시간 구간에서 막대기로 시가, 고가, 저가 종가를 나타낸 것입니다. 이번 포스팅에서는 캔들 차트를 어떻게 그리는지 파이썬 코드를 통해 이해해보았습니다. 파이썬 matplotlib 패키지의 pyplot으로 캔들스틱 차트를 그리고, 그 아래에 다른 기술적 분석 지표들을 그린 후 시장의 움직임을 입체적으로 이해해 보시기 바랍니다.

 

 

함께 참고하면 좋은 글
파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
파이썬 바이낸스 API와 판다스 캔들 스틱 차트로 시계열 데이터 분석
mplfinance 캔들 차트 스타일
캔들 차트 스타일 변경 (mplfinance, customization)
파이썬 바이낸스 API, mplfinance로 캔들 차트 파라미터 연습
하이킨 아시 차트, 파이썬 바이낸스 API로 시계열 데이터 분석
시계열 데이터 분석 : 추세분석 지표 6가지


참고자료

▶ Wikipedia, Candlestick chart

Leave a Comment