본문 바로가기

코딩 갤러리/데이터분석

[파이썬] 캔들 스틱 차트(Candlestick Chart) 그리기

728x90
반응형

파이썬을 이용해 캔들 스틱 차트를 만드는 방법입니다.

이전까지 mpl_finance 패키지를 사용했으나, 지원이 중단되어 mplfinance 패키지를 사용해야합니다.

캔들 차트를 그리기 위해 필요한 패키지들은 아래와 같습니다.

import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
import mplfinance as mpf

만약 패키지가 없으신 분들은 prompt를 실행하고 다운을 받으시길 바랍니다.

pip install pandas_datareader.data
pip install datetime
pip install matplotlib.pyplot
pip install mplfinance

이제 주식의 주가 데이터를 불러오도록 하겠습니다. 종목은 삼성전자로 선택하였고, 기간은 2021년 1월 1일부터 2021년 8월 20일까지의 데이터를 불러오겠습니다.

start = datetime.datetime(2021, 1, 1)
end = datetime.datetime(2021, 8, 20)
samsung = web.DataReader("005930.KS", "yahoo", start, end)

위 코드를 입력하면 2021년 1월 1일부터 2021년 8월 20일 까지의 삼성전자의 고가, 저가, 시가, 종가, 거래량, 수정주가를 가져올 수 있습니다.

In[7]: samsung
Out[7]: 
               High      Low     Open    Close      Volume     Adj Close
Date                                                                    
2021-01-04  84400.0  80200.0  81000.0  83000.0  38655276.0  82268.570312
2021-01-05  83900.0  81600.0  81600.0  83900.0  35335669.0  83160.648438
2021-01-06  84500.0  82100.0  83300.0  82200.0  42089013.0  81475.625000
2021-01-07  84200.0  82700.0  82800.0  82900.0  32644642.0  82169.460938
2021-01-08  90000.0  83000.0  83300.0  88800.0  59013307.0  88017.460938
             ...      ...      ...      ...         ...           ...
2021-08-13  76000.0  74100.0  75800.0  74400.0  61270643.0  74400.000000
2021-08-17  75100.0  74000.0  74000.0  74200.0  30944847.0  74200.000000
2021-08-18  74600.0  73100.0  73900.0  73900.0  29192631.0  73900.000000
2021-08-19  74400.0  73100.0  73500.0  73100.0  22166298.0  73100.000000
2021-08-20  73900.0  72500.0  73500.0  72700.0  22364803.0  72700.000000
[159 rows x 6 columns]

그리고 이 데이터를 이용해 캔들 차트를 만들도록 하겠습니다.

mpf.plot(samsung, type='candle', mav=(10, 20, 60), volume=True, title='SAMSUNG', figratio=(10,5), tight_layout=True)
plt.show()

위 코드를 실행하면 기본 이미지로 아래와 같은 그래프가 나오게 됩니다. type은 차트의 타입을 정하는 것으로 아무것도 입력하지 않으면 Bar 차트가 나오게 되고, type='candle'을 입력하면 캔틀 차트가 나오게 됩니다. mav는 이동평균선을 표시할 수 있게 해주는 것이며, title은 그래프에 제목을 입력하며, figratio는 그래프의 크기를 설정, tight_layout은 좌우 공백을 제거해줍니다.

728x90
반응형

mpf.plot(samsung, type='candle', mav=(10, 20, 60), volume=True, title='SAMSUNG', figratio=(10,5), tight_layout=True, style='yahoo')
plt.show()

이 외에도 mplfinance.plot에서 지원하는 기본 스타일들이 있습니다. 예를 들어 style='yahoo'를 넣게 되면 아래와 같은 스타일의 차트가 나오게 됩니다.

이 외에도 'binance', 'blueskies', 'brasil', 'charles', 'checkers', 'classic', 'default', 'mike', 'nightclouds', 'sas', 'starsandstripes'의 스타일 있으며, 어떻게 나오는 지 궁금하시는 분은 (클릭)을 눌러서 확인하시길 바랍니다.

import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
import mplfinance as mpf

# 데이터를 가져올 날짜 설정
start = datetime.datetime(2021, 1, 1)
end = datetime.datetime(2021, 8, 20)

# 야후에서 삼성전자 주가 가져오기
samsung = web.DataReader("005930.KS", "yahoo", start, end)

# 차트 설정하기
mpf.plot(samsung,
         type='candle', # 캔들 차트
         mav=(10, 20, 60), # 10일, 20일, 60일 이동평균선 표시
         volume=True, #거래량 표시
         style=s,
         title='SAMSUNG',
         figratio=(10,5),
         tight_layout=True) #좌우 공백 제거

plt.show()

 

728x90
반응형