IT | 프로그래밍

[python 시스템트레이딩 자동매매] 바이낸스 API 로 비트코인 과거 데이터 가져오기

MINT_NAVY 2020. 12. 13. 20:55
반응형

국내 거래소에서는 과거 데이터를 조회할 수 있는

api 혹은 기능을 제공하지 않고 있습니다.

 

테스트가 끝나면 원화로 트레이딩을 하고 싶었지만

국내 거래소에서는 방법이 없었습니다.

 

binance api를 이용해서 과거 데이터를 가져오는데

성공했습니다.

 

바이낸스 공식 api 문서 입니다.

https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data

 

Binance API Documentation

 

binance-docs.github.io

 

파라미터 설명

symbol은 원화 티커를 제공하고 있지 않기 때문에

BTC/USDT 티커로 시세를 조회합니다.

 

interval로 들어갈 수 있는 값은 enum 타입으로 되어있는데 가능한 값들은

1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M

입니다.

 

API 입력으로 들어가는 조회시작일자와

조회종료일자는 timestamp 형식으로 들어갑니다.

밀리초 단위입니다.

 

입력이 datetime 형식인 경우 밀리초형식 timestamp로 변환해야 합니다.

datetime을 timestamp로 변환 샘플코드
샘플코드 결과

소수점 이하 초 단위는 의미가 없고

이렇게 저렇게 형변환하기 귀찮아서 문자열로 처리했습니다.

 

#

 

요청 url 샘플코드

요청 url 샘플코드입니다.

 

response 샘플

응답으로 오는 값에 대한 바이낸스 공식 api 명세 입니다.

 

API General Info

바이낸스 문서 General Info에서

json 혹은 배열의 형식이라고 합니다.

 

그리고 데이터는 오름차순이고,

시간 혹은 timestamp에 관한 값들은 밀리초 라고 되어있습니다.

 

응답으로 온 값에 timestamp 밀리초 형식으로 오는

시간에 관한 값을 쉽게 알아볼 수 있도록 변환해줘야 편합니다.

 

timestamp를 datetime으로 변환 샘플코드

 

#

 

결과

응답으로 받은 1분봉 데이터를 연-월-일 시:분:초 형식으로 바꾼

pycharm 디버그 창 스크린 샷입니다.

 

#

 

바이낸스 문서에 짧은 시간동안 많은 요청이 들어오면

자동으로 ip 차단을 한다고 명시했습니다.

IP Limits

 

한번 막히게 되면 2분에서 3일까지 막힌다고 되어있네요

 

#

 

다음 개발 항목

1. 막히지 않도록 일정간격 텀을 두고 반복 요청 기능

2. 가져온 가격 데이터를 csv로 저장(일단위 파일, 분봉 데이터 예정)

 

(평일에도 회사에서 코딩해야 하는데...어으...)

반응형