Skip to main content

ccxt-python

CCXT cryptocurrency exchange library for Python developers. Covers both REST API (standard) and WebSocket API (real-time). Helps install CCXT, connect to exchanges, fetch market data, place orders, stream live tickers/orderbooks, handle authentication, and manage errors in Python. Use when working with crypto exchanges in Python projects, trading bots, data analysis, or portfolio management. Supports both sync and async (asyncio) usage.

소스 정보

저장소
ccxt/ccxt
최근 소스 활동
2026년 9월 21일 11:42
감지된 SKILL.md 언어
영어
스타
44,393
포크
8,899

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
ccxt-python
description
CCXT cryptocurrency exchange library for Python developers. Covers both REST API (standard) and WebSocket API (real-time). Helps install CCXT, connect to exchanges, fetch market data, place orders, stream live tickers/orderbooks, handle authentication, and manage errors in Python. Use when working with crypto exchanges in Python projects, trading bots, data analysis, or portfolio management. Supports both sync and async (asyncio) usage.
# CCXT for Python A comprehensive guide to using CCXT in Python projects for cryptocurrency exchange integration. ## Installation ### REST API (Standard) ```bash pip install ccxt ``` ### WebSocket API (Real-time, ccxt.pro) ```bash pip install ccxt ``` ### Optional Performance Enhancements ```bash pip install orjson # Faster JSON parsing pip install coincurve # Faster ECDSA signing (45ms → 0.05ms) ``` Both REST and WebSocket APIs are included in the same package. ## Quick Start ### REST API - Synchronous ```python import ccxt exchange = ccxt.binance() exchange.load_markets() ticker = exchange.fetch_ticker('BTC/USDT') print(ticker) ``` ### REST API - Asynchronous ```python import asyncio import ccxt.async_support as ccxt async def main(): exchange = ccxt.binance() await exchange.load_markets() ticker = await exchange.fetch_ticker('BTC/USDT') print(ticker) await exchange.close() # Important! asyncio.run(main()) ``` ### WebSocket API - Real-time Updates ```python import asyncio import ccxt.pro as ccxtpro async def main(): exchange = ccxtpro.binance() while True: ticker = await exchange.watch_ticker('BTC/USDT') print(ticker) # Live updates! await exchange.close() asyncio.run(main()) ``` ## REST vs WebSocket | Import | For REST | For WebSocket | |--------|----------|---------------| | **Sync** | `import ccxt` | (WebSocket requires async) | | **Async** | `import ccxt.async_support as ccxt` | `import ccxt.pro as ccxtpro` | | Feature | REST API | WebSocket API | |---------|----------|---------------| | **Use for** | One-time queries, placing orders | Real-time monitoring, live price feeds | | **Method prefix** | `fetch_*` (fetch_ticker, fetch_order_book) | `watch_*` (watch_ticker, watch_order_book) | | **Speed** | Slower (HTTP request/response) | Faster (persistent connection) | | **Rate limits** | Strict (1-2 req/sec) | More lenient (continuous stream) | | **Best for** | Trading, account management | Price monitoring, arbitrage detection | **When to use REST:** - Placing orders - Fetching account balance - One-time data queries - Order management (cancel, fetch orders) **When to use WebSocket:** - Real-time price monitoring - Live orderbook updates - Arbitrage detection - Portfolio tracking with live updates ## Creating Exchange Instance ### REST API - Synchronous ```python import ccxt # Public API (no authentication) exchange = ccxt.binance({ 'enableRateLimit': True # Recommended! }) # Private API (with authentication) exchange = ccxt.binance({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True }) ``` ### REST API - Asynchronous ```python import ccxt.async_support as ccxt exchange = ccxt.binance({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True }) # Always close when done await exchange.close() ``` ### WebSocket API ```python import ccxt.pro as ccxtpro # Public WebSocket exchange = ccxtpro.binance() # Private WebSocket (with authentication) exchange = ccxtpro.binance({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET' }) # Always close when done await exchange.close() ``` ## Common REST Operations ### Loading Markets ```python # Load all available trading pairs exchange.load_markets() # Access market information btc_market = exchange.market('BTC/USDT') print(btc_market['limits']['amount']['min']) # Minimum order amount ``` ### Fetching Ticker ```python # Single ticker ticker = exchange.fetch_ticker('BTC/USDT') print(ticker['last']) # Last price print(ticker['bid']) # Best bid print(ticker['ask']) # Best ask print(ticker['volume']) # 24h volume # Multiple tickers (if supported) tickers = exchange.fetch_tickers(['BTC/USDT', 'ETH/USDT']) ``` ### Fetching Order Book ```python # Full orderbook orderbook = exchange.fetch_order_book('BTC/USDT') print(orderbook['bids'][0]) # [price, amount] print(orderbook['asks'][0]) # [price, amount] # Limited depth orderbook = exchange.fetch_order_book('BTC/USDT', 5) # Top 5 levels ``` ### Creating Orders #### Limit Order ```python # Buy limit order order = exchange.create_limit_buy_order('BTC/USDT', 0.01, 50000) print(order['id']) # Sell limit order order = exchange.create_limit_sell_order('BTC/USDT', 0.01, 60000) # Generic limit order order = exchange.create_order('BTC/USDT', 'limit', 'buy', 0.01, 50000) ``` #### Market Order ```python # Buy market order order = exchange.create_market_buy_order('BTC/USDT', 0.01) # Sell market order order = exchange.create_market_sell_order('BTC/USDT', 0.01) # Generic market order order = exchange.create_order('BTC/USDT', 'market', 'sell', 0.01) ``` ### Fetching Balance ```python balance = exchange.fetch_balance() print(balance['BTC']['free']) # Available balance print(balance['BTC']['used']) # Balance in orders print(balance['BTC']['total']) # Total balance ``` ### Fetching Orders ```python # Open orders open_orders = exchange.fetch_open_orders('BTC/USDT') # Closed orders closed_orders = exchange.fetch_closed_orders('BTC/USDT') # All orders (open + closed) all_orders = exchange.fetch_orders('BTC/USDT') # Single order by ID order = exchange.fetch_order(order_id, 'BTC/USDT') ``` ### Fetching Trades ```python # Recent public trades trades = exchange.fetch_trades('BTC/USDT', limit=10) # Your trades (requires authentication) my_trades = exchange.fetch_my_trades('BTC/USDT') ``` ### Canceling Orders ```python # Cancel single order exchange.cancel_order(order_id, 'BTC/USDT') # Cancel all orders for a symbol exchange.cancel_all_orders('BTC/USDT') ``` ## WebSocket Operations (Real-time) ### Watching Ticker (Live Price Updates) ```python import asyncio import ccxt.pro as ccxtpro async def main(): exchange = ccxtpro.binance() while True: ticker = await exchange.watch_ticker('BTC/USDT') print(ticker['last'], ticker['timestamp']) await exchange.close() asyncio.run(main()) ``` ### Watching Order Book (Live Depth Updates) ```python async def main(): exchange = ccxtpro.binance() while True: orderbook = await exchange.watch_order_book('BTC/USDT') print('Best bid:', orderbook['bids'][0]) print('Best ask:', orderbook['asks'][0]) await exchange.close() asyncio.run(main()) ``` ### Watching Trades (Live Trade Stream) ```python async def main(): exchange = ccxtpro.binance() while True: trades = await exchange.watch_trades('BTC/USDT') for trade in trades: print(trade['price'], trade['amount'], trade['side']) await exchange.close() asyncio.run(main()) ``` ### Watching Your Orders (Live Order Updates) ```python async def main(): exchange = ccxtpro.binance({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET' }) while True: orders = await exchange.watch_orders('BTC/USDT') for order in orders: print(order['id'], order['status'], order['filled']) await exchange.close() asyncio.run(main()) ``` ### Watching Balance (Live Balance Updates) ```python async def main(): exchange = ccxtpro.binance({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET' }) while True: balance = await exchange.watch_balance() print('BTC:', balance['BTC']) print('USDT:', balance['USDT']) await exchange.close() asyncio.run(main()) ``` ### Watching Multiple Symbols ```python async def main(): exchange = ccxtpro.binance() symbols = ['BTC/USDT', 'ETH/USDT', 'SOL/USDT'] while True: # Watch all symbols concurrently tickers = await exchange.watch_tickers(symbols) for symbol, ticker in tickers.items(): print(symbol, ticker['last']) await exchange.close() asyncio.run(main()) ``` ## Complete Method Reference ### Market Data Methods #### Tickers & Prices - `fetchTicker(symbol)` - Fetch ticker for one symbol - `fetchTickers([symbols])` - Fetch multiple tickers at once - `fetchBidsAsks([symbols])` - Fetch best bid/ask for multiple symbols - `fetchLastPrices([symbols])` - Fetch last prices - `fetchMarkPrices([symbols])` - Fetch mark prices (derivatives) #### Order Books - `fetchOrderBook(symbol, limit)` - Fetch order book - `fetchOrderBooks([symbols])` - Fetch multiple order books - `fetchL2OrderBook(symbol)` - Fetch level 2 order book - `fetchL3OrderBook(symbol)` - Fetch level 3 order book (if supported) #### Trades - `fetchTrades(symbol, since, limit)` - Fetch public trades - `fetchMyTrades(symbol, since, limit)` - Fetch your trades (auth required) - `fetchOrderTrades(orderId, symbol)` - Fetch trades for specific order #### OHLCV (Candlesticks) - `fetchOHLCV(symbol, timeframe, since, limit)` - Fetch candlestick data - `fetchIndexOHLCV(symbol, timeframe)` - Fetch index price OHLCV - `fetchMarkOHLCV(symbol, timeframe)` - Fetch mark price OHLCV - `fetchPremiumIndexOHLCV(symbol, timeframe)` - Fetch premium index OHLCV ### Account & Balance - `fetchBalance()` - Fetch account balance (auth required) - `fetchAccounts()` - Fetch sub-accounts - `fetchLedger(code, since, limit)` - Fetch ledger history - `fetchLedgerEntry(id, code)` - Fetch specific ledger entry - `fetchTransactions(code, since, limit)` - Fetch transactions - `fetchDeposits(code, since, limit)` - Fetch deposit history - `fetchWithdrawals(code, since, limit)` - Fetch withdrawal history - `fetchDepositsWithdrawals(code, since, limit)` - Fetch both deposits and withdrawals ### Trading Methods #### Creating Orders - `createOrder(symbol, type, side, amount, price, params)` - Create order (generic) - `createLimitOrder(symbol, side, amount, price)` - Create limit order - `createMarketOrder(symbol, side, amount)` - Create market order - `createLimitBuyOrder(symbol, amount, price)` - Buy limit order - `createLimitSellOrder(symbol, amount, price)` - Sell limit order - `createMarketBuyOrder(symbol, amount)` - Buy market order - `createMarketSellOrder(symbol, amount)` - Sell market order - `createMarketBuyOrderWithCost(symbol, cost)` - Buy with specific cost - `createStopLimitOrder(symbol, side, amount, price, stopPrice)` - Stop-limit order
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기