CCXT中文开发手册

CCXT开发概述
CCXT概述 支持的交易所 实例化交易所类 设置交易所的属性
CCXT交易所模型
交易所的数据结构 交易所API访问的限流 DDoS保护异常及处理办法
CCXT市场模型
市场数据结构 数据精度和极限值 委托单数值要求和格式化方法 载入市场清单 交易符号和市场ID 符号命名的一致性 符号命名冲突的解决流程 符号命名常见问题及解答 市场缓存强制重载
CCXT API
方法与访问端结点 隐式API方法 公开/私有API 同步调用与异步调用 API方法参数与返回值 API方法命名规范 统一API 改写统一API的参数 统一API结果的分页
CCXT委托账本模型
交易委托账本 委托账本模型的结构 查询市场深度 查询市场价格
CCXT市场行情
实时行情 实时行情数据结构 查询指定交易对实时行情 查询所有交易对实时行情
CCXT烛线图数据
OHLCV烛线图 OHLCV数据结构 OHLCV数据模拟
CCXT数字货币交易
查询交易 - fetchTrade 交易身份验证 API密钥设置 查询账户余额 - fetchBalance 查询委托单 - fetchOrders 查询交易 - fetchTrades 委托单缓存 清理缓存的委托单 - purgeCachedOrders 查询指定ID的委托单 - fetchOrder 查询全部委托单 - fetchOrders 查询全部敞口委托单 - fetchOpenOrders 查询全部已完结委托单 - fetchClosedOrders 委托单数据结构 委托下单 市价委托 - createMarketSellOrder/createMarketBuyOrder 市价买入委托的特殊情况 - createMarketBuyOrderRequiresPrice 用限价单模拟市价单 限价委托 - createLimitBuyOrder/createLimitSellOrder 委托单的自定义参数 其他类型的委托单 取消委托单 - cancelOrder 委托单与交易的关系 查询个人的历史交易 - fetchMyTrade 交易的数据结构 查询指定委托单的交易 获取充值地址 - fetchDepositAddress/createDepositAddress 地址的数据结构 提现 - withdraw 链上交易数据结构 查询充值记录 - fetchDoposits 查询提现记录 - fetchWithdrawals 查询链上交易 - fetchTransactions 查询手续费 - fetchFees 查询交易所状态 - fetchStatus 预算交易费 - calculateFee 资金操作费 - currencies 查询账本 - fetchLedger 账本记录结构 修改Nonce值 - seconds/milliseconds/microseconds
CCXT错误处理
错误处理概述 - try/catch 异常类的体系 交易所异常 网络异常

货币命名的一致性

不同的交易所在术语定义方面有一些模糊之处,对于新手交易者而言 可能会产生歧义。有些交易所将市场成为交易对,而另一些交易所则 将交易符号称为产品。对于CCXT开发库而言,每个交易所都包含一个 或多个交易市场,每个交易市场有一个ID和一个符号,大多数符号都是 由基础货币和报价货币对组成。

Exchanges → Markets → Symbols → Currencies

历史上对同一个交易对曾经使用过各种各样的符号名称。有些数字货币 (例如Dash)甚至名字都改过不止一次。为了在多个交易所之间保持 一致性,ccxt库使用以下已知的符号和货币的替代名称:

  • XBT → BTC:XBT比较新,但是BTC在交易所中更常见,而且听起来更像比特币
  • BCC → BCH:比特币现金分叉通常使用两个不同的名称:BCC和BCH。BCC有点 不明确,容易和BitConnect搞混。ccxt库会正确地将BCC换成BCH(有些交易所 和聚合器会混淆这两个名字)。
  • DRK → DASH:DASH原来叫Darkcoin,然后改名为Dash
  • BCHABC → BCH:在2018年11月15日,比特币现金再次分叉,因此,现在有BCH (BCH ABC) 和BSV (BCH SV)。
  • BCHSV → BSV:这对应比台币现金的SV分叉,有些交易所称之为BSV,另一些交易所称之为BCHSV,ccxt使用前者。
  • DSH → DASH:The DSH (Dashcoin) 和DASH (Dash)不是一个东西。有些交易所不恰当地将DASH 标记为DSH,ccxt库对此进行了修正(DSH → DASH),但是只有一个交易所混淆了这两种货币, 绝大多数交易所都正确地区分了这两种货币。记住DASH/BTC和DSH/BTC不一样。
  • XRB → NANO:NANO是RaiBlocks的较新的代码,因此,CCXT统一API将在必要时 使用NANO替代较早的XRB。
  • USD → USDT:有些交易所,例如Bitfinex、HitBTC等在其列表中将其命名为USD,但是 那些市场实际上交易的是USDT。混淆来自于3个字母的限制或者是其他原因。在实际交易 的货币是USDT而非USD时,CCXT库会将USD替换为USDT。注意,有些交易所同时有 USD和USDT。例如,Kraken有一个USDT/USD交易对。

货币命名冲突的解决流程

每个交易所都使用一个关联数组用于数字货币代码的替换,可以通过exchange.commonCurrencies 属性访问这个关联数组。有时用户可能会注意到混合大小写或者包含空格的奇怪的货币符号, 之所以使用这些名称是为了解决不同交易所使用一样的符号表示不同的货币而引起的冲突:

首先,我们采集不同交易所关于有疑问的货币代码的所有可用信息。交易所通常有其上市 货币的描述清单,可能在API中,也可能在文档里、知识库里或网站的其他地方。

当我们识别出每个货币代码所表示的数字货币后,我们查看其在CoinMarketCap上的主页。

具有最大市值的货币可以保留自己的货币代码。例如,HOT通常表示Holo或Hydro Protocol。 这种情况下Holo得以继续持有其代码HOT,Hydro Protocol将以其名称作为代码,也就是Hydro Protocol。 因此,可能会有这样的交易对:HOT/USD (表示Holo) 和 Hydro Protocol/USD,这表示不同的市场。

如果一个货币的市值未知,或者不足以决定胜出者,我们也考虑交易量以及其他因素。

当决定了胜出的货币之后,所有其他竞争货币的代码都会重新进行映射,并使用exchange.commonCurrencies 来进行替换。

不幸的是这还是一个进展中的工作,因为每天都在上市新的货币,也是不是会出现 新的交易所。因此,总之这是一个在快速变化的环境中的没有尽头的自我纠错过程, 我们也感谢你能报告你发现的冲突和不匹配之处。

货币命名一致性的常见问题及解答