정지용
기술스택 목록
백엔드

ccxt

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

여러 암호화폐 거래소의 API를 하나의 통일된 인터페이스로 다루는 라이브러리

ccxt는 바이낸스, 업비트 등 수많은 암호화폐 거래소가 제각각 제공하는 REST/WebSocket API를 하나의 공통 인터페이스로 감싸주는 오픈소스 라이브러리이다. 거래소마다 엔드포인트, 인증 방식, 응답 포맷이 모두 달라 여러 거래소를 동시에 연동하려면 각각 별도의 클라이언트 코드를 짜야 하는 문제가 있었고, ccxt는 이를 표준화된 메서드 집합으로 추상화해 해결한다. 시세 조회, 주문 생성/취소, 잔고 확인 같은 공통 기능을 동일한 방식으로 호출할 수 있어, 거래소를 교체하거나 여러 거래소를 동시에 다루는 트레이딩 봇 개발에 널리 쓰인다.

이럴 때 사용합니다

  • 여러 거래소를 동시에 연동하거나 향후 거래소 전환 가능성이 있는 자동매매 시스템을 만들 때
  • 거래소별 API 문서를 일일이 파악하지 않고 표준화된 방식으로 빠르게 연동하고 싶을 때
  • 시세 조회, 주문, 잔고 관리 같은 공통 기능을 반복 구현하지 않고 검증된 라이브러리에 맡기고 싶을 때

핵심 개념

Unified API
거래소마다 다른 REST 응답 구조를 fetchTicker, createOrder 같은 공통 메서드와 표준화된 데이터 형식으로 통일해 제공하는 방식이다.
Exchange Instance
각 거래소를 나타내는 객체로, API 키와 시크릿을 넣어 초기화하면 해당 거래소에 맞는 요청을 내부적으로 처리한다.
Rate Limit
거래소별 API 호출 횟수 제한을 라이브러리가 자동으로 관리해 과도한 요청으로 인한 차단을 줄여주는 기능이다.
Market Symbol
BTC/USDT처럼 기준통화/견적통화 쌍으로 거래쌍을 표기하는 공통 표기법으로, 거래소마다 다른 심볼 표기를 통일한다.
CCXT Pro (WebSocket)
REST 폴링 대신 웹소켓 스트리밍으로 실시간 시세·주문 데이터를 받을 수 있도록 확장한 기능이다.

거래소 클라이언트 생성 및 잔고 조회

바이낸스 클라이언트를 생성해 BTC/USDT 현재가를 조회하고 시장가 매수 주문을 넣는 최소 예시이다.

Python
import ccxt

exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET',
    'enableRateLimit': True,
})

# 현재가 조회
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker['last'])

# 시장가 매수 주문
order = exchange.create_market_buy_order('BTC/USDT', 0.001)
print(order['id'])

처음 쓸 때 흔한 함정

  • 거래소마다 지원하는 기능과 파라미터가 조금씩 달라 완전히 동일하게 동작하지 않는 경우가 있다
  • API 키에 출금 권한까지 부여하면 봇 오류 시 자금 손실 위험이 커지므로 권한을 최소화해야 한다
  • 레이트 리밋을 무시하고 반복 호출하면 일시적으로 API 접근이 차단될 수 있다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.