지금까지 제 블로그에서 기술적분석 지표를 설명하는 데 필요한 차트는 TradingView의 차트를 이용했습니다. 하지만 무료 버전은 차트에 추가할 수 있는 지표의 숫자가 제한되고 TradingView에 등록되지 않은 기술적 지표는 사용하는 것이 불편하여 앞으로는 mplfinance라는 파이썬 패키지를 이용해서 차트를 그려보려고 합니다. 이에 앞서, 이번 포스팅에서는 mplfinance의 사용 방법을 소개해드리겠습니다.
mplfinance는 파이썬의 대표적인 시각화 라이브러리인 matplotlib를 기반으로 한 금융 데이터 시각화 도구입니다. 이 라이브러리는 주식, 외환, 암호화폐 등 다양한 금융시장의 가격 데이터를 손쉽게 시각화할 수 있도록 도와줍니다. 특히 matplotlib에서는 구현하기 어려운 캔들스틱 차트, ohlc 차트 등 금융 데이터의 시각화에 특화된 기능을 제공합니다. 기존의 mpl_finance 패키지가 업데이트되면서 패키지 명칭이 mplfinance로 변경되었습니다.
설치방법
mplfinance 패키지는 파이썬의 pip 명령어를 이용해서 쉽게 설치할 수 있습니다.
pip install mplfinance
기본 사용법
mplfinance를 사용하여 금융 데이터를 시각화하는 기본적인 방법을 살펴보겠습니다. 주식 가격 데이터를 캔들스틱 차트로 시각화하는 예제를 통해 알아보겠습니다.
먼저 필요한 라이브러리를 임포트합니다
import mplfinance as mpf
샘플 데이터를 생성하거나 가져옵니다. 데이터는 pandas 데이터프레임으로 되어 있어야 하며 '시가(open)', '고가(high)', '저가(low)', '종가(close)' 데이터를 포함하여야 합니다. 이번에는 FinanceDataReader 패키지를 이용해서 SK하이닉스(000660)의 주식 데이터를 불러오도록 하겠습니다.
import FinanceDataReader as fdr
# SK하이닉스 종목코드
ticker = '000660'
source = 'KRX'
symbol = f'{source}:{ticker}'
# 조회 시작일 및 조회 종료일
start = '2024-01-01'
end = '2024-03-31'
# SK하이닉스 주가 조회
df = fdr.DataReader(symbol, start=start, end=end)
# 컬럼명 소문자로 변경
df.columns = df.columns.str.strip().str.lower()
마지막 구문의 경우 FinanceDataReader에서 제공하는 데이터의 컬럼명 첫 글자가 대문자로 되어 있어 이를 소문자로 수정해주기 위한 것으로 반드시 필요한 명령은 아닙니다.
이제 mplfinance를 사용하여 캔들스틱 차트를 그려보겠습니다.
mpf.plot(df, type='candle', figratio(20, 9), figscale=0.9)
plt.show()
위의 명령어를 실행하면 아래와 같은 차트를 얻을 수 있습니다.
캔들차트가 그려지기는 했지만 mplfinance의 기본세팅으로 차트를 생성하면 평소에 HTS나 MTS에서 보았던 그래프와는 서식이 다르기 떄문에 어색합니다. 보다 익숙한 차트를 그리기 위해 설정값을 변경해보겠습니다. mplfinance의 make_marketcolors 메서드를 이용해서 캔들차트의 설정값을 자유롭게 변경할 수 있습니다.
종가가 시가보다 높게 마감되었을 경우 빨간색, 낮게 마감되었을 경우 파란색이 되도록 설정해 보겠습니다. make_marketcolors의 입력값을 조정해주면 됩니다.
- up = 'r'
- down = 'b'
- wick = 'in' (wick은 윗꼬리와 아랫꼬리를 의미하며, 'in'값은 inherit의 약자로 설정값을 inherit로 입력할 경우 up/down의 설정값을 상속받게 됩니다.)
make_marketcolors로 차트의 색상을 설정하고, mplfinance의 make_mpf_style 함수를 이용해서 차트 스타일로 등록한 후 차트를 생성하면 설정된 색상으로 차트를 생성합니다. 아래 코드블럭에서 figratio와 figscale은 차트의 크기를 설정해주는 값으로 필수적으로 입력해야하는 것은 아닙니다.
# 차트 스타일
colors = mpf.make_marketcolors(up='r', down='b', wick='in')
customized_style = mpf.make_mpf_style(marketcolors=colors)
# 설정값 입력
kwargs = dict(type='candle', volume=False, figratio=(20, 9), figscale=0.9)
mpf.plot(df, **kwargs, style=customized_style)
# 차트 생성
plt.show()
위 코드를 실행하면 아래와 같은 차트를 얻을 수 있으며, 주식 트레이딩 시스템에서 보던 차트와 유사한 것을 확인할 수 있습니다.
전체 코드입니다.
import mplfinance as mpf
import FinanceDataReader as fdr
# SK하이닉스 종목코드
ticker = '000660'
source = 'KRX'
symbol = f'{source}:{ticker}'
# 조회 시작일 및 조회 종료일
start = '2024-01-01'
end = '2024-03-31'
# SK하이닉스 주가 조회
df = fdr.DataReader(symbol, start=start, end=end)
# 컬럼명 소문자로 변경
df.columns = df.columns.str.strip().str.lower()
# 차트 스타일
colors = mpf.make_marketcolors(up='r', down='b', wick='in')
customized_style = mpf.make_mpf_style(marketcolors=colors)
# 설정값 입력
kwargs = dict(type='candle', volume=False, figratio=(20, 9), figscale=0.9)
mpf.plot(df, **kwargs, style=customized_style)
# 차트 생성
plt.show()
차트 스타일을 마음대로 바꿀 수 있지만 'classic', 'yahoo', 'nightclouds' 등 기본적으로 제공되는 스타일도 있습니다. 이 외에도 거래량 차트 추가, 이동평균선 및 기술적분석 지표 등 보조지표 추가 등 다양한 기능을 활용할 수 있습니다.
오늘은 mplfinance를 이용해 일봉차트를 그려보고 스타일을 변경하는 방법을 소개해 드렸습니다. 다음시간에는 mplfinance 패키지를 사용해서 기술적지표 그래프를 추가하는 방법을 보다 자세하게 소개해드리도록 하겠습니다.
긴 글 읽어주셔서 감사합니다.
'파이썬' 카테고리의 다른 글
[파이썬] Pandas-ta 패키지: 금융 데이터를 위한 강력한 기술적 분석 도구 (0) | 2024.11.26 |
---|---|
FinanceDataReader를 활용한 주식 데이터 수집 (2) | 2024.11.22 |
[파이썬] mplfinance로 보조지표 차트 그리기 (3) | 2024.11.11 |