반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<FinanceDataReader 패키지 시리즈>

 

2021.08.10 - [파이썬 패키지/데이터분석] - [Python/FinanceDataReader] 1편. 파이썬으로 국내/해외 상장주식 가격데이터 가져오기 (ft. 환율, 코인가격도 가능)

 

 

이번 시간에는 지난 시간에 배운 FinanceDataReader와 데이터 시각화 라이브러리인 Bokeh를 이용해서 여러분들이 늘 보시는 캔들차트를 그려보는 시간을 가져보겠습니다.

 

또 한 번 느끼는 거지만 파이썬에는 너무나 다양한 라이브러리가 존재하네요.

 


 

Bokeh 라이브러리

 

Bokeh는 최신 웹 브라우저를 위한 대화형 시각화를 만들기 위한 Python 라이브러리입니다. 단순한 플롯에서 스트리밍 데이터 세트가 있는 복잡한 대시보드에 이르기까지 아름다운 그래픽을 구축하는 데 도움이 됩니다. Bokeh를 사용하면 JavaScript를 직접 작성하지 않고도 JavaScript 기반 시각화를 만들 수 있습니다.

 

https://docs.bokeh.org/en/latest/#

 

Bokeh documentation

Bokeh is a Python library for creating interactive visualizations for modern web browsers. It helps you build beautiful graphics, ranging from simple plots to complex dashboards with streaming data...

docs.bokeh.org

 

해당 라이브러리는 다음 기회에 더 깊게 배우기로 하고, FinanceDataReader로 캔들차트를 그릴 때 사용한다는 것만 알고 넘어가도록 하겠습니다.

 

Bokeh를 사용하려면 먼저 아래의 코드로 라이브러리를 설치해주어야합니다.

 

설치 방법은 아시다시피 파이썬 터미널 창이나 주피터 노트북의 코드 입력창에 아래의 코드를 넣고 실행해주시면 됩니다.

(저는 왠지 모르지만 이미 설치가 되어있다고 하네요. 어쩌면 아나콘다 패키지에 포함되어 있을 수도 있겠네요.)

 

pip install bokeh

 

 

캔들 차트 그리기

 

아까부터 언급드렸던 캔들 차트란 한글로 봉차트라고도 부르며, 일정기간 동안의 주가 움직임이 표현된 막대 모양의 봉들(양봉, 음봉)로 이루어진 주식 차트를 말합니다. 

 

파이썬을 이용하면 코드 몇 줄로 아래와 같은 차트를 우리가 직접 그릴 수가 있다니, 대단하지 않나요?

 

 

코드는 아래와 같이 단 세 줄이면 됩니다.

 

만약 FinanceDataReader 라이브러리가 설치 되지 않았으면 코드 실행 시 오류가 날 수 있습니다.

 

그럴 땐 지난 강의를 참고해주세요.

 

# FinanceDataReader 라이브러리 불러오기 (Bokeh는 따로 안불러와도 됨)
import FinanceDataReader as fdr

# 삼성전자 주가 데이터 가져오기 (2020년 1월 1일부터 현재까지)
df_samsung = fdr.DataReader('005930', '2020-01-01')

# 가져온 데이터로 캔들차트 그리기
fdr.chart.plot(df_samsung)

 

<실행 결과>

 

해당 코드를 실행하시면 우측 상단에 몇 개의 버튼이 있습니다. 좌측부터 차례대로 기능을 알려드리면 다음과 같습니다.

 

1) 이동: 좌클릭으로 차트 상하좌우로 이동 가능

2) 돋보기: 좌클릭으로 특정 영역을 드래그하면 해당 영역 확대

3) 돋보기+휠: 휠 버튼으로 확대 축소 가능

4) 저장: 현재 보이는 차트를 png 파일로 저장

5) 새로고침: 코드를 처음 실행했을 때의 상태로 돌아감

 

 

캔들 차트 그리기 옵션

 

마치 matpoltlib 라이브러리처럼 bokeh를 이용한 캔들차트도 다양한 옵션(파라미터) 설정이 가능합니다.

 

파라미터 설명 설정값 기본값
width 차트의 너비 정수 800
height 차트의 높이 정수 480
volume_height 거래량 막대 높이 실수 (height 기준 %) 0.3 (30%)
recent_high 이전 고점 표시 여부 True/False False
volume 거래량 막대 표시 여부 True/False True
title 그래프 제목 문자열 ('원하는 제목') '' (없음)
ylabel y축 레이블 지정 문자열 ('원하는 레이블') '' (없음)
moving_average_type 이동평균 타입 * 'SMA'(Simple Moving Average, 단순 이동평균)
* 'WMA'(Weighted Moving Average, 가중 이동평균)
* 'EMA'(Exponential Moving Average, 지수 이동평균)
* 'None'(표시하지 않음)
'SMA'
moving_average_lines 이동평균선 세부설정 튜플 (이동평균선의 데이터 개수, 캔들 개수)
ex) (5, 20, 60)은 5일, 20일, 60일을 의미
(5, 20, 60)
color_up 상승 캔들 색상 문자열 ('색상') / 기본값(설정하지 않는 것) 추천 'red'
color_down 하락 캔들 색상 문자열 ('색상') / 기본값(설정하지 않는 것) 추천 'blue'
color_volume_up 전일거래량 대비 상승 막대의 색상 문자열 ('색상') / 기본값(설정하지 않는 것) 추천 'red'
color_volume_down 전일거래량 대비 하락 막대의 색상 문자열 ('색상') / 기본값(설정하지 않는 것) 추천 'blue'

 

설정 가능한 파라미터들을 알아보았으니 실제로 어떻게 사용하는지 예시를 보여드리겠습니다.

 

fdr.chart.plot(df_samsung, title='삼성전자 주가', ylabel='단위:KRW', width=1000, height=600)

 

코드의 결과를 보시면 좌측상단에 '삼성전자 주가'라는 제목이 추가되었고, 좌측에 '단위:KRW'라는 레이블이 적용된 것을 확인 할 수 있습니다. 너비와 높이도 설정하여 기본값보다 그래프의 크기를 키워보았습니다.

 

 

 

차트 설정 기본값 변경

 

config 함수를 이용하면 기본설정을 변경하면, 번번이 파라미터들을 추가 설정하지 않아도 됩니다.

 

# config 변수에 원하는 파라미터 설정을 dict(딕셔너리) 형태로 저장
config = {'width': 1000, 
          'height': 600,
}

# config 함수를 이용해서 설정을 한 번에 적용
fdr.chart.config(config=config)

# 그래프 그리기
fdr.chart.plot(df_samsung)

 

결과는 생략하겠습니다.

 

만약 옵션을 가장 처음에 셋팅되어 있던 기본값으로 되돌리고 싶을 때는 아래와 같이 해주시면 됩니다.

 

fdr.chart.config(reset=True)

 

오늘 준비한 내용은 여기까지입니다.

 

오늘도 코딩유치원을 찾아주신 모든분들께 감사드립니다.

 


<참고 자료>

 

깃허브 FinanceDataReader Tutorial -차트 그리기와 활용하기

 

https://github.com/FinanceData/FinanceDataReader

 

GitHub - FinanceData/FinanceDataReader: Financial data reader

Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub.

github.com

 

반응형

+ Recent posts