코인

[자동매매봇 만들기][3편] 바이낸스에서 실시간 시세와 캔들 데이터 가져오기 (API 키 없이)

stupidsoft 2025. 5. 14. 20:04
반응형

자동매매를 만들기 위해 꼭 API 키가 필요한 것은 아니다.
실제로 바이낸스는 공개 데이터를 누구나 API로 받아볼 수 있도록 하고 있다.
이번 글에서는 API 키 없이도 바이낸스에서 실시간 가격과 캔들 데이터를 가져오는 방법을 알아본다.


1. ccxt 라이브러리 소개

바이낸스뿐만 아니라 여러 거래소의 API를 하나의 인터페이스로 통합해주는 파이썬 라이브러리다.
fetch_ticker, fetch_ohlcv, fetch_order_book 같은 다양한 기능을 제공한다.

이전 글에서 설치한 ccxt를 그대로 사용하면 된다. 설치가 안 된 경우 아래 명령어로 설치 가능하다.

pip install ccxt

2. 바이낸스 객체 만들기

API 키 없이도 사용할 수 있도록 아래와 같이 객체를 생성한다.

import ccxt

binance = ccxt.binance({
    'enableRateLimit': True  # 과도한 요청을 피하기 위한 설정
})

3. 실시간 가격 가져오기

fetch_ticker() 함수로 특정 코인의 현재 시세를 가져올 수 있다.

symbol = 'BTC/USDT'  # 비트코인/테더 마켓
ticker = binance.fetch_ticker(symbol)

print(f"{symbol} 현재 가격: {ticker['last']}")

출력 예시는 다음과 같다:

BTC/USDT 현재 가격: 103698.03

ticker에는 다음과 같은 정보들이 포함되어 있다:

  • 'last': 마지막 체결 가격
  • 'bid': 현재 매수호가
  • 'ask': 현재 매도호가
  • 'high', 'low': 24시간 최고/최저가
  • 'baseVolume': 거래량

4. 캔들 데이터 가져오기 (OHLCV)

차트를 그리거나 기술적 분석을 하기 위해선 캔들 데이터가 필요하다.
fetch_ohlcv() 함수로 일정 간격의 가격 흐름을 가져올 수 있다.

import pandas as pd

symbol = 'BTC/USDT'
timeframe = '5m'   # 5분봉
limit = 50         # 최근 50개 캔들

ohlcv = binance.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)

# pandas 데이터프레임으로 변환
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')

print(df.tail())

출력 결과는 다음과 같이 구성된다:

timestamp open high low close volume

2025-05-14 10:40:00 103788.26 103856.63 103788.25 103809.52 24.00770

5. 예외 처리 (선택)

네트워크 문제나 바이낸스 서버 상태에 따라 오류가 발생할 수 있다.
이럴 때를 대비해 예외 처리를 추가해두면 좋다.

try:
    ticker = binance.fetch_ticker('BTC/USDT')
    print(f"현재 가격: {ticker['last']}")
except ccxt.BaseError as e:
    print(f"데이터 요청 중 오류 발생: {e}")

마무리하며

이번 글에서는 API 키 없이도 바이낸스에서 실시간 시세와 캔들 데이터를 가져오는 방법을 다뤘다.
지금까지의 내용만으로도 기본적인 데이터 분석이나 시각화는 충분히 가능하다.

 

반응형