본문 바로가기
공부/파이썬 Python

Python으로 캔들스틱 주가 시각화하기

by 혼밥맨 2021. 12. 21.
반응형

Python으로 캔들스틱 주가 시각화하기

 

결과 Snippet

아래와 같은 주가 데이터를 캔들스틱으로 시각화 해보겠습니다.

AAPL (2019-01-01 ~ 2019-08-01) Candle Stick Chart

위 이미지에 나타난 주가 데이터는 아래와 같은 여러개의 캔들 스틱으로 이루어져 있습니다. 왼쪽은 양봉, 오른쪽은 음봉 (미국 기준. 한국은 반대)인데, 실선 같이 가느다란 막대의 각 끝은 고가, 저가를 나타내고, 색깔이 있는 막대의 각 끝은 시가, 종가를 의미합니다. 

Candle Stick

 

필요 라이브러리

- yfinance documentation

- mpl-finance

and etc ...

 

yfinance: 주가 데이터를 불러오기 위해 필요

mpl-finance: 캔들스틱을 시각화하기 위해 필요

 

Full Code

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Install libraries
# pip install mpl-finance
# pip install yfinance
 
 
# import
import datetime as dt
import pandas_datareader as web
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc                 #ohlc: Open High Low Close
import pandas
from pandas_datareader import data as pdr
import yfinance as yfin
 
 
# define Time Frame
start = dt.datetime(201011)
end = dt.datetime.now()
 
ticker = ['QQQ''SPY''MSFT''SNAP']
 
# load data
yfin.pdr_override()
data = pdr.get_data_yahoo(ticker[0], start=start, end=end)
 
 
# print(data)
"""                  Open        High  ...   Adj Close    Volume
Date                                ...                      
2010-01-04   30.620001   31.100000  ...   23.904980  38409100
2010-01-05   30.850000   31.100000  ...   23.912703  49749600
2010-01-06   30.879999   31.080000  ...   23.765957  58182400
2010-01-07   30.629999   30.700001  ...   23.518795  50559700
2010-01-08   30.280001   30.879999  ...   23.680994  51197400 """
 
 
# print(data.columns)
""" Index(['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'], dtype='object') """
 
 
# restructure data
data = data[['Open''High''Low''Close']]
 
 
data.reset_index(inplace=True)
data['Date'= data['Date'].map(mdates.date2num)          # date format to number
 
 
# print(data.head())
"""       Date       Open       High        Low      Close
0  733776.0  30.620001  31.100000  30.590000  30.950001
1  733777.0  30.850000  31.100000  30.639999  30.959999
2  733778.0  30.879999  31.080000  30.520000  30.770000 """
 
 
# visualization
ax = plt.subplot()
ax.grid(True)
ax.set_axisbelow(True)
ax.set_title('{} Share Price'.format(ticker), color='white')
 
ax.set_facecolor('black')                                 # background color: black
ax.figure.set_facecolor('#121212')
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')
ax.xaxis_date()
 
candlestick_ohlc(ax, data.values, width=0.5, colorup='#00ff00')
plt.show()
 
cs

QQQ (2010-01-01 ~ 2021-12-20) 캔들스틱 차트

QQQ Candlestick Chart

MSFT (2010-01-01 ~ 2021-12-20) 캔들스틱 차트

MSFT Candlestick Chart

MSFT (2010-01-01 ~ 2021-12-20) 캔들스틱 차트

SPY Candlestick Chart

반응형

댓글