市场深度
有些交易所接受一个字典对象来将额外的参数传入fetchOrderBook ()
/ fetch_order_book ()
函数。
所有额外的参数都是交易所特定的(不统一)。如果要设置特定的参数,例如交易账本的深度,那么
你需要查阅交易所的文档。你可以使用如下代码获取指定数量的委托单或指定层级的聚合(即市场深度)。
JavaScript示例代码:
(async function test () {
const ccxt = require ('ccxt')
const exchange = new ccxt.bitfinex ()
const limit = 5
const orders = await exchange.fetchOrderBook ('BTC/USD', limit, {
// this parameter is exchange-specific, all extra params have unique names per exchange
'group': 1, // 1 = orders are grouped by price, 0 = orders are separate
})
}) ()
Python示例代码:
import ccxt
# return up to ten bidasks on each side of the order book stack
limit = 10
ccxt.cex().fetch_order_book('BTC/USD', limit)
PHP示例代码:
// instantiate the exchange by id
$exchange = '\\ccxt\\kraken';
$exchange = new $exchange ();
// up to ten orders on each side, for example
$limit = 20;
var_dump ($exchange->fetch_order_book ('BTC/USD', $limit));
委托账本聚合的层级或详情通常是数字标注的,就像L1、L2、L3...
- L1:较少的详情,用于快速获取非常基本的信息,也就是仅市场价格。看起来就像在委托账本中仅包含一个委托单。
- L2:最常用的聚合层级,委托单交易量按价格分组。如果两个委托单有相同的价格,那么他们会合并为一项,其总量 为这两个委托单的交易量的和。这个聚合层级可能适合大部分的应用目的。
- L3:最详细的层级,包含所有的订单,没有聚合。这一层级自然包含了输出中的重复内容。因此,如果两个订单 有相同的价格,它们也不会合并在一起,这两个订单的优先级则取决于交易所的撮合引擎。你不一定真的需要 L3详情来进行交易。实际上,大多数情况下你根本不需要这么详细的信息。因此有些交易所不支持这个级别的数据, 总是返回聚合后的委托账本。
如果你想获取L2委托账本,可以使用统一API中的fetchL2OrderBook(symbol, limit, params)
或 fetch_l2_order_book(symbol, limit, params)
方法。