변혁적인 삶

[AI | 데이터분석] CCXT를 이용한 코인 데이터 수집하기 본문

AI

[AI | 데이터분석] CCXT를 이용한 코인 데이터 수집하기

revolutionarylife 2024. 11. 14. 09:03
반응형

💵[AI] CCXT를 이용한 코인 데이터 수집하기

목차

    • 개요
    • CCXT 설치
    • CCXT 사용법(예제)
    • CCXT의 주요 기능
    • CCXT로 매수 주문 넣기
    • CCXT로 매도 주문 넣기
    • 마무리

개요

안녕하세요! 오늘은 CCXT에 대해 알아보겠습니다. CCXT는 CryptoCurrency eXchange Trading Library로, 말 그대로 암호화폐 거래소 거래 라이브러리입니다. 다양한 암호화폐 거래소의 API를 통합하여 손쉽게 암호화폐 거래를 할 수 있게 해줍니다.

CCXT 자체는 AI가 아니지만, 전 CCXT를 이용하여 수집한 데이터로 model을 학습시켜 미래 값을 예측하게 만드는 AI를 만들것이기 때문에 AI 카테고리에 넣었습니다..!

아래 CCXT 공식 github에서 지원하는 거래소, 사용법을 확인할 수 있습니다.

 

GitHub - ccxt/ccxt: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading API with support for more than 100 bitc

A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchanges - ccxt/ccxt

github.com


CCXT 설치

Python에서 CCXT 설치는 여느때와 같이 pip를 사용하여 간단히 설치할 수 있습니다.

pip install ccxt

CCXT 사용법(예제)

CCXT를 사용하여 바이낸스에 연결하고 비트코인의 가격 데이터를 가져오는 간단한 예제를 통해 기본 사용법을 알아보겠습니다.

1) 거래소 인스턴스 생성

먼저, 사용할 거래소의 인스턴스를 생성합니다. 예를 들어, 바이낸스(Binance) 거래소에 연결하려면 다음과 같이 코드를 작성합니다.

import ccxt

# 바이낸스 거래소 인스턴스 생성
exchange = ccxt.binance()

다음과 같이 인스턴스 생성 할 때 여러 인자를 줄 수도 있습니다.

# 거래소 인스턴스 생성 시 사용될 수 있는 주요 인자
binance = ccxt.binance({
    'apiKey': 'your_api_key',			# apikey
    'secret': 'your_secret_key'			# secretkey
    'enableRateLimit': True,			# API 요청 속도 제한
    'options': {'defaultType': 'future'}	# spot, future, margin등을 지정해 거래 타입 설정가능
})
  • 위와 같이 apikey를 거래소 인스턴스에 넣어두면 해당 키를 통해 API 접근 권한이 부여됩니다.
  • enableRateLimit을 사용하면, CCXT 라이브러리에서 API 요청 속도를 자동으로 조절해 제한을 넘지 않도록 합니다.
  • options에 defaultType으로 거래 타입을 지정할 수 있습니다.
    • 위 예제에서는 future로 설정하여 선물 거래로 지정했습니다.

 

2) 시세 정보 가져오기

특정 거래 쌍의 현재 가격을 조회할 수 있습니다. 예를 들어, 비트코인(BTC)과 테더(USDT) 간의 시세를 확인하려면 다음과 같이 작성합니다.

ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker['last'])  # 마지막 거래 가격

3) 과거 데이터 가져오기

백테스팅이나 차트 분석을 위해 과거 데이터를 가져오는 방법도 지원됩니다.

ohlcv = exchange.fetch_ohlcv('BTC/USDT', timeframe='1d', limit=5)
for candle in ohlcv:
    print(candle)  # 날짜, 시가, 고가, 저가, 종가, 거래량

위 코드에서는 timeframe 인자 값을 '1d'로 주어 1일봉 데이터를 limit의 개수만큼(5개) 가져옵니다.

'1d' 외에도 여러가지 값이 있는데, 주로 사용되는 값을 보면 다음과 같습니다.

  • 1m : 1분봉
  • 3m : 3분봉
  • 1h : 한 시간봉
  • 4h : 네 시간봉
  • 1d : 일봉
  • 1w : 주봉
  • 1M : 월봉

CCXT의 주요 기능

  • 다양한 거래소 지원: CCXT는 바이낸스, 코인베이스, 비트파이넥스 등 세계의 주요 거래소와 연결할 수 있습니다.
  • 간편한 거래 기능: 매수, 매도와 같은 주문을 쉽게 넣을 수 있습니다.
  • 다양한 시간대 데이터: CCXT는 여러 시간대(timeframe)의 가격 데이터를 제공합니다. 1분, 1시간, 하루, 주간, 월간 단위로 데이터를 확인할 수 있습니다.
  • API 관리: 거래소마다 API 키를 등록하여 안전하게 사용합니다.

CCXT로 매수 주문 넣기

아래는 CCXT로 매수 주문을 넣는 예제입니다. 이때, 거래소마다 주문 기능을 사용하려면 API 키와 비밀 키를 발급받아야 합니다.

⚠️ API키는 민감한 정보이므로 절대 노출되지 않도록 .env와 같은 파일에 넣어서 관리합시다. ⚠️

exchange.apiKey = 'your_api_key'
exchange.secret = 'your_secret_key'

# 시장가로 BTC 0.001개 매수
order = exchange.create_market_buy_order('BTC/USDT', 0.001)
print(order)

상기 코드는  create_market_buy_order 메소드를 사용하여 시장가로 매수하는 주문입니다.

지정가로 매수하고 싶다면 create_limit_buy_order 메소드를 이용하시면 됩니다.


CCXT로 매도 주문 넣기

아래는 CCXT로 매수 주문을 넣는 예제입니다.

exchange.apiKey = 'your_api_key'
exchange.secret = 'your_secret_key'

# 지정한 가격인 80,000$로 BTC 10개 매도
order = exchange.create_limit_sell_order('BTC/USDT', 10, price=80000)
print(order)

상기 코드는  create_limit_sell_order 메소드를 사용하여 지정가로 매도하는 주문입니다.

시장가로 매도하고 싶다면 create_market_sell_order 메소드를 이용하시면 됩니다.


마무리

CCXT는 초보자도 쉽게 다양한 거래소를 다룰 수 있도록 도와주는 라이브러리 입니다. 요즘 미국 대선 이후 비트코인이 다시 뜨고 있는데 CCXT 사용법을 익혀서 암호화폐 분석과 거래를 자동화 할 수 있는 프로그램 한번 만들어 보세요! 🧠

반응형