CCXT
CCXT 上手教程
CCXT 上手建议按“装库 → 读公共行情 → 配密钥 → 沙盒试单 → 小资金实盘”推进。它本身是代码库,不是带界面的交易终端。
1. 安装
Python:
pip install ccxtJavaScript:
npm install ccxt建议配合 python-dotenv 管理密钥,不要写死在代码里。
pip install python-dotenv2. 先跑通公共行情
公共接口不需要 API Key,适合最先验证:
import ccxt
exchange = ccxt.binance({"enableRateLimit": True})
exchange.load_markets()
ticker = exchange.fetch_ticker("BTC/USDT")
print(ticker["last"])
ohlcv = exchange.fetch_ohlcv("BTC/USDT", "1h", limit=100)enableRateLimit=True 很关键,避免请求过快被交易所限流。
3. 安全配置 API Key
在交易所后台创建 API Key 时:
- 只开“读取 + 交易”权限
- 坚决不开提币权限
- 绑定 IP 白名单
- 用
.env或密钥管理服务保存,不要上传到 Git
import os
from dotenv import load_dotenv
load_dotenv()
exchange = ccxt.binance({
"apiKey": os.getenv("EXCHANGE_API_KEY"),
"secret": os.getenv("EXCHANGE_API_SECRET"),
"enableRateLimit": True,
})4. 用沙盒 / 测试网试单
开发阶段不要直接连实盘。部分交易所支持沙盒或测试网,可先验证下单、撤单、查询订单流程。
exchange.set_sandbox_mode(True)
balance = exchange.fetch_balance()
print(balance["USDT"]["free"])5. 下单与查询
order = exchange.create_limit_buy_order("BTC/USDT", 0.001, 60000)
print(order["id"])
orders = exchange.fetch_open_orders("BTC/USDT")
exchange.cancel_order(order["id"], "BTC/USDT")注意金额和价格要符合交易所精度,可用 amount_to_precision、price_to_precision 处理。
6. 从“行情”到“策略”的常见路径
- 用
fetch_ohlcv拉 K 线; - 用 pandas / numpy 计算指标;
- 先做模拟盘或 dry-run;
- 确认稳定后再小资金实盘;
- 加上日志、告警和异常恢复。
7. 必须注意的安全点
- 不要硬编码密钥:用环境变量或密钥管理服务。
- 提币权限一律关闭:API Key 泄露时能降低损失。
- CCXT 曾曝出部分交易所硬编码 broker ID 问题:实盘前建议检查所用交易所实现,必要时升级版本或显式覆盖相关参数。
- 先小资金验证:量化程序一旦有 bug,可能连续下单。
- 遵守交易所限频:不要自行高频轮询,优先用
enableRateLimit或 WebSocket。