掌握加密貨幣市場數據:Python CCXT 套件入門教學

更新於 發佈於 閱讀時間約 11 分鐘

簡介

CCXT 是一個強大的 Python 套件,專為加密貨幣交易者與開發者設計。它支援超過 100 個交易所,並提供統一的 API 接口,讓你能夠輕鬆地進行交易、獲取市場數據、管理帳戶等操作。無論你是新手還是專業交易者,CCXT 都能幫助你快速實現自動化交易策略。

安裝

在開始使用 CCXT 之前,你需要先安裝它。你可以使用 pip 來安裝:

pip install ccxt

基本使用

支援的交易所列表

CCXT 支援超過 100 個交易所,以下是一些常見的交易所列表:

print(ccxt.exchanges)

# 以下為可使用的交易所​
['ace', 'alpaca', 'ascendex', 'bequant', 'bigone', 'binance', 'binancecoinm',
'binanceus', 'binanceusdm', 'bingx', 'bit2c', 'bitbank', 'bitbns', 'bitcoincom',
'bitfinex', 'bitfinex1', 'bitflyer', 'bitget', 'bithumb', 'bitmart', 'bitmex',
'bitopro', 'bitpanda', 'bitrue', 'bitso', 'bitstamp', 'bitteam', 'bitvavo',
'bl3p', 'blockchaincom', 'blofin', 'btcalpha', 'btcbox', 'btcmarkets', 'btcturk',
'bybit', 'cex', 'coinbase', 'coinbaseadvanced', 'coinbaseexchange',
'coinbaseinternational', 'coincatch', 'coincheck', 'coinex', 'coinlist',
'coinmate', 'coinmetro', 'coinone', 'coinsph', 'coinspot', 'cryptocom',
'currencycom', 'defx', 'delta', 'deribit', 'digifinex', 'ellipx', 'exmo',
'fmfwio', 'gate', 'gateio', 'gemini', 'hashkey', 'hitbtc', 'hollaex', 'htx',
'huobi', 'huobijp', 'hyperliquid', 'idex', 'independentreserve', 'indodax',
'kraken', 'krakenfutures', 'kucoin', 'kucoinfutures', 'kuna', 'latoken', 'lbank',
'luno', 'mercado', 'mexc', 'myokx', 'ndax', 'novadax', 'oceanex', 'okcoin', 'okx',
'onetrading', 'oxfun', 'p2b', 'paradex', 'paymium', 'phemex', 'poloniex',
'poloniexfutures', 'probit', 'timex', 'tokocrypto', 'tradeogre', 'upbit',
'vertex', 'wavesexchange', 'whitebit', 'woo', 'woofipro', 'xt', 'yobit', 'zaif',
'zonda']

raw-image

初始化交易所

首先,你需要初始化一個交易所對象。以下是一個簡單的例子,展示如何初始化 Binance 交易所:

import ccxt

# 初始化 Binance 交易所(無需 API Key 和 Secret)
exchange = ccxt.binance()

獲取市場數據

你可以使用 CCXT 來獲取市場數據,例如交易對的 ticker 信息:

# 獲取 BTC/USDT 的 ticker 信息
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker)
raw-image

輸出結果將包含以下信息:

  • symbol: 交易對名稱(例如 BTC/USDT)
  • last: 最新成交價
  • high: 24 小時內最高價
  • low: 24 小時內最低價
  • volume: 24 小時內成交量

獲取交易對列表

你可以獲取交易所支援的所有交易對列表:

# 獲取所有交易對
markets = exchange.load_markets()
print(markets.keys()) # 輸出所有交易對名稱
raw-image

獲取歷史 K 線數據

如果你想進行技術分析,可以獲取歷史 K 線數據(例如 1 小時、1 天的 K 線):

# 獲取 BTC/USDT 的 1 小時 K 線數據
ohlcv = exchange.fetch_ohlcv('BTC/USDT', timeframe='1h', limit=10)
print(ohlcv)
raw-image

輸出結果將是一個列表,每個元素包含以下信息:

  • 時間戳(timestamp)
  • 開盤價(open)
  • 最高價(high)
  • 最低價(low)
  • 收盤價(close)
  • 成交量(volume)

進階功能

WebSocket 即時數據

如果你想獲取即時市場數據,可以使用 CCXT 的 WebSocket 功能。以下是一個簡單的例子:

import asyncio
import ccxt.pro as ccxtpro
import ccxt # 這是同步 API

async def watch_ticker(symbol):
exchange = ccxtpro.binance()

# 測試同步 API 確保網絡連線正常
try:
ticker = ccxt.binance().fetch_ticker(symbol)
print("初始測試 ticker:", ticker)
except ccxt.NetworkError as e:
print("網絡錯誤:", e)
return
except ccxt.ExchangeError as e:
print("交易所錯誤:", e)
return
except Exception as e:
print("其他錯誤:", e)
return

# WebSocket 監聽
try:
while True:
ticker = await exchange.watch_ticker(symbol)
print("WebSocket ticker:", ticker)
except ccxt.NetworkError as e:
print("WebSocket 網絡錯誤:", e)
except ccxt.ExchangeError as e:
print("WebSocket 交易所錯誤:", e)
except Exception as e:
print("WebSocket 其他錯誤:", e)
finally:
await exchange.close()

if __name__ == "__main__":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) # 適用於 Windows
asyncio.run(watch_ticker("BTC/USDT"))


raw-image

總結

即使不需要使用 API 下單功能,CCXT 仍然是一個強大的工具,可以幫助你輕鬆獲取加密貨幣市場數據。透過本教學,你已經學會了如何初始化交易所、獲取市場數據、獲取交易對列表、以及獲取歷史 K 線數據。

現在,你可以開始使用 CCXT 來分析市場趨勢,並為你的交易策略提供數據支持!如果你有任何問題或建議,歡迎在下方留言討論。

留言
avatar-img
留言分享你的想法!
庫庫爾坎-avatar-img
2025/04/16
請問有辦法使用CCXT抓到各家交易所的資產嗎?
小猴工程師-avatar-img
發文者
2025/04/18
https://github.com/ccxt/ccxt
Blue-avatar-img
2025/03/05
別刪這篇貼文!我要試😆
小猴工程師-avatar-img
發文者
2025/03/05
Blue 好的 感謝支持
avatar-img
小猴工程師
1會員
21內容數
小猴工程師的其他內容
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
2025/03/25
演算法是解決問題的系統性流程,廣泛應用於各領域,如廚師的食譜、音樂家的樂譜和程式設計師的程式碼。河內塔問題是經典的遞迴演算法示例,透過觀察、數學建模與遞推關係,揭示演算法設計的核心思維。掌握這些技巧有助於拆解複雜問題並找到最佳解法。如果你對演算法有興趣,歡迎留言交流!
Thumbnail
2025/03/25
演算法是解決問題的系統性流程,廣泛應用於各領域,如廚師的食譜、音樂家的樂譜和程式設計師的程式碼。河內塔問題是經典的遞迴演算法示例,透過觀察、數學建模與遞推關係,揭示演算法設計的核心思維。掌握這些技巧有助於拆解複雜問題並找到最佳解法。如果你對演算法有興趣,歡迎留言交流!
Thumbnail
2025/03/21
本文介紹 VB.NET 的 If...Else 和 Select Case 條件判斷結構,包含語法、範例及適用情境。If...Else 適合多變數與複雜邏輯,Select Case 則適用於單一變數的多值判斷,語法簡潔且效能較佳。文章並比較其效能、靈活性與可讀性,幫助選擇最佳控制結構。
Thumbnail
2025/03/21
本文介紹 VB.NET 的 If...Else 和 Select Case 條件判斷結構,包含語法、範例及適用情境。If...Else 適合多變數與複雜邏輯,Select Case 則適用於單一變數的多值判斷,語法簡潔且效能較佳。文章並比較其效能、靈活性與可讀性,幫助選擇最佳控制結構。
Thumbnail
看更多