python 으로 비트코인 분석용 차트 그리기 | 거래량 그리기
본문 바로가기
주식 , 가상화폐/기술적 분석

python 으로 비트코인 분석용 차트 그리기 | 거래량 그리기

by _HEBB 2020. 3. 7.

비트코인 분석용 차트 그리기

이전글(주가와 이동평균 그리기)에 이어서 가장 중요한 거래량을 차트에 그려보자.

캔들스틱을 그리는데 사용하는 데이터와 동일하기 때문에 순서없이 함께봐도 된다.

 

2020/02/29 - [주식 , 가상화폐/기술적 분석] - python 으로 비트코인 차트 그리기 | 캔들스틱 차트 그리기

 

python 으로 비트코인 차트 그리기 | 캔들스틱 차트 그리기

주식차트 그리기 가상화페 거래소에는 주식 거래소와 마찬가지로 캔들차트를 볼 수 있다. 거래량도 볼 수 있고 거의 모든 보조지표들을 표시할 수 있다. 파이썬 프로그래밍을 통해서 직접 이 차트를 그려보도록 하..

diplabs.tistory.com


마찬가지로 준비물은

  • python
  • cryptowatch API
  • bokeh

 

거래량 데이터

거래량은 해당 기간동안 주식을 사고 팔았던 양을 의미한다. 주의할 것은 만약 A 가 B 에게 비트코인 1 개를 팔았다면 거래량은 1 비트코인이 되는 것이다. A 가 팔고 B 가 그만큼을 사서 2 비트코인이라고 오해하면 안된다.

 

거래량 그리기

데이터는 cryptowatch 에서 가져온다. 주가데이터에 포함되어 있다. 사실 OHLCV 라고 주가데이터와 거래량데이터가 함께 나온다. 캔들차트와 같은 차트에 그려도 되는데 보통 차트 하나를 더 만들어서 아래에다가 붙인다. 왜냐하면 거래량만을 이용해 지표를 만들 수 있기 때문이다. 거래량으로 만든 지표를 거래량과 함께 표시함으로써 더 깔끔한 형태가 될 수 있다.

 

데이터 가져오기

import requests
import datetime

# 가져올 데이터의 기간을 정함.
start = datetime.datetime(2020,2,10,2,1,21)
# end = datetime.datetime(2020,2,15,2,1,21)

# bitfinex 거래소의 비트코인 가격 데이터(미 달러 기준)
URL = 'https://api.cryptowat.ch/markets/bitfinex/btcusd/ohlc'
# 3600 초 = 1 시간 단위 봉
params = {'after':start, 'periods':'3600'}
response = requests.get(URL, params=params)
response = response.json()

캔들스틱 차트를 그릴때와 같이 데이터를 가져온다.

 

데이터 변환하기

data = response['result']['3600']
df = pd.DataFrame(data, columns=['date', 'open', 'high', 'low', 'close', 'volume', 'quote_volume'])
df.loc[:, 'date'] = pd.to_datetime(df.loc[:, 'date'], unit='s')

pandas 데이터프레임으로 바꿔준다.
그리고 날짜를 표시하기 위해 날짜데이터를 변환해준다. unix timestamp 형식을 datetime 형식으로 바꾼다.

 

차트 띄우기

from bokeh.plotting import figure, show, output_notebook
from bokeh.layouts import gridplot
from bokeh.models.formatters import NumeralTickFormatter

output_notebook()


# 거래량 차트 만들기
p_volumechart = figure(plot_width=1050, plot_height=200, x_range=p_candlechart.x_range, tools="crosshair")
p_volumechart.vbar(df.index, 0.5, df.volume, fill_color="white", line_color="white")
p_volumechart.background_fill_color = '#121212'

# 날짜 표시를 위한 작업
major_label = {
    i: date.strftime('%Y-%m-%d') for i, date in enumerate(pd.to_datetime(df["date"]))
}
major_label.update({len(df): ''})
p_volumechart.xaxis.major_label_overrides = major_label
p_volumechart.yaxis[0].formatter = NumeralTickFormatter(format='0,0')

# 그리기
p = gridplot([[p_volumechart]])
show(p)

 

최종적으로 아래와 같은 거래량 그래프가 뜬다. 가격이 올랐을 때 초록색, 내렸을 때 빨간색 기둥으로 색칠하는 경우도 있지만 우선 단색으로 채운다.

 

거래량 차트

 

캔들스틱 차트와 함께 그리면 아래와 같이 나온다. 거래소에서 볼 수 있는 차트다. 지표를 더 추가해서 그릴 수도 있다.

 

캔들 + 거래량 차트

 

댓글