CCXT(CryptoCurrency eXchange Trading Library)是一个开源的加密货币交易库,核心作用是用统一接口连接全球 100 多家交易所,让开发者用同一套 API 获取行情、下单、撤单、管理账户和做量化策略。
项目定位
CCXT 解决的是加密货币交易所 API 碎片化问题。Binance、OKX、Bybit、Coinbase、Kraken 等交易所各自有一套接口、参数、签名规则和错误码;CCXT 把它们封装成统一方法,开发者只需学习一套 API 即可切换交易所。
它由 Igor Kroitor 于 2016 年发起,采用 MIT 许可证,GitHub 星标超过 3.5 万,是加密量化领域最流行的开源基础设施之一。
多语言支持
CCXT 支持多种语言:
- JavaScript / TypeScript
- Python
- PHP
- C#
- Go
其中 Python 和 JavaScript 版本使用最广。
核心能力
| 能力 | 说明 |
|---|---|
| 市场数据 | 获取 ticker、订单簿、K线、成交历史 |
| 交易执行 | 创建限价单、市价单,查询和取消订单 |
| 账户管理 | 查询余额、持仓、资金划转、充值提现 |
| 标准化数据 | 将不同交易所的异构数据统一为相同结构 |
| 频率控制 | 自动处理各交易所的 API 限频 |
| 认证签名 | 自动完成 API Key 签名和私有接口调用 |
| 错误处理 | 统一封装 NetworkError、ExchangeError 等异常 |
| 协议支持 | 支持 REST 和 WebSocket |
快速上手
以 Python 为例:
pip install ccxt获取行情:
import ccxt
exchange = ccxt.binance({"enableRateLimit": True})
ticker = exchange.fetch_ticker("BTC/USDT")
print(ticker["last"])获取 K 线:
ohlcv = exchange.fetch_ohlcv("BTC/USDT", "1d", limit=100)私有交易需要先配置 API Key:
exchange = ccxt.binance({
"apiKey": "YOUR_API_KEY",
"secret": "YOUR_SECRET",
"enableRateLimit": True,
})
order = exchange.create_order(
symbol="BTC/USDT",
type="limit",
side="buy",
amount=0.001,
price=60000,
)典型应用场景
- 量化交易与策略回测
- 套利与做市系统
- 行情监控和价格报警
- 跨交易所数据分析
- 交易机器人
- 钱包、资管和账户监控工具
CCXT 本身不提供策略算法,它更像底层数据与交易执行层。
生态关联项目
CCXT 常被以下项目使用或作为底层依赖:
- Freqtrade:开源加密货币量化交易框架
- OctoBot:开源交易机器人
- TabTrader:移动端交易应用
- TokenBot:算法交易发现与复制平台
需要注意的风险
CCXT 曾在 2025 年被曝出在部分交易所代码中硬编码了 broker ID,导致用户交易产生的部分手续费返佣可能流向项目方,而非用户自身。该事件引发了对开源量化基础设施透明度的讨论。
因此,如果用于实盘交易,建议:
- 检查所用交易所实现中是否存在默认 broker/referral ID;
- 必要时 fork 修改或显式覆盖相关参数;
- 不要直接使用来路不明的封装版本;
- 实盘前先在测试网或小资金环境验证;
- 严格保护 API Key,限制权限,避免开启提现权限。
适合谁用
- 想快速接入多个交易所的量化开发者;
- 需要做跨交易所行情聚合或套利的人;
- 想搭建交易机器人、监控工具或数据管道的人;
- 研究加密市场微观结构和因子数据的分析人员。