名称: ccxt 描述: CCXT加密货币交易库。用于加密货币交易所API、交易、市场数据、订单管理和跨150+交易所的加密交易自动化。支持JavaScript/Python/PHP。
Ccxt技能
提供ccxt开发的全面帮助,基于官方文档生成。
何时使用此技能
此技能应在以下情况触发:
- 使用ccxt时
- 询问ccxt功能或API
- 实现ccxt解决方案
- 调试ccxt代码
- 学习ccxt最佳实践
快速参考
常见模式
模式1: 常见问题 我正在尝试运行代码,但它不工作,如何修复? 如果你的问题像上面这样简短表述,我们不会提供帮助。我们不教授编程。如果你无法阅读和理解手册,或者无法严格按照CONTRIBUTING文档中的指南报告问题,我们也不会提供帮助。请阅读CONTRIBUTING指南了解如何报告问题,并阅读手册。在没有非常仔细地阅读整个手册之前,你不应冒险使用任何人的金钱和时间。如果你不习惯阅读大量细节内容,不应冒险。此外,如果你对使用的编程语言没有信心,有更好的地方学习编程基础和实践。搜索Python教程、JS视频,玩转示例,这是其他人攀登学习曲线的方式。如果你想学习某样东西,没有捷径。
获得帮助需要什么?
提问时:
首先使用搜索按钮查找重复问题!
以详细模式发布你的请求和响应!
在遇到问题的行之前添加exchange.verbose = true,并复制粘贴你在屏幕上看到的内容。这在故障排除部分、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和提交:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code。 我们不对免费开源工作做出承诺或估计。如果你希望加快速度,请随时通过info@ccxt.trade联系我们。
你什么时候会为交易所bar添加功能foo?预计时间是多少?我们应该何时期待这个? 我们不对开源工作做出承诺或估计。这背后的原因在上段中解释。
你什么时候会添加问题中请求的交易所支持? 再次强调,由于上述原因,我们无法承诺添加此或彼交易所的日期。答案将始终保持不变:尽快。
我应该等待功能添加多久?我需要决定是自己实现还是等待CCXT开发团队为我实现。 请自己实现,不要等我们。我们会尽快添加。此外,非常欢迎你的贡献:https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
你添加之前请求的功能foo的进展如何?你如何实现交易所bar? 这种类型的问题通常是浪费时间,因为回答它通常需要太多时间进行上下文切换,而且回答这个问题通常比实际用代码满足新功能或新交易所的请求花费更多时间。这个开源项目的进展也是开放的,所以,每当你想知道它进展如何时,请查看提交历史。
这个PR的状态是什么?有更新吗? 如果它没有合并,意味着PR包含错误,应该首先修复。如果它可以按原样合并——我们会合并它,你首先就不会问这个问题。不合并PR的最常见原因是违反了任何CONTRIBUTING指南。这些指南应该字面理解,如果你想快速合并PR,不能跳过其中的任何一行或单词。不违反指南的代码贡献几乎立即合并(通常在几小时内)。
你能指出错误或我应该在我的PR中编辑什么以将其合并到主分支吗? 不幸的是,我们并不总是有时间快速列出阻止其合并的代码中的每一个错误。通常,直接去修复错误比解释应该做什么来修复它更容易、更快。它们中的大多数已经在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方法来向已开仓位添加条件订单(例如*触发订单 | 止损订单 | 止盈订单) - 查看条件订单。 你还可以通过查看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()需要价格参数来计算要花费的总成本(amount * price),或者将createMarketBuyOrderRequiresPrice选项或参数设置为false…),将抛出错误。如果交易所要求成本而用户提供了基础金额,我们需要请求一个额外的参数price并将它们相乘以获得成本。如果你了解这种行为,你可以简单地禁用createMarketBuyOrderRequiresPrice并在amount参数中传递成本,但禁用它并不意味着你可以使用基础金额而不是报价金额下订单。 如果你做create_order(symbol, ‘market’, ‘buy’, 0.001, 20000) ccxt将使用所需价格通过0.01*20000计算成本并将该值发送给交易所。 如果你想直接在amount参数中提供成本,你可以做exchange.options[‘createMarketBuyOrderRequiresPrice’] = False(你确认amount将是市价买入的成本),然后你可以做create_order(symbol, ‘market’, ‘buy’, 10) 这基本上是为了避免用户这样做:create_order(‘SHIB/USDT’, market, buy, 1000000)并认为他试图购买100万shib,但实际上他购买的是价值100万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教程
模式2: 要创建带成本的市价买入订单,首先,你需要检查交易所是否支持该功能(exchange.has[‘createMarketBuyOrderWithCost’])。如果支持,那么你可以使用createMarketBuyOrderWithCost方法。示例:
exchange.has['createMarketBuyOrderWithCost'])。如果支持,那么你可以使用
模式3: 示例:如果你想用市价买入订单购买BTC/USDT,你需要提供amount = 5 USDT而不是0.000X。我们有一个检查来防止明确要求价格的错误,因为用户通常会提供基础货币的金额。
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 - 交易所文档
- faq.md - 常见问题文档
- getting_started.md - 入门文档
- manual.md - 手册文档
- other.md - 其他文档
- pro.md - Pro文档
- specification.md - 规范文档
需要详细信息时,使用view读取特定参考文件。
使用此技能
对于初学者
从getting_started或教程参考文件开始,了解基础概念。
对于特定功能
使用适当的类别参考文件(api、指南等)获取详细信息。
对于代码示例
上面的快速参考部分包含从官方文档中提取的常见模式。
资源
references/
从官方来源提取的组织文档。这些文件包含:
- 详细解释
- 带语言注释的代码示例
- 原始文档链接
- 用于快速导航的目录
scripts/
在此处添加常见自动化任务的辅助脚本。
assets/
在此处添加模板、样板或示例项目。
备注
- 此技能从官方文档自动生成
- 参考文件保留了源文档的结构和示例
- 代码示例包括语言检测以更好地进行语法高亮
- 快速参考模式从文档中的常见用法示例中提取
更新
要使用更新的文档刷新此技能:
- 使用相同配置重新运行爬虫
- 技能将使用最新信息重建