바이낸스 API 시작하기: 파이썬(Python) 첫 줄로 시세 조회하기
API를 활용하면 트레이딩을 자동화할 수 있습니다. API 키 생성 방법부터 파이썬을 이용한 첫 시세 조회 코드 작성까지 단계별로 안내합니다.
API는 퀀트 트레이딩과 매매 자동화의 핵심 열쇠입니다. 먼저 바이낸스 공식 사이트에서 가입을 진행하고, 바이낸스 공식 앱을 설치하세요(iOS 사용자는 iOS 설치 가이드를 참고하시기 바랍니다).
API란 무엇인가요?
API(Application Programming Interface)는 사용자의 손가락 대신 프로그램이 바이낸스의 기능을 직접 호출할 수 있게 해주는 인터페이스입니다.
- 실시간 시세 조회
- 주문 생성 및 취소
- 보유 잔고 확인
- 계정 간 이체 (제한적 허용)
API 키(API Key) 생성하기
생성 절차
- 바이낸스 웹사이트 로그인
- 프로필 아이콘 → [API 관리] 클릭
- [API 생성] 버튼 클릭
- '시스템 생성 키' 선택 → 2FA 인증 → 이름 설정
- 생성 완료
생성이 완료되면 다음 두 가지 정보가 제공됩니다.
- API Key: 공개용 식별자
- Secret Key: 서명용 비밀키
Secret Key는 생성 시 딱 한 번만 보여주므로 반드시 안전한 곳에 별도로 저장해 두어야 합니다.
권한 설정
각 API 키마다 상세 권한을 설정할 수 있습니다.
- 현물 및 마진 거래 활성화
- 선물 활성화
- 출금 활성화
- 마진 대출 활성화
입문자 권장 설정: 처음에는 '읽기 전용(Enable Reading)'만 활성화하여 테스트하세요. 출금 권한은 특별한 경우가 아니라면 절대 켜지 않는 것이 보안상 안전합니다.
IP 화이트리스트
보안을 위해 고정 IP 주소를 등록하는 것을 강력히 추천합니다. 등록된 IP에서 오는 요청만 수락되므로 훨씬 안전합니다. 가정이나 사무실의 고정 IP를 쓰거나, 서버(VPS)를 운영 중이라면 서버 IP를 등록하세요.
파이썬(Python) 첫 줄 실행하기
import requests
r = requests.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT')
print(r.json())
출력 예시: {'symbol': 'BTCUSDT', 'price': '63500.5'}
단순 시세 조회는 API 키가 없어도 누구나 호출할 수 있는 공개 인터페이스를 사용하므로 매우 간단합니다.
인증이 필요한 요청
주문이나 잔고 확인 같은 개인 정보 관련 인터페이스는 서명(Signature) 절차가 필요합니다.
import time, hmac, hashlib, requests
api_key = '내_API_키'
secret = '내_시크릿_키'
ts = int(time.time() * 1000)
params = f'symbol=BTCUSDT×tamp={ts}'
sig = hmac.new(secret.encode(), params.encode(), hashlib.sha256).hexdigest()
url = f'https://api.binance.com/api/v3/account?{params}&signature={sig}'
r = requests.get(url, headers={'X-MBX-APIKEY': api_key})
print(r.json())
위 코드를 실행하면 사용자의 현물 계정 잔고 정보를 받아볼 수 있습니다.
유용한 파이썬 라이브러리
직접 모든 로직을 짤 필요는 없습니다. 이미 잘 만들어진 라이브러리를 활용하세요.
python-binance: 가장 인기 있는 오픈소스 SDKccxt: 여러 거래소를 동시에 지원하는 표준 라이브러리binance-connector-python: 바이낸스 공식 제공 SDK
from binance.client import Client
client = Client(api_key, secret)
print(client.get_account())
라이브러리를 쓰면 코드량이 절반 이하로 줄어듭니다.
속도 제한(Rate Limit)
바이낸스 API는 과부하 방지를 위해 요청 횟수를 제한합니다.
- 공개 시세 조회: 분당 1,200 Weight(가중치)
- 개인 정보 조회/주문: 10초당 120회
제한을 초과하면 일시적으로 IP가 차단될 수 있으므로 주의해야 합니다.
자주 발생하는 에러
1. -1021 타임스탬프 오류
서버 시간과 본인 컴퓨터의 시간이 5초 이상 차이 날 때 발생합니다. 시스템 시간을 동기화하세요.
2. -2010 잔액 부족
주문 실행 시 계정 잔액이 부족한 경우입니다.
3. -2011 취소 실패
이미 체결되었거나 존재하지 않는 주문을 취소하려 할 때 발생합니다.
4. -1003 IP 속도 제한
너무 잦은 요청으로 인해 일시적으로 차단된 상태입니다. 요청 주기를 늘리세요.
REST API vs WebSocket
| 구분 | REST API | WebSocket |
|---|---|---|
| 일회성 요청 | 적합 | 부적합 |
| 실시간 데이터 스트림 | 부적합 | 적합 |
| 스냅샷 조회 | 적합 | 부적합 |
| 실시간 시세 푸시 | 부적합 | 적합 |
대부분의 자동 매매 전략은 REST와 웹소켓을 혼용하여 구축합니다.
웹소켓(WebSocket) 예시 코드
import websocket
ws = websocket.WebSocketApp('wss://stream.binance.com:9443/ws/btcusdt@trade',
on_message=lambda ws, msg: print(msg))
ws.run_forever()
실행 시 BTC/USDT의 모든 체결 내역을 실시간으로 받아볼 수 있습니다.
테스트넷(Testnet) 활용
바이낸스는 가상 자산으로 연습해 볼 수 있는 테스트넷을 제공합니다.
- 현물 테스트넷: testnet.binance.vision
- 선물 테스트넷: testnet.binancefuture.com
실제 자산을 투입하기 전 반드시 테스트넷에서 충분히 연습하시기 바랍니다.
API 리스크 관리 수칙
1. 개별 키 관리
전략별로 개별 API 키를 생성하여 사용하세요. 문제가 생기면 해당 키만 삭제하면 됩니다.
2. 보안 저장
Secret Key는 코드 안에 직접 적지 말고 환경 변수나 보안 폴더에 저장하세요.
3. 출금 권한 차단
자동 출금이 반드시 필요한 시스템이 아니라면 출금 권한은 항상 꺼두세요.
4. 정기 감사
매주 사용 중인 API 목록을 확인하고, 쓰지 않는 키는 즉시 삭제하세요.
API의 주요 용도
- 퀀트 트레이딩 (자동 매수/매도 전략 실행)
- 실시간 모니터링 (잔고 변화 알림 등)
- 자동 차익 거래 (거래소 간 가격 차이 이용)
- 데이터 분석 (과거 데이터 수집 및 백테스트)
- 카피 트레이딩 (다른 계정의 거래 복사)
권장 학습 경로
- 테스트넷에서 'Hello World' 급 코드 실행해 보기
- SDK를 사용하여 실시간 시세 받아오기
- '가격이 X 이하일 때 알림' 스크립트 작성해 보기
- 소액으로 간단한 전략 실행해 보기
- 리스크 관리 로직 추가 및 고도화
- 본격적인 자금 운용
자주 묻는 질문(FAQ)
Q: API를 쓰려면 KYC 인증이 필요한가요? A: 계정 자체가 KYC 인증이 되어 있어야 API 생성이 가능합니다.
Q: API 사용 시 수수료가 더 비싼가요? A: 일반 주문과 동일합니다. BNB 수수료 할인 혜택도 똑같이 적용됩니다.
Q: 앱을 안 켜고 API로만 거래가 가능한가요? A: 네, 가능합니다. 다만 코드의 완성도와 리스크 관리가 완벽해야 합니다.
관련 가이드
API는 트레이더에게 가장 강력한 무기입니다. 테스트넷부터 차근차근 시작해 보세요. 6개월 후에는 본인만의 자동화 수익 모델을 가질 수 있습니다.