CCXT 是一个加密货币交易库,主要用于对接加密货币交易所 API,支持交易、行情数据、订单管理,以及跨 150 多个交易所的加密货币交易自动化。
用途 该技能适用于以下场景:使用 CCXT 进行开发;询问 CCXT 的功能或 API;实现基于 CCXT 的解决方案;调试 CCXT 代码;学习 CCXT 最佳实践。
主要能力 资料显示 CCXT 覆盖加密货币交易所 API 对接、交易、行情数据、订单管理与交易自动化,并支持 150 多个交易所。技能本身由官方文档生成,附带参考文件,包括 cli.md(CLI 文档)、exchanges.md(交易所文档)、faq.md(FAQ 文档)、getting_started.md(入门文档)和 manual.md(手册文档)。
使用方式 资料中的常见问题部分给出了若干使用要点:
- 报告问题时应使用 verbose 模式,在出问题的代码行前添加 exchange.verbose = true,并复制屏幕输出;verbose 输出应同时包含交易所的请求和响应;还需提供完整错误调用栈、编程语言及版本号、CCXT / CCXT Pro 库版本号、交易所名称、调用的方法、可复现问题的最短完整可运行程序(5-10 行代码,包含交易所实例化代码),并以纯文本形式粘贴代码和输出,不要使用截图,不要泄露 apiKey 和 secret。
- 创建带 takeProfit 和 stopLoss 的订单:部分交易所支持在 createOrder 中附加 stopLoss 与 takeProfit 子订单;部分交易所可能不支持该功能,需要单独调用 createOrder 方法为已开仓位添加条件订单。可通过 exchange.has['createOrderWithTakeProfitAndStopLoss']、exchange.has['createStopLossOrder'] 和 exchange.has['createTakeProfitOrder'] 检查,但这些不如 .features 属性精确。
- 按成本创建现货市价买单:先检查交易所是否支持该功能(exchange.has['createMarketBuyOrderWithCost']),若支持可使用 createMarketBuyOrderWithCost 方法,例如 order = await exchange.createMarketBuyOrderWithCost(symbol, cost)。
- createMarketBuyRequiresPrice 选项:许多交易所在下现货市价买单时要求金额以计价货币表示(不接受基础货币金额),此时交易所的 createMarketBuyRequiresPrice 选项为 true。默认情况下,如果用户提供基础货币金额,create_order(symbol, 'market', 'buy', 10) 会抛出错误。若交易所要求成本而用户提供了基础金额,需要额外请求 price 参数并相乘得到成本。若已知此行为,可设置 exchange.options['createMarketBuyOrderRequiresPrice'] = False,并在 amount 参数中直接传入成本。也可使用 createMarketBuyOrderWithCost / createMarketSellOrderWithCost(如可用)。
- 现货与 swap/永续合约交易的区别:现货交易是立即交割的买卖;swap 交易涉及衍生品合约,常用于杠杆、投机或对冲,交易的是合约而非基础货币,因此 amount = 1 时对应的 BTC 数量取决于 contractSize,可通过 await exchange.loadMarkets() 后查看 market['contractSize']。
- 下 reduceOnly 订单:使用 createOrder 方法并将 reduceOnly 参数设为 true,确保订单只减少仓位而不增加。
- 查看统一方法使用的端点:统一方法抽象了具体端点细节,该信息不直接通过库 API 暴露,需查看 GitHub 上对应交易所实现的源代码。
- 资金费率结构中 previousFundingRate、fundingRate 和 nextFundingRate 的区别:previousFundingRate 是最近已完成的费率;fundingRate 是即将到来的费率,在资金时间过去前一直变化,之后变为 previousFundingRate;nextFundingRate 仅在少数交易所支持,是再下一个费率的预测值。
- 异步并发模式:CCXT 在 Python 3.5+ 中支持 async/await 语法的异步并发模式,异步 Python 版本使用纯 asyncio 与 aiohttp。异步模式下具有相同的属性和方法,但大多数方法带有 async 关键字。使用异步模式需链接 ccxt.async_support 子包。
- 交易所支持的方法完整列表可参考示例:https://github.com/ccxt/ccxt/blob/master/examples/js/exchange-capabilities.js。
适用场景 适用于需要对接多个加密货币交易所、进行行情获取、下单、订单管理或交易自动化的开发场景,也适用于学习 CCXT 用法和排查相关问题。
限制 资料中的 FAQ 明确表示:不教授编程;如果无法阅读和理解手册,或无法遵循 CONTRIBUTING 文档中的问题报告指南,将不会获得帮助;不提供免费开源工作的承诺或时间估计;不承诺添加某功能或某交易所支持的具体日期;PR 未合并通常是因为违反 CONTRIBUTING 指南;TypeScript 的修复会自动转译为 JavaScript、Python 和 PHP,无需分别修复,自动构建通常需要 15-20 分钟。资料未提供收费、价格、平台或效果等信息。