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 异常类的体系 交易所异常 网络异常

OHLCV烛线图

这一部分特性目前还在紧张开发中。

大多数交易所都提供了获取OHLCV数据的访问端结点,但还是有一些交易所没有提供。 在ccxt中,交易所对象的has['fetchOHLCV']属性表示该交易所是否支持烛线数据序列, 如果这个布尔属性的值为true,则表明支持。

fetchOHLCV方法声明如下:

fetchOHLCV (symbol, timeframe = '1m', since = undefined, limit = undefined, params = {})

你可以调用CCXT统一API的fetchOHLCV / fetch_ohlcv方法获取指定交易对符号的OHLCV烛线图数据。

JavaScript示例代码:

let sleep = (ms) => new Promise (resolve => setTimeout (resolve, ms));
if (exchange.has.fetchOHLCV) {
    for (symbol in exchange.markets) {
        await sleep (exchange.rateLimit) // milliseconds
        console.log (await exchange.fetchOHLCV (symbol, '1m')) // one minute
    }
}

Python示例代码:

import time
if exchange.has['fetchOHLCV']:
    for symbol in exchange.markets:
        time.sleep (exchange.rateLimit / 1000) # time.sleep wants seconds
        print (symbol, exchange.fetch_ohlcv (symbol, '1d')) # one day

PHP示例代码:

if ($exchange->has['fetchOHLCV']) {
    foreach ($exchange->markets as $symbol => $market) {
        usleep ($exchange->rateLimit * 1000); // usleep wants microseconds
        var_dump ($exchange->fetch_ohlcv ($symbol, '1M')); // one month
    }
}

要获取所查询的交易所的可用时间窗,可以查看交易所对象的timeframes属性。 注意只有当交易所对象的has['fetchOHLCV']属性值为true时上述属性才有效。

你的请求能够回溯多久远的数据是有限制的。大多数交易所不会允许你查询太早时间 的详细烛线数据历史(就像1分钟和5分钟的时间窗口内的详情)。他们通常提供 一段合理时间内的烛线数据,例如任何时间窗的最近1000个烛线数据,这对于大多数 应用都是足够了。突破这一限制的办法,是你可以不停地查询(REST Polling)最新 的OHLCV数据,并存储到自己的CSV文件中或者数据库里。

注意最后的(当前)烛线数据可能是不完整的,直到开始记录下一个烛线。

和ccxt的统一api和隐含api中的其他许多方法一样,fetchOHLCV方法的最后一个参数 可以传入一个关联数组来设置额外的交易所特定的请求参数,你需要查询交易所的API 文档来了解其支持的字段和值。

since参数是一个以毫秒计量的UTC时间戳,如果未指定since参数,fetchOHLCV 方法将返回交易所默认的时间范围。有些交易所将返回从其开始以来的所有烛线,而另一些 则只会返回最近产生的烛线,这取决于交易所的默认行为。因此如果你不指定since 参数,那么返回的烛线的时间范围是交易所相关的,为了得到一致的响应结果,开发者 应当传入since参数。