시계열 데이터를 한눈에 확인하면서 특정 시간 구간에서의 가격 변동까지도 확인할 수 있는 도구가 캔들 차트입니다. 차트 가독성을 높이기 위해서는 캔들 차트 스타일 변경과 같은 customization이 필요합니다. 지난 포스팅에서는 mplfinance 패키지에서 기본적으로 제공하는 캔들 차트 스타일 적용 방법을 살펴보았습니다. 이번 포스팅에서는 캔들 차트에 정보를 추가하는 방법과, 캔들 차트 스타일 변경 방법을 정리해보겠습니다.
글의 순서
mplfinance를 이용한 캔들 차트
캔들 차트 스타일 변경
파이썬 코드 : mplfinance 캔들 차트 스타일 변경
mplfinance를 이용한 캔들 차트
시계열 데이터를 한눈에 확인하면서, 1시간, 4시간, 하루 등의 시간 동안 가격의 변동까지 확인할 수 있는 그래프가 캔들 차트입니다. 캔들 차트는 각 시간 구간에서의 시작가, 최고가, 최저가, 종료가를 보여줍니다. 그 시간 구간에서 가격이 올랐는지, 내렸는지는 색깔로 알 수 있습니다. 지금까지 mplfinance 패키지로 캔들 차트 그리는 법을 정리하였는데요. 그 과정을 아래 3개의 포스팅에서 확인하실 수 있습니다.
파이썬 바이낸스 API와 판다스 캔들 스틱 차트로 시계열 데이터 분석,
파이썬 바이낸스 API, mplfinance로 캔들 차트 파라미터 연습
mplfinance 캔들 차트 스타일
이번 포스팅에서는 캔들 차트에 제목과 가로축, 세로축 레이블(label) 넣는 방법, 그래프의 가로세로비, 그래프의 크기 등 캔들 차트에 정보를 추가하는 간편한 방법과 캔들 차트 스타일 변경 방법을 알아보겠습니다.
캔들 차트 스타일 변경
(1) kwargs
kwargs는 key word arguments를 줄여 쓴 변수명입니다. 딕셔너리 형태로 미리 변수를 설정해두면 plot 명령을 쓸 때 간단해집니다. 아래처럼 mplfinance로 캔들 차트를 그릴 때 **kwargs 로 인자를 불러옵니다.
1 2 3 |
kwargs = dict(title=’BTC Price’, type=’candle’, mav=(3,6,9),volume=True, figratio=(11,8),figscale=0.85) mpf.plot(df, **kwargs) |
kwargs 설정에서 쓰인 인자들을 하나씩 정리하였습니다.
▶ figscale=1.0 : 그래프(차트) 크기를 의미하며 값을 1.0으로 했을 때가 기본 크기
▶ figratio=(8,0, 5.75) : 그래프(차트)의 가로, 세로 비율
▶ show_nontrading = True : 주식시장의 경우, 주주중에만 거래를 합니다. 거래가 없었던 토요일, 일요일 날짜까지 차트에 포함시키려면 show_nontrading = True를 추가합니다. 거래가 없었던 날짜는 있지만, 그날의 캔들은 없는 상태로 보여줍니다.
▶ xlabel = ‘DATE’ : 그래프 x 축의 이름
▶ ylabel = ‘Price’ : 그래프 y 축의 이름
▶ ylabel_lower = ‘Shares\n Traded’ : 그래프에 volume까지 표시한 경우, volume 그래프의 y 축의 이름. 여기서 ‘\n’은 줄바꿈을 의미합니다.
▶ datetime_format = ‘ %A, %d-%m-%Y’ : 캔들 차트에서 그래프 x축의 값은 날짜와 시간입니다. 이 날짜와 시간을 그래프에 표시하는 형식을 지정할 수 있습니다. %A는 요일, d, m, Y는 각각 날짜, 월, 년을 나타냅니다. 만약 이 값을 지정하지 않으면, mplfinance은 기본값으로 월, 일을 표시합니다.
▶ xrotation = 20 : 눈금의 값을 표시할 때, 기본값은 수평입니다. rotation = 0을 의미하는데, 이를 20으로 바꾸면 시계반대방향으로 회전시켜 줍니다.
(2) mc
mc는 market color을 줄여쓴 변수명입니다. 캔들의 색깔을 지정할 수 있습니다. 우리나라 주식시장 캔들 차트처럼 상승을 빨간색으로 하락을 파란색으로 지정해 둘 수도 있습니다.
market 색깔을 인자로 넘겨준 후 스타일을 만듭니다. 이렇게 만든 스타일을 mpf.plot을 실행시킬 때 추가시켜주면 원하는 스타일의 캔들 차트를 볼 수 있습니다.
1 2 3 4 5 6 |
kwargs = dict(title='BTC Price', type='candle', mav=(3,6,9),volume=True, figratio=(11,8),figscale=0.85) mc = mpf.make_marketcolors(up='r', down='b', inherit=True) s = mpf.make_mpf_style(marketcolors = mc) mpf.plot(df, **kwargs, style=s) |
파이썬 코드 : mplfinance 캔들 차트 스타일 변경
실습코드에는 matplotlib의 mplfinance 패키지로 캔들 차트를 그리는 과정과, 캔들 차트 스타일을 바꾸는 방법을 나타내었습니다. mplfinance 패키지는 데이터프레임 형태의 가격 데이터만 있으면 간단한 명령으로 캔들 차트를 그릴 수 있습니다.
파이썬 바이낸스 API로 코인 데이터를 가져온 후 판다스 데이터프레임 형태로 바꾸는 과정은 위에서 나열한 3개의 포스팅과 동일합니다. 코드를 실행시키면 지정한 파일 경로에 그림 파일 2개가 생깁니다. binance.png 파일 style_changed.png 파일을 서로 비교해보시면서 캔들 차트 색상이 바뀐 것을 확인해 보시기 바랍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import os import time import pandas as pd import numpy as np from binance.client import Client import datetime from datetime import datetime, timezone, timedelta import mplfinance as mpf #01) 바이낸스 계정 접속 api_key = os.getenv('Binan_API_KEY') api_secret = os.getenv('Binan_SECRET_KEY') client = Client(api_key, api_secret) print('\n','[ BINANCE ACCOUNT ACCESSED ]') #02) 입력 : 시계열 데이터 수집 구간, 시간 간격, K tstt_utc = '2023-01-01 00:00:00' tend_utc = '2023-01-28 23:59:59' t_interval = '12h' K = 0.5 bars = client.get_historical_klines('BTCUSDT', t_interval, tstt_utc, tend_utc, limit=1000) #03) ohlcv 데이터를 판다스 데이터프레임에 저장 후 ohlcv 데이터만 추출 df = pd.DataFrame(bars) #03-1) ohlcv 데이터만 추출 for i in bars: del i[6:] df = pd.DataFrame(bars) #04) 데이터프레임 열 이름 붙여주기 df = pd.DataFrame(bars, columns=['Date','Open','High','Low','Close','Volume']) #05) 데이터프레임 열 type을 실수형으로 변환 df = df.astype({'Open' : 'float', 'High' : 'float', 'Low' : 'float', 'Close' : 'float', 'Volume' : 'float'}) #06) Date 열의 형태를 epoch에서 Pandas.Timestamp로 변경 후 Date 열을 index로 설정 df['Date'] = df['Date'].apply(lambda date: pd.Timestamp(time.ctime(date/1000.))) df.set_index('Date', inplace=True) print(df.head(5)) #07) 캔들 차트 스타일 적용 file_path = 'C:/_python/pandas/candle_style_customization/' kwargs = dict(title='BTC Price', type='candle', style='binance', mav=(3,6,9),volume=True, figratio=(11,8),figscale=0.85) mpf.plot(df, **kwargs, savefig=file_path + 'binance.png') #08) 캔들 차트 스타일 변경 kwargs = dict(title='BTC Price', type='candle', mav=(3,6,9),volume=True, figratio=(11,8),figscale=0.85) mc = mpf.make_marketcolors(up='r', down='b', inherit=True) s = mpf.make_mpf_style(marketcolors = mc) mpf.plot(df, **kwargs, style=s, savefig=file_path + 'style_changed.png') |
마치며 …
시계열 데이터를 한눈에 확인하면서 1시간, 1일, 1주일 등 시간 구간에서의 가격 변동까지도 확인할 수 있는 도구가 캔들 차트입니다. mplfinance 패키지에서 기본적으로 제공하는 캔들 차트 스타일 적용 방법에 이어, 이번 포스팅에서는 캔들 차트에 정보를 추가하는 방법과, 캔들 차트 스타일 변경 방법까지 정리해보았습니다.
mplfinance 패키지로는 판다스 데이터프레임 형태를 이용하여 쉽게 캔들 차트를 그릴 수 있습니다. 이번 포스팅이 빠르게 시장 상황을 체크하는데 유용하게 활용되길 바랍니다.
함께 참고하면 더 좋은 글 :
1. 파이썬 바이낸스 API와 판다스 캔들 스틱 차트로 시계열 데이터 분석
2. 파이썬 바이낸스 API, mplfinance로 캔들 차트 파라미터 연습
3. mplfinance 캔들 차트 스타일
4. 파이썬 데이터 분석 : 판다스 데이터프레임 통계량, 그래프
5. 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리
6. 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
7. 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
8. 파이썬 데이터 분석 : 판다스 데이터프레임 통계량, 그래프
8. 파이썬 프로그래밍 시작
참고자료
Financial Markets Data Visualization using Matplotlib