- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
导读
本文围绕 vibe_trading_skills/ccxt/SKILL.md 展开,系统讲解 CCXT 统一加密货币交易所行情库在 ai_quant_trade 项目中的定位、核心 API 用法、交易对与时间周期规范,并结合仓库内 数据加载器框架示例 与 CCXT 实战演示代码 说明它如何作为 OKX 之外的兜底数据源融入多交易所回退链。读完本文,你将掌握用 CCXT 免 Key 获取 OHLCV、Ticker、订单簿等公开行情数据,并理解BTC-USDT与BTC/USDT两种交易对格式的自动转换规则与分页拉取机制,可直接用于自己的量化回测与实盘监控脚本。
一、CCXT Skill 是什么:一个 Skill 化的统一行情数据源
在 ai_quant_trade 的vibe_trading_skills目录下,每个子目录都是一个可供 Agent / LLM 调用的"技能包",ccxt/SKILL.md属于data-source(数据源)类别。其 frontmatter 明确给出了该 Skill 的定位:
name: ccxt:技能名,也是环境变量与回测配置中可引用的数据源标识;category:>pip install ccxt仓库配套的 ccxt_demo.py 也直接以
import ccxt为起点,并声明了"公开行情接口无需 API Key"的使用前提。三、Quick Start:三行代码取到行情
SKILL 文档给出的最小可用示例:
import ccxt exchange = ccxt.binance({"enableRateLimit": True}) # Fetch daily OHLCV ohlcv = exchange.fetch_ohlcv("BTC/USDT", "1d", limit=100) # Returns: [[timestamp, open, high, low, close, volume], ...] # Fetch ticker ticker = exchange.fetch_ticker("ETH/USDT") print(f"ETH price: {ticker['last']}")两点实战要点:
enableRateLimit: True强烈建议开启:CCXT 内置了请求频率控制,开启后库会自动为每次请求间隔留出余量,避免触发交易所限流封禁。免费公开接口同样有频率限制,仓库 电子币/ccxt/README.md 提醒"各交易所频率限制不同,建议间隔大于 1 秒"。- 返回值结构固定:
fetch_ohlcv返回[时间戳毫秒, 开盘, 最高, 最低, 收盘, 成交量]的嵌套列表;fetch_ticker返回字典,核心字段是last(最新价),还包含bid、ask、volume等。
四、核心方法速查表
SKILL 文档将最常用的五个方法整理如下,这是后续编写取数脚本的基准接口:
Method Description Returns fetch_ohlcv(symbol, timeframe, since, limit)历史 K 线 [[ts, o, h, l, c, v], ...]fetch_ticker(symbol)最新报价 {last, bid, ask, volume, ...}fetch_tickers(symbols)批量报价 {symbol: ticker}fetch_order_book(symbol, limit)订单簿 {bids, asks, timestamp}fetch_trades(symbol, since, limit)最近成交 [{price, amount, side, timestamp}, ...]仓库里的 ccxt_demo.py 对这些方法做了逐一的落地演示,可作为完整可运行的参照:
- Ticker 涨跌幅计算:
demo_ticker()通过(ticker['last'] / ticker['open'] - 1) * 100计算 24h 涨跌幅,字段baseVolume为 24h 成交量; - K 线转 DataFrame:
demo_ohlcv()将fetch_ohlcv的原始列表封装为 Pandas DataFrame,列名依次为timestamp / open / high / low / close / volume,再用pd.to_datetime(ts, unit='ms')把毫秒时间戳转成datetime索引,这是把 CCXT 数据接入回测框架的标准预处理; - 订单簿档位读取:
demo_orderbook()打印前 5 档买盘(bids)与卖盘(asks),每个档位为[价格, 数量]二元组; - 交易对清单:
demo_markets()调用load_markets()后按endswith('/USDT')过滤出全部 USDT 交易对,可用于发现可交易标的; - 多交易所比价:
demo_multi_exchange()同时实例化ccxt.binance()、ccxt.okx()、ccxt.gate(),对同一BTC/USDT取价并做差异对比,配合time.sleep(0.5)控制请求节奏。
五、时间周期(Timeframes)与交易所支持差异
SKILL 文档给出的标准周期列表:
1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d, 1w, 1M必须注意:并非所有交易所都支持全部周期。SKILL 文档给出的检查方式是直接读取
exchange.timeframes属性——它是一个{周期名: 交易所内部代码}的映射字典,运行list(exchange.timeframes.keys())即可确认当前交易所真正支持哪些周期,避免调用不存在的周期报错。仓库 电子币/ccxt/README.md 给出的是同样口径的周期清单(
1m/5m/15m/30m/1h/4h/1d/1w/1M),两者一致。六、Symbol 格式规范与自动转换
CCXT 统一使用斜杠格式的交易对:
BTC/USDT, ETH/BTC, SOL/USDT而 Vibe-Trading 体系内的其他数据源(如 OKX)使用连字符格式
BTC-USDT(参见 okx-market/SKILL.md 中instId的BTC-USDT写法)。为此,SKILL 文档明确说明:The project's DataLoader automatically converts
BTC-USDT(hyphen) toBTC/USDT(slash).即项目的数据加载层负责完成两种格式的自动归一化,使用者无需关心底层差异,只要按各自数据源的习惯传参即可。
七、交易所选择:环境变量
CCXT_EXCHANGE多交易所场景下,通过环境变量指定默认交易所:
CCXT_EXCHANGE=binance # 默认值可选交易所包括:
binance、bybit、okx、coinbase、kraken、bitget、gate。在 Agent 调用场景中,这个环境变量等价于"该次任务默认落在哪家交易所取数",不设置时回落到币安。八、内置 Loader 与回退链定位(源码佐证)
SKILL 文档提到项目内置了 CCXT DataLoader(
backtest/loaders/ccxt_loader.py,属于 Vibe-Trading 上游项目的加载器目录),并强调其角色是OKX loader 不可用时的兜底数据源。在本仓库中,这一设计通过两个地方得到印证:数据路由决策树:data-routing/SKILL.md 给出了加密市场的数据源优先级:
Crypto: okx (single exchange) > ccxt (multi-exchange)即优先用 OKX 取单交易所数据,OKX 网络不可达时切换到 CCXT 的多交易所通道。同时该文档的可用性检查一节也提示:
okx / ccxt等免费源"may have network restrictions",遇到连接超时应切换到同市场的备选源。回退链配置:data_loader_base_demo.py 中的
FALLBACK_CHAINS把crypto市场的链路定义为["ccxt", "yfinance"],与"ccxt 是加密市场主力兜底源"的定位完全一致。该文件还实现了配套的DataLoaderProtocol(统一name / markets / requires_auth / is_available() / fetch()接口)、register()注册表、retry_with_budget()带预算重试与validate_ohlc()数据校验,可参考其理解"数据源可插拔、自动降级"的整体架构。回测配置接入:strategy-generate/SKILL.md 中的
source参数枚举包含"ccxt",即回测任务的config.json可以直接指定source: "ccxt"强制走 CCXT 取数;推荐写法是source: "auto",由运行器按代码格式自动路由并在主源不可用时回退。
九、分页(Pagination):拉取长历史数据
单次
fetch_ohlcv的limit是有限的(各交易所通常为几百根 K 线),拉取长历史需要分页。CCXT 的分页机制围绕since参数展开——它是一个毫秒级时间戳,表示"从哪个时间点开始取数":since = exchange.parse8601("2024-01-01T00:00:00Z") # 起始时间转毫秒时间戳 while True: batch = exchange.fetch_ohlcv("BTC/USDT", "1d", since=since, limit=100) if not batch: break # 处理本批数据... since = batch[-1][0] + 1 # 下一批从最后一根K线的时间戳+1毫秒开始SKILL 文档说明:项目内置 loader 会自动处理分页逻辑,最多翻页 200 次,也就是说即使数据源单次返回受限,加载器也能在合理上限内自动拼出完整历史序列,使用者在多数场景下无需手写分页循环。
十、注意事项与使用限制
综合 SKILL 文档与仓库配套 README 的说明,实战中需要留意:
- 公开行情免 Key,私有接口要 Key:
fetch_ticker / fetch_ohlcv / fetch_order_book / fetch_trades / fetch_tickers / load_markets均为公开接口;下单与账户查询则必须在实例化交易所时传入 API Key。 - 地域与网络限制:部分交易所(如 Binance)在国内网络环境可能无法直连,需代理访问;出现超时应按>赞
- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
相关推荐
Vibe-Trading CCXT 技能详解:通过 CCXT 统一接口从 100+ 交易所免密钥获取加密货币行情
Vibe Trading CCXT 技能详解:通过 CCXT 统一接口从 100+ 交易所免密钥获取加密货币行情 在 Vibe Trading 中, agent
人工智能AI Agent金融科技MCP 服务CCXT:一个统一接口的加密货币交易API库
CCXT:一个统一接口的加密货币交易API库 是一款开源的JavaScript/Python/PHP库,它为开发者提供了一个统一的接口,用于与全球超过100家加
金融科技区块链后端QtScrcpy终极指南:FPS游戏行走与冲刺键位映射的技术解决方案
QtScrcpy终极指南:FPS游戏行走与冲刺键位映射的技术解决方案 在移动端FPS游戏(如《和平精英》、《使命召唤手游》)的PC端映射场景中,玩家面临一个核心
桌面应用音视频