이제 명실공히 제1의 국내 가상화폐 거래소인 업빗(Upbit)은 아쉽게도 API서비스를 제공하고 있지 않습니다.
그리고, 몰려드는 고객들의 응대와 신규 코인 개설 및 서버 운영 등으로 인해 당분간 API가 공개될 것 같지도 않구요.
하지만 업빗 거래소 자체적으로는 브라우저에 보이는 많은 정보들을 API 형태로 호출해서 사용하고 있으며, 별다른 노력을 들이지 않고도 브라우저창에 몇 가지 형태의 URL만 입력하며 일반 사용자들도 해당 정보를 볼 수 있는 구조입니다.
일전에 이와 관련하여 간단히 포스팅을 한 적이 있는데 단순히 브라우저로 데이터를 확인하는데 그치는 것이 아니라, python 프로그래밍을 통해 그 데이터를 변수로 받아서 table 형태로 만들어 보도록 하겠습니다.
업빗 사이트에서 차트의 데이터를 확인할 수 있는 url은 다음과 같습니다.
출력되는 데이터 형식은 다음과 같구요.
[{"code":"CRIX.UPBIT.KRW-BTC","candleDateTime":"2017-11-29T08:00:00+00:00","candleDateTimeKst":"2017-11-29T17:00:00+09:00","openingPrice":12984000.00000000,"highPrice":13049000.00000000,"lowPrice":12650000.00000000,"tradePrice":12906000.0,"candleAccTradeVolume":2304.40360409,"candleAccTradePrice":29672880650.53673000,"timestamp":1511950491189,"unit":240}, ... ]
이 데이터를 아래와 같은 파이썬의 라이브러리들을 활용하여 다운로드 받은 후 데이터 분석을 위해 별도의 변수에 저장해 보겠습니다.
- 웹 라이브러리 request로 웹데이터 다운로드
- 데이터 분석 라이브러리 pandas를 이용해서 다운로드 받은 데이터를 테이블 형 변수(Dataframe)에 저장
# 사용할 라이브러리를 불러옵니다.
import requests
import pandas as pd
# 차트 정보를 받아오는 url을 다른 코인 또는 다른 기간으로 호출하기 편하게 format스트링 구조로 만듭니다.
term = 'minutes'
interval = '240'
coin = 'XRP'
count = '200'
url = "https://crix-api.upbit.com/v1/crix/candles/{term}/{interval}?code=CRIX.UPBIT.KRW-{coin}&count={count}".format( term = term, interval = interval, coin = coin, count = count)
# 웹 라이브러리를 이용하여 차트 정보를 다운로드 합니다.
c = requests.get(url).json()
# 다운로드 한 정보를 데이터 분석용 변수에 넣기 위해 정리합니다.
chart = []
for item in c:
code = item['code']
code2 = code.replace("CRIX.UPBIT.KRW-", "")
open = item['openingPrice']
high = item['highPrice']
low = item['lowPrice']
close = item['tradePrice']
kst = item['candleDateTimeKst']
if 'KRW' in code:
print (code2, open, high, low, close, kst)
chart.append([code2, open, high, low, close, kst])
# pandas의 Dataframe 자료형에 다운로드하여 정리한 데이터를 입력합니다.
columns = ['coin','open','high','low','close','kst']
df = pd.DataFrame.from_records(chart, columns = columns)
df.index = pd.DatetimeIndex(df.kst)
여기가지 진행하시면 다음과 같은 형태로 테이블화 되어 있으며, 데이터 분석 라이브러리를 활용하여 차트를 그려보는 등 다양한 분석을 해볼 수 있습니다.
참고로 pandas 라이브러리는 파이썬 언어를 배우는 만큼 굉장히 공부할 부분이 많기 때문에, 처음부터 모두 공부하기보다는 자신이 필요한 함수나 패턴을 하나씩 찾아서 사용해 보시는게 좋을 것 같습니다.
pandas의 메뉴얼은 아래 링크를 참조해 주세요.
pandas: powerful Python data analysis toolkit - PyData
오늘은 파이썬의 장점인 웹 스크래핑과 데이터 분석의 가장 기초가 되는 내용을 다루었습니다.
프로그래밍으로 매매를 위한 정보 분석이나 트레이딩을 해보고 싶으신 분은 함께 공부해 가면서 의견도 나누면 좋겠습니다. ^^
※ 파이썬을 이용한 투자 포스팅은 #kr-systemtrading에서 보실 수 있습니다.