入门

约定

适用于所有数据族的规则。它们解释了为什么对同一端点的两次调用结果可能不同,为什么一个数字不能与另一个直接比较,以及聚合结果中缺少某个交易所意味着什么。

#交易对

共跟踪二十二种资产:二十个 USDT 本位永续合约和两种稳定币,后者仅限现货。实时列表由 /v1/symbols 提供,以其为准。

交易对资产采集的市场
BTCUSDTBitcoinspot + perpetual
ETHUSDTEthereumspot + perpetual
SOLUSDTSolanaspot + perpetual
XRPUSDTXRPspot + perpetual
DOGEUSDTDogecoinspot + perpetual
BNBUSDTBNBspot + perpetual
TRXUSDTTRONspot + perpetual
SUIUSDTSuispot + perpetual
HYPEUSDTHYPEspot + perpetual
XLMUSDTStellarspot + perpetual
XMRUSDTMonerospot + perpetual
LINKUSDTChainlinkspot + perpetual
ADAUSDTCardanospot + perpetual
LTCUSDTLitecoinspot + perpetual
UNIUSDTUniswapspot + perpetual
GRAMUSDTGram (formerly Toncoin)spot + perpetual
AVAXUSDTAvalanchespot + perpetual
HBARUSDTHederaspot + perpetual
NEARUSDTNEAR Protocolspot + perpetual
TAOUSDTBittensorspot + perpetual
USDCUSDTUSDCspot
USDTUSDCUSDTspot

symbol 为必填

适用于所有针对单一资产的接口。缺失时请求返回 422;未知或已停用时返回 400,并附可接受值列表。没有默认交易对,也没有回退:给没有指定的人返回比特币,会得到一个正确但归属错误资产的数字。

相反,全市场数据不接受任何交易对:恐惧与贪婪指数、全球市场、宏观、ETF、比特币网络、BTC 与 ETH 链上数据。期权通过 ?asset=BTC 或 ?asset=ETH 指定。

#周期

按区间的接口有七个取值:

1m5m15m30m1h4h1d

技术指标还接受第八个取值——周线,因为它们直接基于 K 线计算:

1m5m15m30m1h4h1d1w

需要记住两个例外:

  • 多空比不接受 1m:没有交易所在该周期发布全市场账户多空比。
  • 日内宏观品种不接受 30m,其中五个仅提供 1d。数据族目录会说明是哪几个。

不在列表中的值会返回 422 并列出可接受的值,绝不会悄悄回退到其他周期。

#多交易所聚合

任何响应都不会标明交易所。多交易所指标到达时已经合并:这是平台的约定,也是多个集成变成一个集成的原因。按数量性质分为三种合并规则:

性质类型说明
sumadditive成交量、持仓量、成交笔数、爆仓、订单簿深度。缺少一个交易所会让数字机械地偏低。
open-interest-weighted averagerates and prices资金费率、基差、多空比。持仓最多的交易所权重最大,这正是综合值具有代表性的原因。
volume-weighted averageaverage pricesVWAP 与基准价格。均价的自然权重就是产生它的成交量。

整个 API 中唯一的例外:/v1/spread/interexchange 会标明交易所,因为价差离开交易所就没有意义。其他地方都不存在 exchange 参数:传入会返回 422。

#已收盘 K 线与进行中的周期

六个数据族按窗口切分提供数据:成交 K 线、窗口 VWAP、CVD、聚合订单簿、交易所间价差和多空比。在这些数据中,无论你是否请求,每一行都带有 is_closed 布尔值。

取值类型说明
trueboolean该值是最终的,不可更改。它不会再变化:可以存储、累加,或与图表比较。
falseboolean该值是暂定的。连续两次调用可能对同一行返回不同的数字。

默认只提供已收盘的窗口。要查看进行中的周期,请添加 ?live=1:

curl
# The latest CLOSED hourly candle: its value will not move again.
curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/cvd?symbol=BTCUSDT&timeframe=1h"

# The candle IN PROGRESS: provisional, flagged is_closed: false.
curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/cvd?symbol=BTCUSDT&timeframe=1h&live=1"

关于 ?live=1 需要了解的

  • 它是可选的。不加时,响应与之前完全相同。
  • 仅适用于最新值接口。/history 接口按定义只提供已收盘数据;该参数在其中会被忽略。
  • 绝不会返回 null。如果进行中的周期尚未收到任何数据(市场平静),则返回最近一个已收盘的窗口。
  • 收盘时数值不会跳变。暂定值与最终值出自同一定义:周期结束时,该行会定格在其当时显示的数字上。

可达到的时效:成交、VWAP、CVD 和价差约两秒;订单簿六到十秒;多空比一分钟,因为交易所发布得不会更快。

#数据源覆盖

由于从不标明交易所,基于两个交易所计算的资金费率与基于六个交易所计算的形式相同。有两种机制可以还原这一信息:

  • venue_count,逐行给出:对应窗口的实际数量。它在不同窗口间会变化,因此不能作为全局属性。出于历史原因,资金费率中称为 exchange_count。
  • 快照中的 coverage 键,用于所有行都不变的信息:预期有多少交易所,以及缺失的影响。
coverage
{
  "coverage": {
    "oi_history": {
      "status": "available",
      "effect": "additive",
      "count_field": "venue_count",
      "venues_expected": 6
    },
    "cvd@1h": { "status": "unavailable", "reason": "pre_aggregated" }
  }
}
键类型说明
effect: additivestring缺少一个交易所会让数字机械地偏低。绝不要把这种下降当作市场事件报告:应表述为“至少 X”。
effect: weightedstring水平值仍然有效,但可能有偏差。不要与基于更多交易所计算的历史比较。
venues_expectedinteger在滚动窗口上观测到的分母,从不预先声明。它因资产和指标而异:部分资产并非处处上市,也并非所有交易所都发布爆仓数据。
status: unavailablestring该字段的覆盖情况未知:要么交易所在写入时已合并,要么这些行早于该项统计。不要据此认为它是完整的。

#时间戳与排序

  • 数据的时间戳采用 ISO 8601 格式,UTC 时区:2026-08-29T11:38:00+00:00。bucket 键表示窗口的起点,而不是终点。
  • 请求边界(since_ms 和 until_ms)以自 Unix 纪元起的毫秒数表示。负数边界,或 since_ms 大于 until_ms,会返回 422。
  • 值数组(指标的序列、CVD 的内部序列)按从旧到新排列。
  • 历史列表按从新到旧返回。最新的一行排在最前面。
  • 一天从 UTC 午夜开始:这是日内 VWAP 的重置点,也是日度序列的对齐点。