호돌찌의 AI 연구소
article thumbnail

바이낸스 거래소에서 발급받은 API 키를 활용하여 암호화폐 데이터를 부르는 글을 소개하고자 합니다. 업비트에서는 pyupbit 라는 라이브러리를 활용했었습니다. 이번에는 여러 거래소들의 API 들을 활용하기 좋게 wrapper시킨 ccxt(CryptoCurrency eXchance Trading Library) 라는 라이브러리를 활용할 예정입니다. (또한 이 글은 python을 기준으로 작성할 예정입니다.) ccxt 는 아래 github를 한번 참고해보시면 좋겠습니다. 글의 맥락은 업비트 때와 비슷하다고 볼 수 있습니다. 아래 글들도 한번 참고하면 좋겠습니다. 

 

https://github.com/ccxt/ccxt

 

GitHub - ccxt/ccxt: A JavaScript / Python / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchan

A JavaScript / Python / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchanges - GitHub - ccxt/ccxt: A JavaScript / Python / PHP cryptocurrency trading API with sup...

github.com

2022.06.12 - [Programming/Crypto] - pyupbit 소개 및 설치

 

pyupbit 소개 및 설치

이전 글에서는 API Key를 발급을 받았습니다. 2022.06.12 - [Programming/Crypto] - [Basic] Upbit API Key 발급하기 이제 발급받은 API Key를 활용을 해야하는데, 보통 어떻게 활용하는지 소개를 해보겠습니다...

hotorch.tistory.com

2022.06.12 - [Programming/Crypto] - pyupbit 활용 - 코인 정보 및 현재가/매수/매도 호가 가져오기

 

pyupbit 활용 - 코인 정보 및 현재가/매수/매도 호가 가져오기

지난 글에 이어서 pyupbit를 활용하는 내용을 소개하고자 합니다. 2022.06.12 - [Programming/Crypto] - [Basic] pyupbit 소개 및 설치 pyupbit가 설치되어있다고 가정하고 시작하겠습니다. 가이드 문서 기준으로..

hotorch.tistory.com

 

 

 

API Key 부르기 및 ccxt 라이브러리 설치하기 


 

이전 글에서 바이낸스 API Key 를 발급받고 저장하는 것은 이 글 에서 다루었습니다. 이어서 pickle로 저장한 것을 부릅니다. 

import pickle

with open('./keypair/binance_secret_key.pkl', 'rb') as k:
    secret_key = pickle.load(k)
    
# API key
secret = secret_key['secret key']
access = secret_key['access key']

 

또한 ccxt를 설치하는데 pip 으로 쉽게 설치가 가능합니다.

pip install ccxt

 

 

Binance 객체 생성하기 및 거래 가능 코인 Ticker 조회하기 


설치한 ccxt를 바탕으로 바이낸스 객체를 생성합니다. fetch_tickers()를 활용하면 거래가 가능한 암호화폐 목록을 볼 수 있습니다. 

import ccxt
import pandas as pd

binance = ccxt.binance()
markets = binance.fetch_tickers()
print(markets.keys())

 

USDT(테더)로 거래가 가능한 현물 코인도 한번 살펴보겠습니다.

usdt_coin = [i for i in list(markets.keys()) if "/USDT" in i]
usdt_coin[0:10]

테더로 거래가 가능한 10개 코인 예시

 

Bitcoin 가격 데이터 부르기


fetch_oclcv() 를 활용하면 데이터를 부를 수 있지만 한번 돌려보면 아래와 같이 nested list 형태로 나타납니다. 

btc = binance.fetch_ohlcv('BTC/USDT')
btc

 

이 구조를 조금 더 간편한 pandas dataframe 형태로 수정하고자 아래와 같은 사용자 함수를 작성하여 활용합니다.

# 분봉/일봉 캔들 데이터 loads
# 바이낸스 객체 /코인 티커 / TimeFrame (1d,4h,1h,15m,10m,1m ...)
def GetOhlcv(binance, Ticker, period):
    btc_ohlcv = binance.fetch_ohlcv(Ticker, period)
    df = pd.DataFrame(btc_ohlcv, columns=['datetime', 'open', 'high', 'low', 'close', 'volume'])
    df['datetime'] = pd.to_datetime(df['datetime'], unit='ms')
    df.set_index('datetime', inplace=True)
    return df

 

한번 15분 데이터를 조회해보겠습니다. 그리고 9월 5일 utc 기준 2시 데이터 종가로는 19775.6k인데 차트(utc + 9 기준)와 비교하면 같음을 알 수 있습니다. 

GetOhlcv(binance, 'BTC/USDT', '15m')

마우스로 가져다 댔기 때문에 오차는 양해부탁드립니다.

 

이제 거래하고자 하는 ticker와 timeframe을 조절해가면서 데이터를 부를 수 있게 되었습니다. 다음 글에서는 포지션을 잡는 글을 소개하고자 합니다. 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!