이 섹션에서는 REST API를 사용하여 과거 시세 데이터를 수집하는 방법을 안내합니다. 업비트와 바이낸스 API를 활용합니다. 단계별 실습을 통해 데이터 수집 과정을 익힙니다.
1단계: API 키 설정 및 확인
먼저 업비트 또는 바이낸스 API 키를 발급받아야 합니다. 각 거래소 웹사이트에서 API 키를 발급받을 수 있습니다. API 키는 안전하게 보관해야 합니다. pyupbit
또는 ccxt
를 사용하여 API 키를 설정합니다.
2단계: 업비트 API를 이용한 과거 데이터 수집
pyupbit
라이브러리를 사용하여 업비트 과거 데이터를 수집합니다. get_ohlcv()
함수를 사용합니다. 이 함수는 OHLCV(Open, High, Low, Close, Volume) 데이터를 반환합니다. 다음은 비트코인(BTC)의 일봉 데이터를 수집하는 예제 코드입니다.
import pyupbit
import pandas as pd
# KRW-BTC 최근 200일의 일봉 데이터 요청
df = pyupbit.get_ohlcv("KRW-BTC", count=200)
# 데이터 확인
print(df)
count
파라미터는 가져올 데이터의 개수를 지정합니다. 업비트는 최대 200개까지 데이터를 제공합니다. to
파라미터를 사용하여 특정 날짜 이전의 데이터를 가져올 수 있습니다.
3단계: 바이낸스 API를 이용한 과거 데이터 수집
ccxt
라이브러리를 사용하여 바이낸스 과거 데이터를 수집합니다. fetch_ohlcv()
함수를 사용합니다. 이 함수는 OHLCV 데이터를 반환합니다. 다음은 비트코인(BTC)의 1시간봉 데이터를 수집하는 예제 코드입니다.
import ccxt
import pandas as pd
# 바이낸스 거래소 객체 생성
binance = ccxt.binance()
# BTC/USDT 1시간봉 데이터 요청
ohlcv = binance.fetch_ohlcv("BTC/USDT", timeframe='1h', limit=200)
# 데이터프레임으로 변환
df = pd.DataFrame(ohlcv, columns=['datetime', 'open', 'high', 'low', 'close', 'volume'])
df['datetime'] = pd.to_datetime(df['datetime'], unit='ms')
df.set_index('datetime', inplace=True)
# 데이터 확인
print(df)
timeframe
파라미터는 봉의 간격을 지정합니다. (예: ‘1m’, ‘5m’, ‘1h’, ‘1d’, ‘1w’, ‘1M’) limit
파라미터는 가져올 데이터의 개수를 지정합니다. 바이낸스는 거래쌍에 따라 데이터 제공량에 차이가 있습니다.
4단계: 수집 데이터 전처리
수집된 데이터는 데이터프레임 형태로 저장됩니다. 데이터프레임은 데이터 분석에 유용한 자료 구조입니다. 필요에 따라 데이터 타입을 변경하거나, 새로운 컬럼을 추가할 수 있습니다.
5단계: 에러 처리 및 예외 처리
API 요청 시 에러가 발생할 수 있습니다. 네트워크 문제, API 키 오류 등이 원인입니다. try-except
구문을 사용하여 예외 처리를 합니다. 에러 발생 시 적절한 로깅을 수행하는 것이 중요합니다.
6단계: 데이터 수집 주기 설정
과거 데이터를 지속적으로 수집해야 합니다. 스케줄링 라이브러리를 사용하여 데이터 수집 주기를 설정합니다. schedule
라이브러리가 대표적입니다.
이 단계를 통해 과거 시세 데이터를 수집하는 방법을 익혔습니다. 수집된 데이터는 백테스팅 및 자동매매 전략 개발에 활용됩니다. 다음 섹션에서는 수집한 데이터를 Oracle Autonomous Database에 저장하는 방법을 알아봅니다.