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
参数。