mcpField
C
ccxt

ccxt

github.com/2025emma其他23.1k187 次安装45 周前更新
代码仓库

关于 ccxt

面向 ccxt 开发者的文档型技能,可协助解答 API 问题、实现方案、调试代码并查阅实践建议。

主要功能

  1. 01ccxt API 指引
  2. 02实现方案支持
  3. 03代码调试指引
  4. 04实践建议参考

适用场景

  1. 01了解 ccxt 订单方法
  2. 02排查交易所 API 调用
  3. 03规划 ccxt 实现方案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/2025emma/vibe-coding-cn --skill ccxt

安装后在 Claude Code 中输入/ccxt确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
cli.md
exchanges.md
faq.md
getting_started.md
index.md
manual.md
other.md
pro.md
specification.md

详细介绍

Ccxt 技能

基于官方文档生成,提供全面的 ccxt 开发协助。

何时使用此技能

在以下情况下应触发此技能:

  • 使用 ccxt
  • 询问 ccxt 的功能或 API
  • 实现 ccxt 解决方案
  • 调试 ccxt 代码
  • 学习 ccxt 最佳实践

快速参考

常见模式

模式 1: 常见问题解答

我想运行代码,但它无法正常工作,该如何修复?

如果你的问题像上面那样简短,我们不会提供帮助。我们不教编程。如果你无法阅读和理解 Manual,或者无法严格按照 CONTRIBUTING 文档中的指南报告问题,我们也不会提供帮助。请阅读 CONTRIBUTING 中关于如何报告问题的指南,并阅读 Manual。在没有仔细通读整本 Manual 之前,不要让任何人承担金钱和时间上的风险。如果你不习惯阅读大量细节,也不要冒险。此外,如果你对所用的编程语言不够自信,还有更好的地方可以学习编程基础并进行练习。搜索 python 教程、js 视频,动手尝试示例,其他人就是这样逐步提升的。想学东西,就没有捷径。

需要提供哪些信息才能获得帮助?

提问时:

先使用搜索按钮查找重复问题!

以详细模式发布你的请求和响应!

在遇到问题的代码行前添加 exchange.verbose = true,并复制粘贴屏幕上显示的内容。关于这一点,Troubleshooting 部分、README 以及之前的问题和拉取请求中的许多类似回答里都写得到处都是。不要找借口。

详细输出应包含此次交互中的请求和响应。

附上完整的错误调用堆栈!

写明你使用的编程语言及其版本号

写明 CCXT / CCXT Pro 库的版本号

写明使用的是哪个交易所

写明你尝试调用哪个方法

贴出能复现问题的代码。请提供一个完整、简短、可运行的程序,代码尽可能紧凑(5-10 行),并包含交易所实例化代码。删除所有无关部分,只保留复现问题所需的核心代码。

不要发布代码或错误的截图,请以纯文本发布输出和代码!用三个反引号括起代码和输出:GOOD。不要把反引号()和单引号(')弄混:'''BAD'''。不要把单个反引号和三个反引号弄混:BAD`

不要发布你的 apiKey 和 secret!请妥善保管(发布前将其删除)!

我调用某个方法时遇到了错误,是哪里做错了?

你没有正确报告问题。请帮助社区为你提供帮助。请阅读并按照以下步骤操作:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-submit-an-issue。再次强调,能复现问题的代码以及详细的请求和响应是必需的。仅提供错误回溯、响应、请求或代码都不够!

我调用某个方法后得到了错误的结果,可以帮忙吗?

基本上和上一个问题的回答相同。请阅读并严格遵循:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-submit-an-issue。再次强调,能复现问题的代码以及详细的请求和响应是必需的。仅提供错误回溯、响应、请求或代码都不够!

你们能为交易所 bar 实现功能 foo 吗?

可以,而且如果没人先实现,我们就会实现。提出这类问题意义不大,因为答案总是肯定的。有人问我们能否实现某项功能时,问题并不在于我们的能力,而在于实现所有积累下来的功能请求所需的时间和管理工作。此外,这是一个持续开发中的开源库。这意味着,该项目旨在由正在使用它的用户社区共同开发。你问的并不是我们能不能实现,实际上是在让我们去完成那项具体任务,而这并不是我们看待自愿协作的方式。欢迎你贡献代码、提交 PR 和 commit:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code。对于免费的开源工作,我们不会作出承诺或提供时间预估。如果你希望加快进度,欢迎通过 [email protected] 联系我们。

你们什么时候会为交易所 bar 添加功能 foo?预计要多久?我们应该什么时候能等到?

对于开源工作,我们不会作出承诺或提供时间预估。原因已在上一段中说明。

你们什么时候会添加 Issues 中请求的交易所支持?

同样,由于上述原因,我们无法承诺何时添加某个交易所。答案始终不变:只要我们能做到,就会尽快添加。

我应该等多久才能添加某项功能?我需要决定是自己实现,还是等 CCXT Dev Team 替我实现。

请你自己实现,不要等我们。我们会尽快添加。此外,我们非常欢迎你贡献代码:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

之前请求的功能 foo 目前进展如何?你们是如何实现交易所 bar 的?

这类问题通常是在浪费时间,因为回答它们往往需要花费大量时间切换上下文,而且回答这些问题所需的时间通常比直接编写代码来满足请求、实现新功能或支持新交易所还要长。这个开源项目的进展也是公开的,所以你想了解进展时,可以查看 commit 历史。

这个 PR 的状态如何?有更新吗?

如果尚未合并,就意味着 PR 中存在需要先修复的问题。如果它可以直接合并,我们就会合并,也就不会有这个问题了。PR 未能合并最常见的原因是违反了 CONTRIBUTING 中的任一指南。如果想让 PR 尽快合并,就必须严格遵循这些指南,不能跳过其中任何一行或一个词。符合指南的代码贡献几乎会立即合并(通常在几小时内)。

你能指出我的 PR 中有哪些错误,或者我需要修改什么才能将它合并到 master 分支吗?

很遗憾,我们并不总是有时间快速列出阻碍代码合并的每一个错误。相比解释应该如何修复,直接动手修复通常更简单、更快。大多数问题已经在 CONTRIBUTING 指南中说明。最重要的原则是严格遵守所有指南。

嘿!你上传的修复是 TypeScript 写的,能不能也修复 JavaScript / Python / PHP?

我们的构建系统会自动为我们生成针对各个交易所的 JavaScript、Python 和 PHP 代码,因此这些代码是从 TypeScript 转译而来的,不需要逐一单独修复所有语言。因此,只要在 TypeScript 中修复了问题,JavaScript NPM、Python pip 和 PHP Composer 中也就修复了。自动构建通常需要 15-20 分钟。新版本发布后,只需通过 npm、pip 或 composer 升级版本即可。

更多信息请见:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#multilanguage-support https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#transpiled-generated-files

如何创建带有止盈和止损的订单?

一些交易所支持通过 createOrder 创建附加了“挂单”止损和止盈子订单的订单,请参阅“附加到仓位的止损和止盈订单”。但也有一些交易所可能不支持该功能,你需要单独调用 createOrder 方法,在已开仓位上添加条件订单(例如 *触发订单 | 止损订单 | 止盈订单),请参阅 [条件订单](Manual.md#Conditional Orders)。你也可以检查 exchange.has['createOrderWithTakeProfitAndStopLoss']、exchange.has['createStopLossOrder'] 和 exchange.has['createTakeProfitOrder'],但它们不如 .features 属性准确。

如何使用成本创建现货市价买单?

要使用成本创建市价买单,首先需要检查交易所是否支持该功能(exchange.has['createMarketBuyOrderWithCost'])。如果支持,就可以使用 createMarketBuyOrderWithCost 方法。例如:order = await exchange.createMarketBuyOrderWithCost(symbol, cost)

createMarketBuyRequiresPrice 选项是什么意思?

许多交易所在下达现货市价买单时,要求使用计价货币的金额(不接受基准货币的金额)。在这种情况下,交易所的 createMarketBuyRequiresPrice 选项会设为 true。例如:如果你想用市价买单购买 BTC/USDT,就需要提供 amount = 5 USDT,而不是 0.000X。我们会通过检查来防止错误,因为用户通常会提供基准货币的金额。因此,默认情况下,如果你执行 create_order(symbol, 'market,' 'buy,' 10),且交易所启用了该选项,就会抛出错误(市价买单的 createOrder() 需要 price 参数,以计算总支出成本(amount * price);或者将 createMarketBuyOrderRequiresPrice 选项或参数设为 false……)。

如果交易所要求提供成本,而用户提供的是基准货币的金额,我们就需要额外请求一个 price 参数并将两者相乘,以得到成本。如果你了解此行为,可以直接禁用 createMarketBuyOrderRequiresPrice,并在 amount 参数中传入成本;但禁用该选项并不意味着你可以改用基准货币金额下单。如果你执行 create_order(symbol, 'market', 'buy', 0.001, 20000),ccxt 会使用所需的 price 计算成本,即计算 0.01*20000,然后将该值发送给交易所。

如果你想直接在 amount 参数中提供成本,可以设置 exchange.options['createMarketBuyOrderRequiresPrice'] = False(这表示你确认 amount 是市价买单的成本),然后执行 create_order(symbol, 'market', 'buy', 10)。

这样做主要是为了避免用户执行 create_order('SHIB/USDT', market, buy, 1000000),以为自己要买 1kk 个 SHIB,但实际上买的是价值 1kk USDT 的 SHIB。因此,默认情况下,ccxt 始终将 amount 参数视为基准货币金额。或者,如果可用,你也可以使用 createMarketBuyOrderWithCost / createMarketSellOrderWithCost 函数。

更多信息:市价买单

现货交易与掉期/永续期货交易有什么区别?

现货交易是指立即交割金融工具(如加密货币)的买入或卖出。这种交易方式很直接,涉及资产的直接交换。另一方面,掉期交易涉及衍生品合约,双方根据标的资产,在未来某个约定日期交换金融工具或现金流。掉期通常用于杠杆交易、投机或对冲,在合约到期之前不一定涉及标的资产的交换。

此外,如果你交易掉期,处理的是合约而不是基准货币(例如 BTC),因此如果你创建一个 amount = 1 的订单,BTC 数量会根据 contractSize 而变化。你可以这样检查合约大小:

await exchange.loadMarkets() symbol = 'XRP/USDT:USDT' market = exchange.market(symbol) print(market['contractSize'])

如何下达只减仓订单?

只减仓订单是一种只能减少仓位、不能增加仓位的订单。要下达只减仓订单,通常需要调用 createOrder 方法,并将 reduceOnly 参数设为 true。这样可以确保只有在订单会减少未平仓位时才会执行;如果执行订单会增加仓位,则订单会部分成交或完全不成交。

Javascript

const params = {
    'reduceOnly': true, // 如果要平仓,请设为 true;如果要开新仓,请设为 false
}
const order = await exchange.createOrder (symbol, type, side, amount, price, params)

Python

params = {
    'reduceOnly': True, # 如果要平仓,请设为 True;如果要开新仓,请设为 False
}
order = exchange.create_order (symbol, type, side, amount, price, params)

PHP

$params = {
    'reduceOnly': true, // 如果要平仓,请设为 true;如果要开新仓,请设为 false
}
$order = $exchange->create_order ($symbol, $type, $side, $amount, $price, $params);

更多信息:追踪订单

如何检查统一方法使用的端点?

要检查 CCXT 库中某个统一方法使用的端点,通常需要查看你所关注的特定交易所实现的库源代码。CCXT 中的统一方法会抽象掉其所调用的具体端点,因此无法通过库的 API 直接获取此信息。若要详细检查,可以在 GitHub 上查看 CCXT 库中该交易所对应方法的实现。

更多信息:统一 API

如何区分资金费率结构中的 previousFundingRate、fundingRate 和 nextFundingRate?

资金费率结构中可能返回三个不同的资金费率值:

previousFundingRate 指最近一次已完成的费率。

fundingRate 是即将到来的费率。该值会持续变化,直到资金费率结算时间到达,之后它就会变成 previousFundingRate。

nextFundingRate 仅在少数交易所受支持,表示即将到来的费率之后的预测资金费率。该值对应未来第二个资金费率周期的费率。

例如,假设现在是 12:30。previousFundingRate 对应 12:00 的费率,而我们可以通过查看 fundingRate 的值来了解即将到来的资金费率。在这个例子中,如果结算间隔为 4 小时,fundingRate 将在未来的 4:00 结算,而 nextFundingRate 是预计在 8:00 结算的费率。

python tutorials

模式 2: 要创建带有成本的市价买单,首先需要检查交易所是否支持此功能(exchange.has['createMarketBuyOrderWithCost'])。如果支持,就可以使用 createMarketBuyOrderWithCost` 方法。示例:

exchange.has['createMarketBuyOrderWithCost']). If it does, then you can use the

模式 3: 示例:如果要以市价买入 BTC/USDT,需要提供 amount = 5 USDT,而不是 0.000X。我们会进行检查,防止出现错误:明确要求提供价格,因为用户通常会以基础货币提供 amount。

create_order(symbol, 'market,' 'buy,' 10)

模式 4: 有关所有交易所及其支持方法的完整列表,请参考此示例:https://github.com/ccxt/ccxt/blob/master/examples/js/exchange-capabilities.js

exchange.rateLimit

模式 5: ccxt 库支持在 Python 3.5 及更高版本中使用 async/await 语法实现异步并发模式。异步 Python 版本使用纯 asyncio 和 aiohttp。在异步模式下,你可以使用相同的属性和方法,但大多数方法都带有 async 关键字。如果要使用异步模式,应链接到 ccxt.async_support 子包,如以下示例所示:

ccxt.async_support

参考文件

此技能在 references/ 中包含全面的文档:

  • cli.md - Cli 文档
  • exchanges.md - Exchanges 文档
  • faq.md - Faq 文档
  • getting_started.md - Getting Started 文档
  • manual.md - Manual 文档
  • other.md - Other 文档
  • pro.md - Pro 文档
  • specification.md - Specification 文档

需要详细信息时,使用 view 阅读特定参考文件。

使用此技能

入门指南

从 getting_started 或 tutorials 参考文件开始,了解基础概念。

特定功能

使用相应类别的参考文件(api、guides 等)获取详细信息。

代码示例

上方的快速参考部分包含从官方文档中提取的常见模式。

资源

references/

从官方来源提取并整理的文档。这些文件包含:

  • 详细说明
  • 带语言注释的代码示例
  • 指向原始文档的链接
  • 便于快速导航的目录
scripts/

在此处添加常见自动化任务的辅助脚本。

assets/

在此处添加模板、样板代码或示例项目。

备注

  • 此技能由官方文档自动生成
  • 参考文件保留了源文档的结构和示例
  • 代码示例包含语言检测,可实现更好的语法高亮
  • 快速参考模式摘自文档中的常见用法示例

更新

要使用更新后的文档刷新此技能:

  1. 使用相同配置重新运行 scraper
  2. 技能将使用最新信息重新构建

评论

支持 Markdown