바이낸스 거래소에서 발급받은 API 키를 활용하여 암호화폐 데이터를 부르는 글을 소개하고자 합니다. 업비트에서는 pyupbit 라는 라이브러리를 활용했었습니다. 이번에는 여러 거래소들의 API 들을 활용하기 좋게 wrapper시킨 ccxt(CryptoCurrency eXchance Trading Library) 라는 라이브러리를 활용할 예정입니다. (또한 이 글은 python을 기준으로 작성할 예정입니다.) ccxt 는 아래 github를 한번 참고해보시면 좋겠습니다. 글의 맥락은 업비트 때와 비슷하다고 볼 수 있습니다. 아래 글들도 한번 참고하면 좋겠습니다.
2022.06.12 - [Programming/Crypto] - pyupbit 소개 및 설치
2022.06.12 - [Programming/Crypto] - pyupbit 활용 - 코인 정보 및 현재가/매수/매도 호가 가져오기
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]
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을 조절해가면서 데이터를 부를 수 있게 되었습니다. 다음 글에서는 포지션을 잡는 글을 소개하고자 합니다.
'Programming > Crypto' 카테고리의 다른 글
Binance API와 ccxt를 활용한 롱/숏 포지션 잡기 (4) | 2022.09.26 |
---|---|
Binance API와 ccxt를 활용한 선물 계좌 조회 및 선물 거래 시작하기 (0) | 2022.09.19 |
바이낸스(Binance) API Key 발급하기 (0) | 2022.09.02 |
Python을 활용한 매매보조지표 구현하기(상대강도지수 RSI, MFI, CCI) (2) | 2022.08.27 |
AWS 서버에 파일 전송하기 (FTP 프로그램 활용하기) (2) | 2022.07.18 |