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 异常类的体系 交易所异常 网络异常
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

网络异常 - NetworkError

所有网络相关的错误通常是可恢复的,网络故障、流量阻塞、服务器不可用这些 通常都是时间相关的,稍后重新请求通常就能解决问题。

DDoS保护异常 - DDoSProtection

当有以下情况之一发生时,就会抛出这个异常:

  • 当Cloudflare或Incapsula限流时
  • 当交易所限流时

除了默认的错误处理,ccxt库会使用以下关键字搜索交易所的响应内容:

  • cloudflare
  • incapsula
  • overload
  • ddos

请求超时异常 - RequestTimeout

当与交易所的连接失败或没有在指定时间内收到交易所响应的完整数据时, 就会抛出RequestTimeout异常。

因此建议采用以下方式处理这一类的异常:

  • 对于查询请求,只需要重新尝试调用即可
  • 对于cancelOrder请求,要求用户进行二次尝试。如果没有进行二次尝试 而是立即调用了fetchOrder, fetchOrders, fetchOpenOrders 或 fetchClosedOrders, 那么可能导致.orders缓存不同步。二次尝试调用cancelOrder可能返回 以下结果之一:
    • 成功完成,表示委托单已经正确地取消了
    • 抛出OrderNotFound异常,表示委托单要么已经在上次请求时取消, 要么已经在两次请求的间隔执行(完成或成交)。这是需要调用fetchOrder来 正确地更新缓存
  • 如果createOrder请求抛出RequestTimeout异常,开发者应当:
    • 使用fetchOrders, fetchOpenOrders, fetchClosedOrders检查上个请求是否成功下单 并更新orders缓存。
    • 如果委托单不是敞口状态,那么开发者需要调用fetchBalance检查账户余额 是否变化。注意fetchBlanace依靠orders缓存进行余额推理,因此只能在更新 缓存后进行调用!

交易所不可用异常 - ExchangeNotAvailable

如果在响应中检测到如下任何关键字,ccxt库会抛出ExchangeNotAvailable异常:

  • offline
  • unavailable
  • busy
  • retry
  • wait
  • maintain
  • maintenance
  • maintenancing

无效Nonce异常 - InvalidNonce

当你使用的Nonce比之前的请求中的nonce还要小的时候,ccxt就会抛出InvalidNoce异常。 在以下情况中会抛出这一类异常:

  • 你没有进行请求限流,或者发送太多请求
  • 你的API key没有刷新,可能在其他软件或脚本中使用了同样的api key
  • 在多个交易所实例中使用相同的api密钥对
  • 系统时钟没有同步。