[알고리즘 트레이딩] 업비트 웹소켓 API 활용 가이드
1. 업비트 웹소켓 API란?
업비트(Upbit)에서는 웹소켓(WebSocket) API를 제공하여 실시간으로 거래소 데이터를 받을 수 있습니다. 웹소켓을 사용하면 반복적인 HTTP 요청 없이 시세, 체결 정보, 호가 데이터 등을 빠르게 받아올 수 있습니다.
웹소켓을 활용할 수 있는 주요 기능은 다음과 같습니다:
✅ 실시간 시세 정보 (ticker) – 특정 코인의 실시간 가격 변동 수신 ✅ 실시간 체결 정보 (trade) – 거래가 체결될 때마다 데이터 수신 ✅ 실시간 호가 정보 (orderbook) – 매수/매도 주문 현황을 실시간으로 조회
2. 업비트 웹소켓 API 접속 방법
업비트 웹소켓 서버 주소:
wss://api.upbit.com/websocket/v1
웹소켓을 활용하면 JSON 데이터를 주고받을 수 있으며, 원하는 데이터를 구독하기 위해 특정 형식의 메시지를 전송해야 합니다.
3. 실시간 시세 데이터 구독 (Ticker)
Ticker는 특정 코인의 현재가, 변동률, 거래량 등의 정보를 실시간으로 제공합니다.
✅ Python 코드 예제: 실시간 가격 변동 수신
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
print(f"{data['code']} 가격: {data['trade_price']} KRW")
ws = websocket.WebSocketApp(
"wss://api.upbit.com/websocket/v1",
on_message=on_message
)
ws.send(json.dumps([
{"ticket": "test"},
{"type": "ticker", "codes": ["KRW-BTC", "KRW-ETH"]}
]))
ws.run_forever()
📌 설명:
KRW-BTC
,KRW-ETH
의 실시간 가격 변동 데이터를 가져옵니다.- 가격 변동이 발생할 때마다 콘솔에 출력됩니다.
4. 실시간 체결 데이터 구독 (Trade)
Trade는 매수/매도 거래가 체결될 때마다 정보를 제공합니다.
✅ Python 코드 예제: 실시간 체결 정보 수신
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
print(f"체결: {data['code']} 가격: {data['trade_price']} KRW, 거래량: {data['trade_volume']}")
ws = websocket.WebSocketApp(
"wss://api.upbit.com/websocket/v1",
on_message=on_message
)
ws.send(json.dumps([
{"ticket": "test"},
{"type": "trade", "codes": ["KRW-BTC", "KRW-ETH"]}
]))
ws.run_forever()
📌 설명:
- 체결된 거래 정보를 실시간으로 받아옵니다.
- 가격과 거래량을 출력합니다.
5. 실시간 호가 데이터 구독 (Orderbook)
Orderbook은 매수/매도 주문 정보를 실시간으로 제공합니다.
✅ Python 코드 예제: 실시간 호가 데이터 수신
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
orderbook_units = data['orderbook_units']
print(f"종목: {data['code']}")
for unit in orderbook_units[:5]: # 상위 5개 호가 출력
print(f"매도 {unit['ask_price']} KRW / 매수 {unit['bid_price']} KRW")
ws = websocket.WebSocketApp(
"wss://api.upbit.com/websocket/v1",
on_message=on_message
)
ws.send(json.dumps([
{"ticket": "test"},
{"type": "orderbook", "codes": ["KRW-BTC", "KRW-ETH"]}
]))
ws.run_forever()
📌 설명:
- 매수·매도 호가 정보를 실시간으로 받아옵니다.
- 상위 5개의 매도/매수 가격을 출력합니다.
6. 웹소켓 사용 시 주의할 점
✅ 과부하 방지 – 너무 많은 요청을 보내면 업비트 서버에서 연결을 차단할 수 있습니다. ✅ 네트워크 연결 유지 – 웹소켓이 끊어질 경우 자동 재연결 기능을 추가하는 것이 좋습니다. ✅ JSON 데이터 처리 – 받아온 데이터를 파싱하여 필요한 정보만 추출해야 합니다.
7. 결론
업비트 웹소켓 API를 활용하면 실시간 가격 변동, 체결 내역, 호가 정보를 빠르게 받아올 수 있습니다.
💡 웹소켓 활용 예시:
- 실시간 가격 변동 알림 시스템 구축
- 자동 매매 시스템에서 빠른 데이터 반응 구현
- 거래소 데이터 시각화 프로젝트 개발
이 정보를 활용하여 보다 효율적인 트레이딩 프로그램을 개발할 수 있습니다! 🚀
댓글
댓글 쓰기