Python Upbit : get_ohlcv (코인 가격 history 조회하기, 과거 코인 가격 내역 조회)
pyupbit에서 어떤 코인의 과거 가격 내역을 조회하려면 get_ohlcv method를 사용합니다.
Syntax
pyupbit.get_ohlcv(ticker='KRW-BTC',
interval='day',
count=10,
to='YYYYMMDD HH:MM:SS'
period=0.1)
ticker = 가격 내역을 조회할 코인의 ticker
interval = 가격 조회 간격을 의미합니다. interval에 지정 가능한 값은 다음과 같습니다.
day = 일봉
minute1 = 1분봉
minute3 = 3분봉
minute5 = 5분봉
minute10 = 10분봉
minute15 = 15분봉
minute30 = 30분봉
minute60 = 60분봉
minute240 = 240분봉
week = 주봉
month = 월봉
count = 최근 몇일지의 데이터를 조회할지를 의미합니다. (default값은 200입니다.)
to = 출력할 max date time을 지정합니다.
period = 데이터 요청 주기 (초) (default 값은 0.1 입니다.)
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC')
print(type(price_history))
print(price_history.columns)
print(price_history)
-- Result
<class 'pandas.core.frame.DataFrame'>
Index(['open', 'high', 'low', 'close', 'volume', 'value'], dtype='object')
open high ... volume value
2021-08-08 09:00:00 50956000.0 51731000.0 ... 8950.681433 4.562136e+11
2021-08-09 09:00:00 50790000.0 53077000.0 ... 10539.781659 5.454869e+11
2021-08-10 09:00:00 52862000.0 53491000.0 ... 9910.238110 5.208785e+11
2021-08-11 09:00:00 52335000.0 53500000.0 ... 10943.968458 5.792028e+11
2021-08-12 09:00:00 52585000.0 53395000.0 ... 13202.592674 6.915387e+11
get_ohlcv method로 KRT-BTC(원화마켓 비트코인 시세)를 조회해봤습니다.
그 결과를 좀 보기좋게 표시하자면 위와 같습니다. (결과가 너무 많아서 일부만 나타내었습니다.)
가격 history는 DataFrame 형식으로 return됩니다.
또한 DataFrame의 컬럼은 다음 5개가 있습니다.
- DataFrame index = 기준 날짜/시간
- open = 기준 시간과 시가(시작 가격)
- high = 고가
- low = 저가
- close = 종가
- volume = 거래량 (거래된 코인의 개수)
- value = 거래 금액 (거래된 코인의 개수에 대한 가격)
DataFrame의 index를 보면 시간이 오전 9시로 고정되어있습니다.
따라서 매일 오전 9시 기준 데이터가 쌓이는 것을 볼 수 있습니다.
2022-02-23 09:00:00이라면 2022-02-22 09:00:00 ~ 2022-02-23 09:00:00 기간에 대한 비트코인 가격 정보를 나타내는 것 같습니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='minute1')
interval을 minute1으로 설정했을 경우 1분봉을 조회해줍니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='month')
interval = month로 설정할 경우 월봉을 나타내줍니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='day',
count=3)
count 옵션은 가장 최근 몇개의 데이터를 return할지에 대한 옵션입니다.
count=3으로 설정했기 때문에 3개의 행만 return됩니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='month',
count=3)
월봉도 마찬가지입니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='minute1',
count=10,
to='20220221 15:00:00')
to='20220221 15:00:00으로 설정했습니다.
이 말은 2022-02-21 15:00:00의 1분 전 즉, 2022-02-21 14:59:00 까지의 데이터를 조회합니다.
결국 2022-02-21 15:00:00 보다 이전의 시간 데이터를 조회한다는 의미입니다.
여기서 interval='minute1'이므로 1분봉을 나타내며
count=10이기 때문에 2022-02-21 15:00:00 이전 데이터 10개를 가져온다는 의미입니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='minute1',
count=10,
to='20220221')
to='20220221'처럼 시간을 생략하여 입력하면 시간이 24시로 기본지정됩니다.
2022-02-21 24:00:00 (결국 2022-02-22 00:00:00과 같음.)의 1분 전인 2022-02-21 23:59:00 이전 데이터를 조회해줍니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='day',
count=10,
to='20220221 23:00:00')
to='20220221 15:00:00' 로 설정하고 interval='day'로 설정할 경우엔 위와 같은 결과가 나옵니다.
일봉은 9시 기준으로 나타나지며 2022-02-21 15:00:00 이전 9시 데이터는 가장 최신 데이터가 2022-02-21 09:00:00 입니다.
따라서 가장 아래쪽에 2022-02-21 09:00:00 데이터가 나옵니다.
위 내용을 이해하면 아래 예시처럼 to='20220221 23:00:00' 로 설정해도 결국 2022-02-21 09:00:00 데이터가 가장 최신 데이터로 추출되는 것이 이해될겁니다.
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='day',
count=10,
to='20220221 23:00:00')
import pyupbit as ub
price_history = ub.get_ohlcv(ticker='KRW-BTC',
interval='minute1',
count=10,
to='20220225')
to를 2022-02-25로 지정했습니다. (count는 10으로 지정)
그러면 2022-02-25 23:59:00 이전 시간대의 데이터 중 가장 최신의 데이터를 추출합니다.
근데 현재 시간은 2022-02-24 02:20:00입니다.
따라서 2022-02-25 23:59:00까지의 데이터가 존재하지 않으므로, 존재하는 데이터 중 가장 최신의 데이터부터 10개를 가져오게 됩니다.
참고자료
https://github.com/sharebook-kr/pyupbit
분봉 = https://docs.upbit.com/reference/%EB%B6%84minute-%EC%BA%94%EB%93%A4-1
일봉 = https://docs.upbit.com/reference/%EC%9D%BCday-%EC%BA%94%EB%93%A4-1
주봉 = https://docs.upbit.com/reference/%EC%A3%BCweek-%EC%BA%94%EB%93%A4-1
월봉 = https://docs.upbit.com/reference/%EC%9B%94month-%EC%BA%94%EB%93%A4-1