约定
适用于所有数据族的规则。它们解释了为什么对同一端点的两次调用结果可能不同,为什么一个数字不能与另一个直接比较,以及聚合结果中缺少某个交易所意味着什么。
#交易对
共跟踪二十二种资产:二十个 USDT 本位永续合约和两种稳定币,后者仅限现货。实时列表由 /v1/symbols 提供,以其为准。
| 交易对 | 资产 | 采集的市场 |
|---|---|---|
BTCUSDT | Bitcoin | spot + perpetual |
ETHUSDT | Ethereum | spot + perpetual |
SOLUSDT | Solana | spot + perpetual |
XRPUSDT | XRP | spot + perpetual |
DOGEUSDT | Dogecoin | spot + perpetual |
BNBUSDT | BNB | spot + perpetual |
TRXUSDT | TRON | spot + perpetual |
SUIUSDT | Sui | spot + perpetual |
HYPEUSDT | HYPE | spot + perpetual |
XLMUSDT | Stellar | spot + perpetual |
XMRUSDT | Monero | spot + perpetual |
LINKUSDT | Chainlink | spot + perpetual |
ADAUSDT | Cardano | spot + perpetual |
LTCUSDT | Litecoin | spot + perpetual |
UNIUSDT | Uniswap | spot + perpetual |
GRAMUSDT | Gram (formerly Toncoin) | spot + perpetual |
AVAXUSDT | Avalanche | spot + perpetual |
HBARUSDT | Hedera | spot + perpetual |
NEARUSDT | NEAR Protocol | spot + perpetual |
TAOUSDT | Bittensor | spot + perpetual |
USDCUSDT | USDC | spot |
USDTUSDC | USDT | spot |
symbol 为必填
适用于所有针对单一资产的接口。缺失时请求返回 422;未知或已停用时返回 400,并附可接受值列表。没有默认交易对,也没有回退:给没有指定的人返回比特币,会得到一个正确但归属错误资产的数字。
相反,全市场数据不接受任何交易对:恐惧与贪婪指数、全球市场、宏观、ETF、比特币网络、BTC 与 ETH 链上数据。期权通过 ?asset=BTC 或 ?asset=ETH 指定。
#周期
按区间的接口有七个取值:
1m5m15m30m1h4h1d
技术指标还接受第八个取值——周线,因为它们直接基于 K 线计算:
1m5m15m30m1h4h1d1w
需要记住两个例外:
- 多空比不接受
1m:没有交易所在该周期发布全市场账户多空比。 - 日内宏观品种不接受
30m,其中五个仅提供1d。数据族目录会说明是哪几个。
不在列表中的值会返回 422 并列出可接受的值,绝不会悄悄回退到其他周期。
#多交易所聚合
任何响应都不会标明交易所。多交易所指标到达时已经合并:这是平台的约定,也是多个集成变成一个集成的原因。按数量性质分为三种合并规则:
| 性质 | 类型 | 说明 |
|---|---|---|
sum | additive | 成交量、持仓量、成交笔数、爆仓、订单簿深度。缺少一个交易所会让数字机械地偏低。 |
open-interest-weighted average | rates and prices | 资金费率、基差、多空比。持仓最多的交易所权重最大,这正是综合值具有代表性的原因。 |
volume-weighted average | average prices | VWAP 与基准价格。均价的自然权重就是产生它的成交量。 |
整个 API 中唯一的例外:/v1/spread/interexchange 会标明交易所,因为价差离开交易所就没有意义。其他地方都不存在 exchange 参数:传入会返回 422。
#已收盘 K 线与进行中的周期
六个数据族按窗口切分提供数据:成交 K 线、窗口 VWAP、CVD、聚合订单簿、交易所间价差和多空比。在这些数据中,无论你是否请求,每一行都带有 is_closed 布尔值。
| 取值 | 类型 | 说明 |
|---|---|---|
true | boolean | 该值是最终的,不可更改。它不会再变化:可以存储、累加,或与图表比较。 |
false | boolean | 该值是暂定的。连续两次调用可能对同一行返回不同的数字。 |
默认只提供已收盘的窗口。要查看进行中的周期,请添加 ?live=1:
# 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": {
"oi_history": {
"status": "available",
"effect": "additive",
"count_field": "venue_count",
"venues_expected": 6
},
"cvd@1h": { "status": "unavailable", "reason": "pre_aggregated" }
}
}| 键 | 类型 | 说明 |
|---|---|---|
effect: additive | string | 缺少一个交易所会让数字机械地偏低。绝不要把这种下降当作市场事件报告:应表述为“至少 X”。 |
effect: weighted | string | 水平值仍然有效,但可能有偏差。不要与基于更多交易所计算的历史比较。 |
venues_expected | integer | 在滚动窗口上观测到的分母,从不预先声明。它因资产和指标而异:部分资产并非处处上市,也并非所有交易所都发布爆仓数据。 |
status: unavailable | string | 该字段的覆盖情况未知:要么交易所在写入时已合并,要么这些行早于该项统计。不要据此认为它是完整的。 |
#时间戳与排序
- 数据的时间戳采用 ISO 8601 格式,UTC 时区:
2026-08-29T11:38:00+00:00。bucket键表示窗口的起点,而不是终点。 - 请求边界(
since_ms和until_ms)以自 Unix 纪元起的毫秒数表示。负数边界,或since_ms大于until_ms,会返回422。 - 值数组(指标的序列、CVD 的内部序列)按从旧到新排列。
- 历史列表按从新到旧返回。最新的一行排在最前面。
- 一天从 UTC 午夜开始:这是日内 VWAP 的重置点,也是日度序列的对齐点。