39 个端点 · 通用 · 工具 · Alpha · 原始数据
https://api.blave.orgapi-key 与 secret-key 请求头API plan or Blave Agent plan所有加密货币的 get_alpha/get_exposure 端点共用:
period:K 棒周期,{n}min/{n}h/{n}d({n}m 会当成分钟)。文档列出的值有 5min、15min、1h、4h、8h、1d;最小周期较粗的指标会在自己的区块里说明。没带 period 或无法解析时回 403 {"error": "period is required"}(unusual_movement 与 liquidation 回 400)。start_date/end_date:YYYY-MM-DD(UTC)。end_date 默认今天;start_date 默认 end_date − 365 天。区间超过 365 天会默默截短(start_date 改成 end_date − 365 天)。格式错误的日期不会被验证,最后会回 500,所以一律送 YYYY-MM-DD。symbol:Binance 的 USDT-M 永续合约,例如 BTCUSDT;也接受 BTC、btc、BTC/USDT、BTC-USDT(只给币名时会补上 USDT)。get_symbols 端点会列出有涵盖的交易对。{"data": {"timestamp": [...], "alpha": [...], ...}}:平行数组,每根 K 棒一个元素。timestamp 是 Unix 秒(UTC),也就是 K 棒的标签。stat 对象:区块里有列出它的指标才会回。它是一个逻辑斯回归模型,用该交易对过去一年的这个指标对未来 24h 的价格变动拟合而成:
| 字段 | 类型 | 说明 |
|---|---|---|
up_prob | float | 给定最新指标值时,未来 24h 上涨的机率(0–1) |
avg_up_return | float | 过去上涨时的平均 24h 报酬(小数,0.02 = +2%) |
avg_down_return | float | 过去下跌时的平均 24h 报酬(小数,负值) |
return_ratio | float | -avg_up_return / avg_down_return |
exp_value | float | up_prob × avg_up_return + (1 − up_prob) × avg_down_return |
is_data_sufficient | bool | 交易对的历史不到一年时为 false,这时不要依赖其他字段 |
没有数据时,这个对象会退回 up_prob 0.5,其余为零。
/price | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 币名或 USDT 交易对 | BTCUSDT 或 BTC(不分大小写) |
response = requests.get(f"{BASE_URL}/price" , headers=headers, params={"symbol": "BTCUSDT"}, timeout=30)print(response.json())# {"symbol": "BTC", "price": 75838.2, "change_24h": -0.01739}一个扁平的对象。
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
symbol | string | — | 不含 USDT 的币名(例如 BTC,即使送的是 BTCUSDT) |
price | float | USDT | 最新价格 |
change_24h | float | 小数 | 24h 涨跌,以小数表示(0.025 = +2.5%) |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} | 没带 symbol |
| 404 | {"error": "symbol <SYMBOL> not found"} | 这个币没有价格 |
change_24h 通常与 price 来自同一个交易所,但两者分开缓存(各 5 秒),所以可能短暂不一致。/alpha_table 无。
response = requests.get(f"{BASE_URL}/alpha_table" , headers=headers, timeout=60)body = response.json()row = body["data"]["0G"] # one token out of the 716 keys this response carried# {"holder_concentration": {"-": 0.9267}, "holder_concentration_chg": {"15min": -0.0118, "1h": 0.0075, "24h": 0.4723, "3d": -0.1852, "30d": "", ...},# "funding_rate": {"binance": 0.005, "bybit": 0.005, "okx": 0.005, "pionex": "", ...},# "liquidation": {"15min": 0.0, "1h": -0.2665, "24h": -0.5637, "1min": "", ...},# "market_cap": {"-": 42204386.29}, "market_cap_percentile": {"-": 56.55},# "price": {"-": 0.1832}, "price_change": {"15min": -0.00215, "24h": -0.05792, ...},# "statistics": {"up_prob": 0.4277, "exp_value": -0.00478, "is_data_sufficient": false, ...}, ...}# (shape captured from a live response; `""` marks insufficient data){"data": {<TOKEN>: {...}}, "fields": [...], "note": {...}}.
data 以币名为 key(BTC、1INCH…)。每个币对应 指标名称 → {param: value}(指标没有参数时为 "-")。"" = 数据不足。除了指标之外还有:
| Key | 说明 |
|---|---|
statistics | up_prob(未来 24h 上涨的机率)、exp_value(期望报酬)、avg_up_return、avg_down_return、return_ratio、is_data_sufficient |
price | {"-": 70000}:目前价格 |
price_change | {"15min": ..., "1h": ..., "24h": ...}:涨跌 % |
market_cap | {"-": 1234567890}:美元市值 |
market_cap_percentile | {"-": 85.3}:在所有上架币种中的百分位 |
funding_rate | {"binance": -0.01, ...}:各交易所 |
oi_imbalance | {"-": 0.12}:OI 失衡(完整内容见 /oi_imbalance/get_overview_data) |
fields:每个指标一笔,含 id、name(data 里用的 key)、param(参数名称或 null)、name_en、name_zh。
note:以指标 id 为 key,内容是一串数值区间 {min, max, note: {en, zh}, direction: {en, zh}, color, background_color},用来替数值贴标签(例如 max: -3 → "Overly Bearish")。
只有共用错误。
statistics 之前一律先检查 statistics.is_data_sufficient。/kline 涵盖范围。所有代码以 USDT 结尾的 Binance USDⓈ-M 永续合约,2026 年 10 月时共 740 档,包含代币化股票、商品与其他 TradFi 的 USDT 永续合约。这 740 档的完整 1 分钟历史都存在服务器端,从 2020-01-01 或上架日开始。新上架的永续合约约在上架后 5–10 分钟可以查询。
未涵盖:以 USDC、USD1、U 或 BTC 计价的合约(例如 BTCUSDC、ETHBTC)与季度交割合约,这些会回下方的 400 unknown symbol or no data 错误。已下架的合约不保证有数据:可能回还存着的历史,也可能回同一个 400(2026 年 10 月以前下架的合约没有 1min–4min 的历史)。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | Binance USDⓈ-M USDT 永续合约。只给币名时会补上 USDT;只存在倍数前缀版本的币名会对应到那个版本(PEPE → 1000PEPEUSDT) | BTCUSDT;也接受 BTC、btc、BTC/USDT、BTC-USDT | |
periodstring · query必填 | K 棒周期。任何整数分钟的周期都接受,不限于列出的例子 | {n}min/{n}h/{n}d,最小 1min(例如 1min、3min、15min、2h、1d、7d)。{n}m 会当成分钟(15m = 15min) | |
start_datestring · query | 起始日期(含当日) | YYYY-MM-DD(UTC) | end_date − 365 天(周期 ≥ 5min);end_date − 30 天(周期 < 5min) |
end_datestring · query | 结束日期(含当日,K 棒到该 UTC 日结束为止) | YYYY-MM-DD(UTC) | 现在 |
每次请求的窗口:周期 ≥ 5min → 最多 365 天;更长的区间会默默截短(start_date 改成 end_date − 365 天,不报错)。周期 < 5min → 最多 30 天;更长的区间回 400。
params = {"symbol": "BTCUSDT", "period": "1h", "start_date": "2026-10-01", "end_date": "2026-10-02"}response = requests.get(f"{BASE_URL}/kline" , headers=headers, params=params, timeout=60)data = response.json()# [{"time": 1790812800.0, "open": 83576.8, "high": 83612.6, "low": 83370.0, "close": 83460.0, "volume": 3123.991}, ...]一个裸的 JSON 数组(没有包在 {"data": ...} 里),依时间由旧到新。
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
time | float | Unix 秒(UTC) | K 棒开盘时间 |
open / high / low / close | float | 计价币(USDT) | 价格 |
volume | float | null | 基础资产 | 成交量;来源没有该根 K 棒的成交量时为 null |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} | 没带 symbol |
| 403 | {"error": "period is required"} | 没带 period或无法解析 |
| 400 | {"error": "minimum supported period is 1min"} | period 小于一分钟 |
| 400 | {"error": "periods below 5min must be a whole number of minutes"} | e.g. 90s |
| 400 | {"error": "date range exceeds max 30 days for periods below 5min"} | 周期 < 5min 且区间 > 30 天 |
| 400 | {"error": "invalid date format, expected YYYY-MM-DD"} | start_date/end_date 格式错误 |
| 400 | {"error": "unknown symbol or no data: <symbol>"} | 交易对未涵盖(见未涵盖)或不是真实存在的合约,例如 BTCUSDC、ETHBTC、打错字。<symbol> 会原样带回你送的值。这不是暂时性错误,不要重试 |
200 与 [],不是错误。1min 回的每根 K 棒都已收盘。较长的周期在 end_date 是今天时,最后一根可能是未完成的 K 棒,它由目前已收盘的 K 棒组成(07:09 UTC 时,07:00 那根 1h K 棒只含 07:00–07:05);只要已收盘的 K 棒就把它丢掉。5min = 3 个请求;1 年的 1min = 13 个 ≤30 天的请求)。1min。1min)、300 秒(1h/4h/1d)、60 秒(其他周期);最新一根已收盘 K 棒还没进来时只有 5 秒。/market_direction/get_alpha 没有 symbol:alpha 是单一条全市场序列,不是每个币一条。内部只用 BTCUSDT 来对齐 K 棒;它不会被回传,也不影响 alpha。见加密货币指标共通规则。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
periodstring · query必填 | K 棒周期 | 1h、4h、8h、1d(最小 1h) | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"period": "1h", "start_date": "2026-09-13", "end_date": "2026-09-15"}response = requests.get(f"{BASE_URL}/market_direction/get_alpha" , headers=headers, params=params, timeout=60)# {"data": {"alpha": [-0.5195979478976323, -0.5223392571665055, -0.5612490182062327, ...],# "timestamp": [1789257600.0, 1789261200.0, 1789264800.0, ...]}} # 72 bars{"data": {"timestamp": [...], "alpha": [...]}}。没有 stat。
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 市场方向值 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "period is required"} | 没带 period 或无法解析 |
1d K 棒是 2024-12-27。/screener/get_saved_conditions 无。
response = requests.get(f"{BASE_URL}/screener/get_saved_conditions" , headers=headers, timeout=30)conditions = response.json()["data"]{"data": {<condition_id>: {...}}},以条件 id 为 key(JSON 字符串 key,例如 "12";回传时当成整数 condition_id 送)。只有这个账号自己的条件。
| 字段 | 类型 | 说明 |
|---|---|---|
filters | object[] | 条件的筛选项,全部以 AND 组合:indicator_id(int)、indicator_name({"en", "zh"})、param(字符串;"-" = 指标的默认值)、operator_id(int)、operator_symbol(字符串,例如 >)、value(门槛) |
note | string | 你储存这个条件时取的名称 |
name_en / name_zh | string | null | 只有官方/社群条件才有值;你自己的条件会是空的或 null,请改读 note |
description_en / description_zh | string | null | 只有官方/社群条件才有值;可能是空的或 null |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "unsupported api feature"} | 密钥没有绑定用户账号 |
/screener/get_saved_condition_result | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
condition_idint · query必填 | 要执行的条件 | get_saved_conditions 回的 id |
response = requests.get(f"{BASE_URL}/screener/get_saved_condition_result" , headers=headers, params={"condition_id": 12}, timeout=60){"data": {"alpha_names": [...], "symbols": [...]}}.
| 字段 | 类型 | 说明 |
|---|---|---|
alpha_names | object[] | 每个不重复的筛选指标一笔,依筛选项顺序:en/zh(显示名称,有参数时参数放在括号里)、name(指标 key)、type、url;指标有定义时再加上 value_format、value_decimals、polarity |
symbols | object[] | 符合所有筛选项的币 |
symbols[].symbol | string | 不含 USDT 的币名(例如 BTC) |
symbols[].id | int | 币的 id(未知时为 0) |
symbols[].user_selected | bool | 这个币在账号的自选清单里 |
symbols[].price | float | 最新价格,单位 USDT(与 /price 同一个来源;取不到时为 0) |
symbols[].24h_chg | float | 24h 涨跌,以小数表示(0.025 = +2.5%) |
symbols[].alphas | float[] | 这个币在每个筛选指标上的值,与 alpha_names 平行 |
symbols[].alpha_notes | object[] | 每个指标一笔:indicator_id、color、direction、note(有规则命中时再加 background_color;没有命中时 color 为 null,其余为空字符串) |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "Missing parameter: condition_id is required."} | 缺少 |
| 400 | {"error": "Invalid parameter: condition_id must be an integer."} | 不是整数 |
| 404 | {"error": "Invalid condition_id: <id> not found for user."} | 不是这个账号的条件 |
| 403 | {"error": "unsupported api feature"} | 密钥没有绑定用户账号 |
/holder_concentration/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/holder_concentration/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
*/get_symbols 端点都回同一份 Binance 的 USDT-M 交易对清单。/holder_concentration/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "start_date": "2026-09-13", "end_date": "2026-09-15"}response = requests.get(f"{BASE_URL}/holder_concentration/get_alpha" , headers=headers, params=params, timeout=60)# {"data": {"alpha": [-1.1931909718306861, -1.2035898186867282, -1.2037004015202886, ...],# "timestamp": [1789257600.0, 1789261200.0, 1789264800.0, ...],# "stat": {"up_prob": 0.509739818557561, "exp_value": -0.00051954905018229,# "avg_up_return": 0.015512131150026753, "avg_down_return": -0.017188220228787618,# "return_ratio": 0.9024861762037658, "is_data_sufficient": true}}} # 72 bars{"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 多空账户比取对数后,相对 30 天平均的 Z-score,并反转正负号;数值越高 = 筹码越集中 |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
1d K 棒;其他交易对可能较晚开始。/funding_rate/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 交易对(一律用 Binance 的写法,不论哪个交易所) | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
exchangestring · query | 要读哪个交易所的永续合约资金费率;其他值回 400 | binance, okx, bingx, bybit | binance |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "start_date": "2026-09-13", "end_date": "2026-09-15"}response = requests.get(f"{BASE_URL}/funding_rate/get_alpha" , headers=headers, params=params, timeout=60)# {"data": {"timestamp": [1789257600.0, 1789261200.0, 1789264800.0, ...],# "alpha": [0.005064, 0.006165, 0.007765, ...],# "close": [77239.5, 77285.5, 77263.9, ...],# "stat": {"up_prob": 0.5009438427095587, "exp_value": -0.0008769555139270298,# "is_data_sufficient": false, ...}}} # 72 bars{"data": {"timestamp": [...], "alpha": [...], "close": [...], "stat": {...}}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
timestamp | float[] | Unix 秒(UTC) | K 棒标签 |
alpha | float[] | 百分比 | 资金费率 × 100(0.01 = 0.01%);正值 = 多方付给空方 |
close | float[] | USDT | 永续合约收盘价 |
stat | object | — | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
| 400 | {"error": "exchange must be one of binance, okx, bingx, bybit"} | exchange 不在清单内 |
1d K 棒;其他交易对可能较晚开始,exchange=bybit 也较晚开始,请读第一个时间戳。/market_sentiment/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/market_sentiment/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/market_sentiment/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "start_date": "2025-01-01", "end_date": "2025-03-01"}response = requests.get(f"{BASE_URL}/market_sentiment/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 市场情绪值 |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
1d K 棒;其他交易对可能较晚开始。/capital_shortage/get_alpha 没有 symbol;全市场。见加密货币指标共通规则。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
periodstring · query必填 | K 棒周期,5min 与 15min 都有数据 | 5min, 15min, 1h, 4h, 8h, 1d | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"period": "1h", "start_date": "2025-01-01", "end_date": "2025-03-01"}response = requests.get(f"{BASE_URL}/capital_shortage/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 资金稀缺值 |
stat | object | 见 stat 对象(以 BTC 计算) |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "period is required"} | 缺少参数 |
1d K 棒是 2023-12-09。/sector_rotation/get_history_data 无。
response = requests.get(f"{BASE_URL}/sector_rotation/get_history_data" , headers=headers, timeout=60)# {"data": {"alpha": {"AI": {"data": [0.0, 0.04377017039444864, 0.04922749428543449, ...],# "name_en": "AI", "name_zh": "人工智能"},# "BNB Eco": {"data": [0.0, 0.008847752133756215, ...],# "name_en": "BNB Eco", "name_zh": "BNB 生態"}, ...},# "timestamp": [1757980800.0, 1758067200.0, 1758153600.0, ...]}} # 51 sectors, 366 points{"data": {"alpha": {<sector>: {"data": [...], "name_en": ..., "name_zh": ...}}, "timestamp": [...]}}。timestamp 与 alpha 并列在 data 最上层,不在各板块里面;它是所有板块序列共用的时间轴。
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC),每个点一个;观察到的回应有 366 个每日点 |
alpha.<sector>.data | float[] | 板块序列,长度与顺序同 timestamp(366);第一个元素是 0.0 |
alpha.<sector>.name_en / name_zh | string | 板块显示名称 |
只有共用错误。
0.0 开始。没有参数,而且每次重建只重算最近 365 天,所以没有更长的历史。/sector_rotation/get_overview_data 无。
data = requests.get(f"{BASE_URL}/sector_rotation/get_overview_data" , headers=headers, timeout=60).json()["data"]# {"AI": {"name_en": "AI", "name_zh": "人工智能",# "data": {"1h": {"pct_change": 0.0076}, "8h": ..., "90d": ...},# "symbols": {"0G": {"id": 38337, "data": {"1h": {"pct_change": 0.0061}, ...}}, ...}}, ...}{"data": {<sector>: {"name_en", "name_zh", "data", "symbols"}}}(约 48 个板块)。
| 字段 | 说明 |
|---|---|
data | {<timeframe>: {"pct_change": float}},涵盖 1h、8h、24h、3d、7d、30d、90d;pct_change 是小数(0.0061 = +0.61%) |
symbols | {<token>: {"id": int, "data": {<timeframe>: {"pct_change": float}}}}:各币明细 |
只有共用错误。
/oi_imbalance/get_overview_data 无。
data = requests.get(f"{BASE_URL}/oi_imbalance/get_overview_data" , headers=headers, timeout=60).json()["data"]# [{"token": "TSLA", "token_id": 39618, "token_price": 313.33, "token_chg": 0.031,# "market_cap": 40415.98, "oi_total": 59916616.78, "alpha": 1482.5}, ...]{"data": [...]},依 alpha 由大到小排序。
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
token | string | — | 币名 |
token_id | int | — | Blave 的币 id |
token_price | float | 美元 | 价格 |
token_chg | float | 小数 | 价格涨跌 |
market_cap | float | 美元 | 市值 |
oi_total | float | 美元 | Binance/OKX/BingX 三家加总的合约未平仓量 |
alpha | float | 比率 | oi_total / market_cap:数值高 = 未平仓量相对规模过于拥挤(有轧仓/波动风险) |
只有共用错误。
/alpha_table 的 oi_imbalance 只带最终的 alpha;这个端点才有完整表格。/whale_hunter/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/whale_hunter/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/whale_hunter/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
timeframestring · query | 加总资金流的滚动窗口 | 15min, 1h, 4h, 8h, 24h, 3d | 24h |
score_typestring · query | 未平仓量变化或成交量 | score_oi, score_volume | score_oi |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "timeframe": "24h", "score_type": "score_oi"}response = requests.get(f"{BASE_URL}/whale_hunter/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 依 timeframe 加总的未平仓量变化(或成交量),相对 30 天平均的 Z-score |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
| 403 | {"error": "Invalid score_type"} | 不允许的 score_type |
timeframe。试过一个清单外的值 2h,回了 200 且有数据。这只是单一次观察,不能证明任何 {n}h 都能用。除非你自己验证过要用的值,否则请用清单内的值。1d K 棒;其他交易对可能较晚开始。/taker_intensity/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/taker_intensity/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/taker_intensity/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
timeframestring · query | 滚动窗口 | 15min, 1h, 4h, 8h, 24h, 3d | 24h |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "timeframe": "24h", "start_date": "2025-01-01", "end_date": "2025-03-01"}response = requests.get(f"{BASE_URL}/taker_intensity/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | 依 timeframe 加总的(主动买 − 主动卖)成交量,相对 30 天平均的 Z-score;正值 = 净买入 |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
1d K 棒;其他交易对可能较晚开始。/unusual_movement/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/unusual_movement/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/unusual_movement/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
timeframestring · query | 衡量涨跌幅的窗口 | 15min, 1h, 4h, 8h, 24h, 3d, 7d | 24h |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "timeframe": "24h"}response = requests.get(f"{BASE_URL}/unusual_movement/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "close": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | timeframe 内的报酬,除以换算到该窗口的 365 天波动率;|alpha| 大 = 离群值 |
close | float[] | 收盘价(USDT) |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
| 500 | 服务器错误 | timeframe 不在允许的清单内 |
1d K 棒;其他交易对可能较晚开始。/squeeze_momentum/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/squeeze_momentum/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/squeeze_momentum/get_alpha 没有 period;固定为 1d。见加密货币指标共通规则。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "start_date": "2025-01-01", "end_date": "2025-03-01"}response = requests.get(f"{BASE_URL}/squeeze_momentum/get_alpha" , headers=headers, params=params, timeout=60)# {"data": {"alpha": [-0.2256, ...], "scolor": ["black", ...], "timestamp": [...], "stat": {...}}}{"data": {"timestamp": [...], "alpha": [...], "scolor": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC),每日 |
alpha | float[] | 动能值 |
scolor | string[] | black = 挤压中(布林通道在肯特纳通道之内),grey = 挤压结束 |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "symbol is required"} | 缺少参数 |
alpha 在 2020-02-09 之前都是 0.0。请求的起点早于数据起始日时会回这些补值列,它们是填充,不是信号。请丢掉开头的零,或从数据起始日开始。alpha;其他交易对可能较晚开始。/blave_top_trader/get_exposure 没有 symbol:alpha 是单一条全市场序列,不是每个币一条。内部只用 BTCUSDT 来对齐 K 棒;它不会被回传,也不影响 alpha。见加密货币指标共通规则。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
periodstring · query必填 | K 棒周期 | 1h, 4h, 8h, 1d | |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"period": "1h", "start_date": "2025-05-01", "end_date": "2025-07-01"}response = requests.get(f"{BASE_URL}/blave_top_trader/get_exposure" , headers=headers, params=params, timeout=60)# {"data": {"alpha": [34.32, 40.52, ...], "timestamp": [1747130400.0, ...]}}{"data": {"timestamp": [...], "alpha": [...]}}。没有 stat。
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | Blave 顶尖交易员(账户资产前 10%)的净曝险:每位交易员的净名目部位 ÷ 自身资产,取这些交易员的中位数,再 ×100(正值 = 净多)。这是原始比率,不是 z-score |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 403 | {"error": "period is required"} | 缺少参数 |
/liquidation/get_symbols 无。
symbols = requests.get(f"{BASE_URL}/liquidation/get_symbols" , headers=headers, timeout=30).json()["data"]{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。
只有共用错误。
/liquidation/get_alpha | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
periodstring · query必填 | K 棒周期 | 5min, 15min, 1h, 4h, 8h, 1d | |
timeframestring · query | 滚动窗口 | 15min, 1h, 4h, 8h, 24h, 3d | 24h |
start_datestring · query | 起始日 | YYYY-MM-DD | end_date − 365 天 |
end_datestring · query | 结束日期 | YYYY-MM-DD | 今天 |
params = {"symbol": "BTCUSDT", "period": "1h", "timeframe": "24h"}response = requests.get(f"{BASE_URL}/liquidation/get_alpha" , headers=headers, params=params, timeout=60){"data": {"timestamp": [...], "alpha": [...], "stat": {...}}}.
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | float[] | Unix 秒(UTC) |
alpha | float[] | (空单 − 多单爆仓量,以币计)依 timeframe 加总 ÷ 其 30 天滚动标准差;不减平均。> 0 = 空单爆仓多于多单,< 0 = 多单较多 |
stat | object | 见 stat 对象 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} / {"error": "period is required"} | 缺少参数 |
alpha 在 2023-01-01 之前都是 0.0。请求的起点早于数据起始日时会回这些补值列,它们是填充,不是信号。请丢掉开头的零,或从数据起始日开始。BTC/ETH 以外的交易对更晚才转为非零,所以要逐一检查。/liquidation/get_map | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
price_maxfloat · query | 价格轴上限 | 价格 | 服务器决定的范围 |
price_minfloat · query | 价格轴下限 | 价格 | 服务器决定的范围 |
response = requests.get(f"{BASE_URL}/liquidation/get_map" , headers=headers, params={"symbol": "BTCUSDT"}, timeout=60)# {"data": {"price": 77554.1, "labels": [54287.9, ...], "oi_value": [57693.86, ...],# "cumsum": [1543109619.0, ...], "liquidation": {"24h": {"buy_liq": [...], "sell_liq": [...]}}}}{"data": {"price", "labels", "oi_value", "cumsum", "liquidation"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
price | float | USDT | 目前价格 |
labels | float[] | USDT | 200 个价格区间 |
oi_value | float[] | 美元 | Binance 未平仓量分配到各区间的估计值(模型估计,不是真实部位) |
cumsum | float[] | 美元 | 跨区间累计的爆仓曝险 |
liquidation | object | 美元 | {"24h": {"buy_liq": [...], "sell_liq": [...]}}:各区间最近 24 小时 Binance 实际的强制平仓单,各自除以固定的 0.3(假设的 Binance 市占):buy_liq = 空单爆仓,sell_liq = 多单爆仓 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} | 缺少参数 |
/liquidation/get_map_change | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 商品代码 | e.g. BTCUSDT | |
price_maxfloat · query | 价格轴上限 | 价格 | 服务器决定的范围 |
price_minfloat · query | 价格轴下限 | 价格 | 服务器决定的范围 |
response = requests.get(f"{BASE_URL}/liquidation/get_map_change" , headers=headers, params={"symbol": "BTCUSDT"}, timeout=60)# {"data": {"price": 77554.1, "labels": [54287.9, ...], "hist_0_1h": [0.0, ...], "hist_1_8h": [...], "hist_8_24h": [...]}}{"data": {"price", "labels", "hist_0_1h", "hist_1_8h", "hist_8_24h"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
price | float | USDT | 目前价格 |
labels | float[] | USDT | 200 个价格区间(下缘) |
hist_0_1h | float[] | 美元 | 各区间最近 0–1 小时新增的估计爆仓曝险:模型地图快照之间的正向差值,不是实际爆仓 |
hist_1_8h | float[] | 美元 | 最近 1–8 小时 |
hist_8_24h | float[] | 美元 | 最近 8–24 小时 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} | 缺少参数 |
/liquidation/get_coin 单一币种在 Blave 收集的所有交易所数据源上的强制平仓:四个滚动窗口与各交易所的拆分、一条 24 点的每小时序列,以及各数据源的涵盖说明。这是真实的爆仓流量(如同 get_alpha 的输入),不是 get_map 背后的模型估计。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 币种。计价币后缀会被去掉;回应的 symbol 是正规化后的币名 | BTC、BTCUSDT、btc、BTC-USDT-SWAP、BTC_USDT(≤ 32 个字符) |
response = requests.get(f"{BASE_URL}/liquidation/get_coin" , headers=headers, params={"symbol": "BTC"}, timeout=30)data = response.json()["data"]day = data["windows"]["24"]print(data["symbol"], data["rank"], day["total_liq_usd"], day["long_pct"])peak = max(data["series"]["points"], key=lambda p: p["long_liq_usd"] + p["short_liq_usd"])# Live capture 2026-09-20 (abridged with ...; same payload the studio page serves):# {"data": {"symbol": "BTC", "rank": 1, "updated_at": "2026-09-20T17:15:00+00:00",# "windows": {"1": {"covered_hours": 1.0, "total_liq_usd": 3429619.97, "long_liq_usd": 129200.73, "short_liq_usd": 3300419.23,# "long_pct": 0.0377, "short_pct": 0.9623, "by_exchange": {...}},# "4": {...}, "12": {...},# "24": {"covered_hours": 24.0, "total_liq_usd": 58723607.89, "long_liq_usd": 38063430.51, "short_liq_usd": 20660177.37,# "long_pct": 0.6482, "short_pct": 0.3518,# "by_exchange": {"binance": {"long_liq_usd": 17075740.21, "short_liq_usd": 6697256.41, "total_liq_usd": 23772996.62}, ...}}},# "exchanges": [{"coverage": "sampled_1s", "exchange": "binance", "last_event_at": "2026-09-20T17:15:00+00:00", "listed": true, "price_basis": "trade_avg", "time_basis": "event"}, ... 6 rows],# "detail_complete": true,# "series": {"bucket_seconds": 3600, "points": [..., {"long_liq_usd": 60660.74, "short_liq_usd": 6129662.69, "ts": "2026-09-20T16:00:00+00:00"}, {"long_liq_usd": 95373.53, "short_liq_usd": 5473.13, "ts": "2026-09-20T17:00:00+00:00"}]}}}{"data": {"symbol", "rank", "updated_at", "windows", "exchanges", "detail_complete", "series"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
symbol | string | — | 正规化后的币名,例如 BTC |
rank | int / null | — | 依跨交易所 24 小时总额排序,在前 50 名币种中的名次;不在前 50 名或没有事件时为 null |
updated_at | string / null | ISO 8601(UTC) | 所用最新一个 5 分钟区段的时间 |
windows | object | — | key 是字符串 "1"、"4"、"12"、"24"(小时)。每个都是结束在最新 5 分钟区段的滚动窗口,字段如下 |
windows.<h>.total_liq_usd / long_liq_usd / short_liq_usd | float | 美元 | 跨交易所加总;long = 多单被爆仓(价格下跌),short = 空单被爆仓(价格上涨) |
windows.<h>.long_pct / short_pct | float / null | 比率 0–1 | 占窗口总额的比例;窗口总额为 0 时为 null |
windows.<h>.covered_hours | float | h | 窗口内实际有区段的小时数(收集程序刚重启后会 < h) |
windows.<h>.by_exchange | object | 美元 | {exchange: {total_liq_usd, long_liq_usd, short_liq_usd}}。窗口内没有事件的交易所没有 key;要分辨「数据源正常、这个币没动静」与「数据源不存在」,请读 exchanges[] |
exchanges[] | object[] | — | 每个数据源一列(目前六个,没有事件也会出现),依 24 小时总额由大到小排序,其次依名单顺序 |
exchanges[].exchange | string | — | binance, bybit, gate, okx, htx, bitfinex |
exchanges[].listed | bool / null | — | 该交易所是否有这个币的 USDT 本位永续合约;抓不到合约清单时为 null(Bitfinex 一律为 null) |
exchanges[].last_event_at | string / null | ISO 8601(UTC) | 该数据源最新出现的区段(任何币);从未出现过时为 null |
exchanges[].price_basis | string | — | 换算美元所用的价格:trade_avg、bankruptcy、unverified |
exchanges[].coverage | string | — | 数据源完整度:full、full_unstated、sampled_1s、aggregated_1s、sampled_undisclosed |
exchanges[].time_basis | string | — | event:依事件本身的时间戳分区段 |
detail_complete | bool | — | 这个币可能被排除在完整的逐区段明细清单之外时为 false(数据源每个 5 分钟区段只留前 100 名币种):这时 windows 可能少算。前 50 名的币几乎都是 true |
series.bucket_seconds | int | s | 一律为 3600 |
series.points | object[] | — | 一律 24 笔,由旧到新,对齐整点;最后一笔是目前这个小时到 updated_at 为止(快照每 5 分钟重建,所以可能比请求晚几分钟)。每笔为 {ts, long_liq_usd, short_liq_usd};没有事件的小时是 0,不会缺漏 |
windows["24"] 与交易所矩阵用的是同一个滚动窗口,所以同一个币在那边显示的 24 小时数字相同。series 对齐整点,所以 Σ points ≠ windows["24"] 是设计如此:总额取自 windows,时间分布取自 series。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} | 没带 symbol、空白、超过 32 个字符,或去掉计价币后缀后什么都不剩(例如 symbol=USDT) |
| 404 | {"error": "<SYMBOL> is not a collected symbol"} | 没有交易所上架这个币,最近 24 小时也没有数据源回报它;这是答案,不是暂时性错误 |
| 503 | {"error": "liquidation data unavailable"} | 上游区段没有回应,稍后重试;绝不要当成「0 笔爆仓」 |
start_date/end_date,也没有 24 小时以前的数据。要历史请用 get_alpha(正规化的多空失衡,不是美元金额)。get_alpha/get_map 需要 Binance 永续合约的写法(BTCUSDT);这里 BTC 与 BTCUSDT 是同一个币。/liquidation/get_exchanges 全市场的强制平仓,依交易所汇总,并提供 币种 × 交易所 矩阵,是 /liquidation/get_coin 的全市场版本。两者用同一个对齐 5 分钟的滚动窗口,所以同一个币的 24 小时总额在两边是同一个数字。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
hoursint · query | 窗口长度。超出范围 → 400(不会截短);非整数的值会默默退回默认值 | 1–168 | 24 |
top_nint · query | 要个别列出几个币;其余归到 others。范围/非整数的规则同 hours | 1–50 | 10 |
params = {"hours": 24, "top_n": 10}data = requests.get(f"{BASE_URL}/liquidation/get_exchanges" , headers=headers, params=params, timeout=30).json()["data"]print(data["total"]["total_liq_usd"], data["total"]["short_pct"])print([(e["exchange"], e["total_liq_usd"], e["coverage"]) for e in data["exchanges"]])# Live capture 2026-09-22 (abridged with ...; anonymous studio twin /studio/charts/liquidation/exchanges,# same inner shape — the API-key response wraps it in "data" and allows top_n up to 50):# {"exchanges": [{"exchange": "binance", "total_liq_usd": 390250999.16, "long_liq_usd": 69367041.38,# "short_liq_usd": 320883957.78, "long_pct": 0.1777, "short_pct": 0.8223, "events": 46200,# "last_event_at": "2026-09-22T05:50:00+00:00", "price_basis": "trade_avg",# "coverage": "sampled_1s", "time_basis": "event"}, ... 6 rows],# "coins": [{"token": "BTC", "token_id": 1, "total_liq_usd": 397165128.6, "long_liq_usd": 68908479.16,# "short_liq_usd": 328256649.44,# "by_exchange": {"binance": {"long_liq_usd": 17994806.07, "short_liq_usd": 173732353.71,# "total_liq_usd": 191727159.78}, ... 6 exchanges}}, ... 10 coins],# "others": {"coin_count": 835, "total_liq_usd": 82658628.27, "long_liq_usd": 34622797.57,# "short_liq_usd": 48035830.7, "by_exchange": {...}},# "total": {"total_liq_usd": 743631889.64, "long_liq_usd": 175240866.53, "short_liq_usd": 568391023.1,# "long_pct": 0.2357, "short_pct": 0.7643},# "buckets": 1846, "covered_hours": 24.0, "window_hours": 24,# "window_start": "2026-09-21T05:55:00+00:00", "window_end": "2026-09-22T05:55:00+00:00",# "updated_at": "2026-09-22T05:50:00+00:00"}{"data": {"exchanges", "coins", "others", "total", "buckets", "covered_hours", "window_hours", "window_start", "window_end", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
exchanges[] | object[] | — | 每个数据源一列,依总额由大到小排序:exchange、total_liq_usd、long_liq_usd、short_liq_usd、long_pct、short_pct、events、last_event_at。每个数据源一律列出:金额为 null = 窗口内没有收到该数据源的数据(排在最后),0.0 = 有连线但没有爆仓 |
exchanges[].price_basis / .coverage / .time_basis | string | — | 该列的可比性:trade_avg/bankruptcy/unverified;full、full_unstated、sampled_1s、aggregated_1s、sampled_undisclosed;event。转载数字时要一并保留,抽样的数据源不等于完整的数据源 |
coins[] | object[] | — | 依跨交易所总额排的前 top_n 名:token、token_id(交易对没有币 id 时为 0)、total_liq_usd、long_liq_usd、short_liq_usd、by_exchange{name: {total/long/short_liq_usd}}。by_exchange 是稀疏的,该币没有数据的数据源没有 key;当该数据源在 exchanges[] 的总额不是 null 时,把它读成 0 |
others | object | — | 被 top_n 截掉的全部,字段相同再加 coin_count,所以 coins[] + others 加回来等于各交易所的总额 |
total | object | 美元/比率 | total_liq_usd, long_liq_usd, short_liq_usd, long_pct, short_pct |
covered_hours | float | h | 窗口内实际有区段的小时数(收集程序刚重启后会 < hours) |
buckets | int | — | 汇总的 5 分钟区段数 |
window_hours / window_start / window_end | int / string | 小时/ISO 8601(UTC) | 服务器实际采用的窗口 |
updated_at | string | ISO 8601(UTC) | 所用的最新区段 |
long_liq_usd = 多单被爆仓(价格下跌);short_liq_usd = 空单被爆仓(价格上涨)。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "hours must be between 1 and 168"} / {"error": "top_n must be between 1 and 50"} | 参数超出范围 |
200,结构相同,所有金额为 null、buckets: 0,绝不会是一整张零的表。使用数字前先检查 total.total_liq_usd。/liquidation/get_coin;正规化的长历史信号用 /liquidation/get_alpha。/liquidation/get_coin 的 windows["24"] 是同一个窗口。/long_short_ratio/get_table 目前所有收集的币种 × 所有多空比来源。十个来源:Binance、OKX 与 Gate.io 各公布三种(所有账户、顶尖交易员账户、顶尖交易员部位),Bybit 只公布账户。数据列依 Binance 未平仓名目金额排序。只列出对应得到 Blave 币种清单的币;用 API 密钥拿到的是完整表格(full: true),匿名的 Studio 版本只有其 30 个币白名单的列。
无。
data = requests.get(f"{BASE_URL}/long_short_ratio/get_table" , headers=headers, timeout=30).json()["data"]keys = [s["key"] for s in data["sources"] if not s["stale"]]btc = next(c for c in data["coins"] if c["token"] == "BTC")print({k: btc[k] for k in keys if btc[k] is not None})# Live capture 2026-09-22 via the anonymous studio twin (/studio/charts/long_short_ratio/table) —# same inner shape; the API-key response wraps it in "data" and has full: true with every row.# {"coins": [{"binance_account": 0.8818, "binance_top_account": 1.0149, "binance_top_position": 2.2666,# "bybit_account": 1.0375, "gate_account": 0.7294, "gate_top_account": 0.6944,# "gate_top_position": 1.6436, "okx_account": 0.9084, "okx_top_account": 0.8655,# "okx_top_position": 1.0222, "token": "BTC", "token_id": 1}, ...],# "sources": [{"exchange": "binance", "key": "binance_account", "last_at": "2026-09-22T05:50:00+00:00",# "stale": false, "type": "account"}, ...,# {"exchange": "bybit", "key": "bybit_account", "last_at": "2026-09-22T05:50:00+00:00",# "stale": false, "type": "account"}],# "summary": {"binance_long_majority": 436, "binance_tokens": 509},# "tokens_shown": 30, "tokens_total": 611, "full": false, "updated_at": "2026-09-22T05:50:00+00:00"}开始收集的时间(第一个存下的区段,2026-09-22 以 BTC 量测)
| 来源 key | 开始收集日 |
|---|---|
binance_account | 2021-05-11 |
binance_top_account / binance_top_position | 2026-08-22 |
okx_account / okx_top_account / okx_top_position | 2025-02-18 |
gate_account / gate_top_account / gate_top_position | 2026-08-12 |
bybit_account | 2026-08-12 |
每个来源的收集时间现在都已超过这个数据集提供的 7 天,所以没有任何来源会限制查询;只有在被告知某个来源「没有历史」时,这些日期才有意义。
{"data": {"coins", "sources", "summary", "tokens_shown", "tokens_total", "full", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
coins[] | object[] | — | 每个币一列:token、token_id,加上每个来源 key 一个值 |
coins[].<source key> | float / null | 比率 | 多方账户(或部位)÷ 空方。null = 该交易所没有这个币的这种数据。多方占比 = r / (1 + r),API 不会预先算好 |
sources[] | object[] | — | 十个数据源,依字段顺序。请读这个字段,绝不要写死 key 清单 |
sources[].key | string | — | <exchange>_<type>,例如 binance_top_position,也就是 coins[] 里用的 key |
sources[].exchange / .type | string | — | binance / okx / gate / bybit; account / top_account / top_position |
sources[].last_at | string | ISO 8601(UTC) | 该数据源最新的一笔取样 |
sources[].stale | bool | — | 该数据源最新的取样已超过 1 小时(以现在为准)。最上层的 updated_at 是最新的那个来源,不代表任何单一来源的状况;判断某个来源要看它自己的 last_at/stale |
summary.binance_tokens / .binance_long_majority | int | — | 有 Binance 账户比的币数/其中高于 1 的币数。以整张表计算,不是只算回传的列 |
tokens_shown / tokens_total | int | — | 回传的列数/表格的总列数。用 API 密钥时两者相等 |
full | bool | — | 用 API 密钥时为 true;匿名的 Studio 版本为 false |
updated_at | string | ISO 8601(UTC) | 所有来源中最新的区段 |
「顶尖交易员」在每个交易所是不同的母体,不要跨交易所比较水准。
| 交易所 | 谁算顶尖交易员(官方原文) |
|---|---|
| Binance | "the top 20% users with the highest margin balance" |
| OKX | "the top 5% of traders with the largest open position value" |
| Gate.io | 从未公布,文档只列了字段名称 |
所以 binance_top_account 高于 okx_top_account,并不能说明哪个交易所的大户比较偏多。请改拿每个来源跟它自己的历史比。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 503 | {"error": "long short ratio data unavailable"} | 没有新的快照,稍后重试;绝不要当成市场是空的 |
/long_short_ratio/get_coin(7 天);这个数据集没有长历史端点。/long_short_ratio/get_coin 单一币种、全部十个来源:每个来源最新的 5 分钟值、每个来源一条 7 天的每小时序列,以及同一时间轴上的 Binance 永续合约收盘价。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 币种。计价币后缀会被去掉;回应的 symbol 是正规化后的币名 | BTC、BTCUSDT、btc(≤ 32 个字符) |
params = {"symbol": "BTC"}data = requests.get(f"{BASE_URL}/long_short_ratio/get_coin" , headers=headers, params=params, timeout=30).json()["data"]latest = data["latest"]["binance_top_position"] # null when Binance does not list the coinif latest is not None: r = latest["value"] print("top-trader long share:", round(r / (1 + r), 4))# Live capture 2026-09-22 (abridged with ...; anonymous studio twin, same inner shape):# {"latest": {"binance_account": {"ts": "2026-09-22T05:50:00+00:00", "value": 0.8818},# "binance_top_account": {"ts": "2026-09-22T05:50:00+00:00", "value": 1.0149}, ... 10 keys},# "series": {"bucket_seconds": 3600, "days": 7, "price_symbol": "BTCUSDT", "price_multiplier": 1,# "provisional_from": 1790053200,# "timestamp": [..., 1790049600, 1790053200],# "binance_account": [..., 0.8699, 0.8818], "price": [..., 85424.7, 85495.8], ... one array per source},# "sources": [{"exchange": "binance", "key": "binance_account", "last_at": "2026-09-22T05:50:00+00:00",# "listed": true, "stale": false, "type": "account"}, ... 10 rows],# "symbol": "BTC", "token_id": 1, "updated_at": "2026-09-22T05:50:00+00:00"}{"data": {"latest", "series", "sources", "symbol", "token_id", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
latest.<source key> | object / null | — | {value, ts}:该来源最新的 5 分钟取样;来源没有上架这个币时为 null |
series.bucket_seconds / .days | int | s / d | 3600 / 7 |
series.timestamp | int[] | epoch 秒 | 168 格,由旧到新,每小时一格 |
series.<source key> | float[] / null | 比率 | 每小时的最后一笔取样;该小时没有取样时为 null。来源没有上架这个币时,整个字段是单一个 null(不是数组) |
series.price | float[] / null | 美元 | 同一时间轴上的 Binance 永续合约收盘价。这个币没有 Binance 永续合约时是单一个 null(price_symbol/price_multiplier 也是 null) |
series.price_symbol / .price_multiplier | string / int | — | 价格取自哪个永续合约,以及它的合约乘数(1000PEPEUSDT → 1000;price ÷ price_multiplier = 每颗币的价格) |
series.provisional_from | int / null | epoch 秒 | 第一个还可能变动的格子(来源最晚约 10 分钟后才定案);没有任何来源有数据时为 null |
sources[] | object[] | — | 完整名单,字段同表格端点,再加 listed |
sources[].listed | bool | — | false = 该交易所没有这个币的这种数据;它的 latest 与 series 项目为 null |
symbol / token_id / updated_at | — | — | 同表格端点 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} | 没带 symbol、空白、超过 32 个字符,或去掉计价币后缀后什么都不剩 |
| 404 | {"error": "<SYMBOL> is not a collected symbol"} | 没有任何来源收集这个币;这是答案,不是暂时性错误 |
| 503 | {"error": "long short ratio data unavailable"} | 有上架的来源读取失败。null 只会代表「该交易所没有上架」 |
/long_short_ratio/get_table 关于跨交易所「顶尖交易员」的注意事项在这里同样适用。start_date/end_date。/studio/charts/...)不带密钥就能从同一支产生程序拿到相同的内容,这些范例就是从那里撷取的。它们不能取代 API 密钥端点:表格只留 30 个币(full: false),Studio 白名单以外的币会回 403 {"error_code": "ERR001", ..., "anon_whitelist": [...]} 而不是数据。这里记载的 API 密钥端点没有白名单,也不裁列。/oi_imbalance/get_table 所有收集的币种 × 五个交易所,以美元名目金额计。口径:只算 USDT 本位永续合约、美元名目金额、单边。回报双边的交易所会除以二(exchanges[].side_factor,Gate.io = 0.5)。因为每个值都已经是美元名目金额,带倍数的合约(1000PEPE 这类)跨交易所可以直接相加,不必重新换算。
无。
data = requests.get(f"{BASE_URL}/oi_imbalance/get_table" , headers=headers, timeout=30).json()["data"]crowded = sorted((c for c in data["coins"] if c["oi_mcap"] is not None), key=lambda c: -c["oi_mcap"])[:10]print(data["total"]["oi"], [(c["token"], round(c["oi_mcap"], 4)) for c in crowded])# Live capture 2026-09-22 (abridged with ...; anonymous studio twin, same inner shape):# {"coins": [{"token": "BTC", "token_id": 1, "oi_total": 18645450917.48, "chg_1h": -0.001775,# "chg_4h": -0.001046, "chg_24h": 0.128725, "market_cap": 1629947967503.241, "oi_mcap": 0.011439,# "by_exchange": {"binance": {"oi": 9417422808.02, "chg_1h": 2e-05, "chg_4h": 0.010203, "chg_24h": 0.067527},# "bingx": {"oi": 1328003926.8, ...},# "bybit": {"oi": 2569097877.96, "chg_1h": -0.008636, "chg_4h": -0.030159, "chg_24h": null},# "gate": {...}, "okx": {"oi": 2575361192.92, ..., "chg_24h": null}}}, ...],# "exchanges": [{"key": "binance", "oi": 24712717530.01, "side_factor": 1.0, "since": null, "full_7d": true,# "last_at": "2026-09-22T05:25:00+00:00", "stale": false}, ... 5 rows],# "total": {"oi": 47428938620.05, "chg_1h": -0.008919, "chg_4h": -0.010508, "chg_24h": 0.073881,# "n_exchanges": 5, "n_full_7d": 3},# "summary": {"oi_mcap_leader": "SAGA", "oi_mcap_leader_value": 1.718336},# "tokens_shown": 30, "tokens_total": 622, "full": false, "updated_at": "2026-09-22T05:30:00+00:00"}开始收集的时间(第一个存下的区段,2026-09-22 以 BTC 量测)
| 交易所 | 开始收集日 |
|---|---|
binance | 2021-12-01 |
bingx | 2025-04-15 |
gate | 2026-08-12 |
okx | 2026-09-21 |
bybit | 2026-09-21 |
n_full_7d 之所以是 5 个中的 3 个,以及 OKX 与 Bybit 的 chg_24h 在 2026-09-22 仍是 null,原因都在这两家;请读 exchanges[].since/full_7d,不要看这些会过时的日期。
{"data": {"coins", "exchanges", "total", "summary", "tokens_shown", "tokens_total", "full", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
coins[].token / .token_id | string / int | — | 币种 |
coins[].oi_total | float | 美元 | 五个交易所加总 |
coins[].chg_1h / .chg_4h / .chg_24h | float / null | 小数 | 以小数表示的变化(0.0675 = +6.75 %)。每个窗口只算在该窗口起点有基准值的交易所,分子与分母用同一组交易所;都没有时为 null |
coins[].market_cap | float / null | 美元 | 市值;没有可用的市值时为 null |
coins[].oi_mcap | float / null | 比率 | oi_total ÷ market_cap;这个币没有市值时为 null |
coins[].by_exchange | object | — | {exchange: {oi, chg_1h, chg_4h, chg_24h}},每个交易所一个 key;该交易所没有上架这个币时为 null。单一窗口为 null 代表该交易所在那么久以前没有基准值,也就是数据源比窗口还年轻 |
exchanges[] | object[] | — | binance、okx、bingx、bybit、gate:全市场的 oi、side_factor、since、full_7d、last_at、stale |
exchanges[].since / .full_7d | string / bool | 日期 | 数据源的历史不到 7 天时(full_7d: false)是它的第一天,否则为 null/true。在这张表上仅供参考(表格没有 7 天窗口);在 /oi_imbalance/get_coin 上,这种数据源没有 7 d 基准值,不会计入 series.total |
total | object | — | 全市场的 oi、chg_1h/4h/24h、n_exchanges、n_full_7d |
summary.oi_mcap_leader / _value | string / float | — | 未平仓量前 100 名的币种中,未平仓量 ÷ 市值最高的值 |
tokens_shown / tokens_total / full / updated_at | — | — | 同多空比表格 |
与 OI 失衡指标不是同一个数字。/oi_imbalance/get_overview_data(以及筛选条件与警报背后的 oi_imbalance alpha)是三个交易所的汇总:Binance + OKX + BingX。这张表则是五个交易所,口径如上。两个 oi_total 的值不同,所以在其中一个上调出来的门槛不能直接套到另一个。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 503 | {"error": "open interest data unavailable"} | 排程没有新的结果(缺少或已超过一小时),绝不会是一整张零的表 |
chg_24h: null 是年轻数据源规则造成的,不是市场数据有缺:这两家从 2026-09-21 才开始收集,所以当时还没有 24 h 的基准值。/oi_imbalance/get_coin;单一币种在单一交易所、足够回测的长历史用 /oi_imbalance/get_history。/oi_imbalance/get_coin 单一币种在各交易所的未平仓量,口径与表格相同:目前的值与占比、四个变化窗口与各自计入的交易所,以及一条 7 天的每小时总量线。
symbol,与 /long_short_ratio/get_coin 完全相同。
data = requests.get(f"{BASE_URL}/oi_imbalance/get_coin" , headers=headers, params={"symbol": "BTC"}, timeout=30).json()["data"]day = data["windows"]["24h"]print(data["oi_total"], day["chg"], "counted:", day["exchanges"])# Live capture 2026-09-22 (abridged with ...; anonymous studio twin, same inner shape):# {"exchanges": [{"key": "binance", "oi": 9454606424.48, "share": 0.5055, "chg_1h": 0.00037, "chg_4h": 0.014471,# "chg_24h": 0.064607, "chg_7d": 0.17205, "side_factor": 1.0, "listed": true, "since": null,# "full_7d": true, "last_at": "2026-09-22T05:50:00+00:00", "stale": false},# {"key": "okx", ..., "since": "2026-09-21", "full_7d": false}, ... 5 rows],# "windows": {"1h": {"chg": -0.000462, "chg_usd": -8636171.48, "exchanges": ["binance", "okx", "bingx", "bybit", "gate"]},# "4h": {...},# "24h": {"chg": 0.12231, "chg_usd": 1474912315.85, "exchanges": ["binance", "bingx", "gate"]},# "7d": {"chg": 0.212184, "chg_usd": 2368974857.56, "exchanges": ["binance", "bingx", "gate"]}},# "series": {"bucket_seconds": 3600, "days": 7, "timestamp": [1789452000, 1789455600, ...],# "total": [11171863169.89, 11167043101.84, ...], "total_exchanges": ["binance", "bingx", "gate"],# "price": [...], "price_symbol": "BTCUSDT", "price_multiplier": 1, "provisional_from": 1790053200},# "oi_total": 18704068031.08, "market_cap": 1629947967503.241, "oi_mcap": 0.011475, "oi_mcap_rank": 580,# "tokens_total": 622, "symbol": "BTC", "token_id": 1, "updated_at": "2026-09-22T05:55:00+00:00"}{"data": {"exchanges", "windows", "series", "oi_total", "market_cap", "oi_mcap", "oi_mcap_rank", "tokens_total", "symbol", "token_id", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
exchanges[] | object[] | — | 完整的五个交易所名单:key、oi(美元)、share(占 oi_total 的比例)、chg_1h/4h/24h/7d、side_factor、listed、since、full_7d、last_at、stale |
exchanges[].listed | bool | — | false = 该交易所没有上架这个币;它的值为 null |
oi_total / market_cap / oi_mcap | float | 美元/比率 | 同表格端点 |
oi_mcap_rank / tokens_total | int / null | — | 在表格排程最近一轮中依 oi_mcap 排的名次;该排程没有新的结果时为 null |
windows.<1h|4h|24h|7d>.chg / .chg_usd | float / null | 小数/美元 | 计入的交易所合计的变化 |
windows.<w>.exchanges | string[] | — | 该窗口计入了哪些交易所:年轻的数据源不会出现,所以 24 h/7 d 计入的交易所可能比 1 h 少 |
series.timestamp | int[] | epoch 秒 | 168 个每小时的格子,由旧到新 |
series.total | float[] / null | 美元 | 每格的未平仓总量,这条线只含 series.total_exchanges(也就是 full_7d 的数据源),所以水准不能与 oi_total 比较。其中任何一个交易所在该小时没有取样时,该格为 null;这个币没有任何交易所是 full_7d 时,整个字段为 null |
series.total_exchanges | string[] | — | 这条线加总了哪些交易所 |
series.price / .price_symbol / .price_multiplier / .provisional_from | — | — | 同 /long_short_ratio/get_coin |
400/404/503 与 /long_short_ratio/get_coin 完全相同,503 时回 {"error": "open interest data unavailable"}。
windows["1h"]["exchanges"] 有五笔而 windows["24h"] 只有三笔,是年轻数据源规则造成的,不是数据缺漏;比较不同窗口前请先读这个清单。/oi_imbalance/get_table 关于 OI 失衡的注意事项同样适用于这个 oi_total。/oi_imbalance/get_history(单一交易所,单位是币而不是美元,口径与 oi_total 不同)。/oi_imbalance/get_history 单一币种在单一交易所的未平仓量,是可以拿来回测的时间序列,口径与 Studio 仪表板的未平仓量卡片相同。alpha 是单边未平仓量,单位是币,不是美元。带倍数的合约会换算回币数(1000PEPE 回的是 PEPE 的颗数)。每个区段取该周期的最后一笔读数;未平仓量是存量,绝不加总。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
symbolstring · query必填 | 币种,规则同 /oi_imbalance/get_coin | BTC, BTCUSDT, btc | |
periodstring · query必填 | 区段大小。1w 回 400(不支持这个单位);1m 会当成 1min,因为小于 5min 所以回 400 | {n}min/{n}h/{n}d,最小 5min(例如 5min、1h、4h、1d) | |
start_datestring · query | 起始日期(含当日) | YYYY-MM-DD(UTC) | end_date − 365 天 |
end_datestring · query | 结束日(含当日) | YYYY-MM-DD(UTC) | 今天 |
oi_exchangestring · query | 要读哪个交易所的未平仓量 | binance、bybit、gate(不分大小写) | binance |
每次请求的窗口:最多 365 天;更长的区间会默默截短(start_date 改成 end_date − 365 天,不报错),与 /kline 相同。
params = {"symbol": "BTC", "period": "1d", "start_date": "2022-01-01", "end_date": "2022-01-03"}data = requests.get(f"{BASE_URL}/oi_imbalance/get_history" , headers=headers, params=params, timeout=120).json()["data"]# Live capture 2026-10-02:# {"data": {"alpha": [72913.725, 73310.482, 79515.424], "close": [47704.35, 47280.0, 46445.81],# "exchanges": ["binance"], "timestamp": [1640995200.0, 1641081600.0, 1641168000.0]}}params = {"symbol": "SOL", "period": "4h", "oi_exchange": "bybit", "start_date": "2026-09-30", "end_date": "2026-09-30"}# {"data": {"alpha": [3443506.2, 3344470.1, 3269534.6, 3108222.6, 3082040.9, 3042368.1],# "close": [119.08, 118.41, 119.47, 119.25, 117.17, 118.05], "exchanges": ["bybit"],# "timestamp": [1790726400.0, 1790740800.0, 1790755200.0, 1790769600.0, 1790784000.0, 1790798400.0]}}params = {"symbol": "1000PEPE", "period": "1d", "start_date": "2026-09-01", "end_date": "2026-09-02"}# alpha is PEPE coins; close is per 1000 PEPE, so USD OI = alpha × close / 1000# {"data": {"alpha": [19073240707000.0, 17615934147000.0], "close": [0.0034752, 0.0034306],# "exchanges": ["binance"], "timestamp": [1788220800.0, 1788307200.0]}}{"data": {"timestamp", "alpha", "close", "exchanges"}},平行数组,由旧到新。
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
timestamp | float[] | Unix 秒(UTC) | 区段起点 |
alpha | float[] | 币 | oi_exchange 上的单边未平仓量,取区段的最后一笔读数 |
close | float[] | USDT | Binance 的 USDT-M 永续合约价格,以合约单位计,所以 1000PEPE 是每 1000 颗币的价格 |
exchanges | string[] | — | 实际读取的交易所,例如 ["binance"] |
带倍数的合约,alpha × close 不是美元未平仓量。这时 close 是每个合约单位的价格(1000PEPE 是每 1000 颗币),而 alpha 的单位是单颗币,要先把 close 除以倍数。BTC 这类不带倍数的合约,alpha × close ≈ 美元未平仓量。
Gate.io:一律送 start_date ≥ 2026-03-28,默认窗口(end_date − 365 天)的起点早于 Gate 的历史,会回 400。
与 /oi_imbalance/get_table/get_coin 不是同一个数字(那是五个交易所加总、美元),也不是 OI 失衡指标(/oi_imbalance/get_overview_data)。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "symbol is required"} / {"error": "period is required"} | 没带(这里回 400,不是指标端点的 403) |
| 400 | {"error": "period must be at least 5min, in min / h / d units"} | period 小于 5min(包含被当成 1min 的 1m),或单位不是 min/h/d(1w) |
| 400 | {"error": "invalid date format, expected YYYY-MM-DD"} | start_date/end_date 格式错误 |
| 400 | {"error": "start_date must not be after end_date"} | start_date > end_date |
| 400 | {"error": "oi_exchange must be one of binance, bybit, gate"} | oi_exchange 不在清单内 |
| 400 | {"error": "no <exchange> open interest for <TOKEN> at start_date; this exchange's history may start later — try a later start_date"} | 窗口的起点早于该交易所的历史(见数据起始)。不带 start_date 时,oi_exchange=gate 一定会遇到这个错误,直到它的历史超过 365 天为止(≈ 2027-03);Gate 请一律送 start_date ≥ 2026-03-28 |
| 404 | {"error": "<TOKEN> is not a collected symbol on <exchange>"} | 该交易所没有上架这个币、这个币没有 Binance 永续合约,或已下架;这是答案,不是暂时性错误 |
| 503 | {"error": "<exchange> open interest data unavailable for <TOKEN>"} | 目前读不到数据,请重试 |
close 是 Binance 的 USDT-M 永续合约价格。200 加空数组代表该窗口内没有区段(例如币在那之后才上架),不要把它缓存成永久的「没有数据」。end_date 是今天时,最后一个区段在周期结束前会持续变动。/taker_intensity/get_cvd_table 各币种的主动(市价单)买进与卖出成交额,以美元计,涵盖三个交易所:Binance 取自 5 分钟 K 线的主动买入计价币成交额(卖出 = 该根 K 棒的总额减去它),OKX 取自它的美元主动成交量,Gate.io 取自主动成交张数 × 同一列的乘数与标记价格。只含永续合约,不含现货,而且是由 5 分钟 K 棒汇总,不是由逐笔成交汇总。用的是各交易所自己回报的成交额;绝不会拿成交量去乘从别的交易所借来的价格。
无。
data = requests.get(f"{BASE_URL}/taker_intensity/get_cvd_table" , headers=headers, timeout=30).json()["data"]buying = sorted((c for c in data["coins"] if c["net_24h"] is not None), key=lambda c: -c["net_24h"])[:10]print(data["total"]["net_24h"], [(c["token"], c["net_24h"]) for c in buying])# Live capture 2026-09-22 (abridged with ...; anonymous studio twin, same inner shape):# {"coins": [{"token": "BTC", "token_id": 1, "buy_24h": 24607245298.03, "sell_24h": 23128502231.73,# "net_1h": -212647361.27, "net_4h": -207128163.51, "net_24h": 1478743066.31,# "by_exchange": {"binance": {"buy_24h": 12663681424.94, "sell_24h": 12135756153.44,# "net_1h": -191133129.94, "net_4h": -217337267.5, "net_24h": 527925271.5},# "gate": {...}, "okx": {...}}}, ...],# "exchanges": [{"key": "binance", "buy_24h": 34978603608.55, "sell_24h": 35112588381.38,# "net_24h": -133984772.74, "last_at": "2026-09-22T05:25:00+00:00", "stale": false}, ... 3 rows],# "total": {"buy_24h": 63543431942.93, "sell_24h": 62491177680.21, "net_24h": 1052254262.8},# "tokens_shown": 30, "tokens_total": 591, "full": false, "updated_at": "2026-09-22T05:25:00+00:00"}开始收集的时间(第一个存下的区段,2026-09-22 以 BTC 量测)
| 交易所 | 来源字段 | 开始收集日 |
|---|---|---|
binance | 5 分钟 kline(主动买成交额) | 2020-01-01 |
gate | contract_stats | 2026-08-12 |
okx | taker_volume_usd | 2026-09-21 |
OKX 另外受限于交易所只保留 5 天的数据,所以在该日期之后一周内都是 full_7d: false。这张表不带 since/full_7d(表格没有 7 天窗口);请从 /taker_intensity/get_cvd_coin 的 exchanges[] 逐币读取,不要看这些日期。
{"data": {"coins", "exchanges", "total", "tokens_shown", "tokens_total", "full", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
coins[].token / .token_id | string / int | — | 币种 |
coins[].buy_24h / .sell_24h | float / null | 美元 | 滚动 24 h 内的主动买进/卖出成交额,加总该币所有未过期的交易所;全部过期时为 null |
coins[].net_1h / .net_4h / .net_24h | float / null | 美元 | 各滚动窗口内的 buy − sell(null 规则相同) |
coins[].by_exchange | object | — | {exchange: {buy_24h, sell_24h, net_1h, net_4h, net_24h}},每个交易所一个 key;该交易所没有上架这个币,或它在该交易所的数据已过期时为 null |
exchanges[] | object[] | — | binance、okx、gate:全市场的 buy_24h、sell_24h、net_24h、last_at、stale |
exchanges[].stale | bool | — | 该数据源的最后一根 K 棒已超过一小时:它的窗口会回 null,而且不计入总额,以免贡献一个实际涵盖时间不足却没有标示的加总 |
total | object | 美元 | 全市场的 buy_24h、sell_24h、net_24h,只算数据够新的交易所 |
tokens_shown / tokens_total / full / updated_at | — | — | 同其他原始数据表格 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 503 | {"error": "cvd data unavailable"} | 排程没有新的结果,绝不会回零 |
taker_intensity alpha(/taker_intensity/get_alpha)不同,后者是正规化、类似 z-score 的信号,有多年历史。这里是当下的原始美元成交额。net_24h 不是日历日。/taker_intensity/get_cvd_coin 单一币种在各交易所的主动买进/卖出/净额(口径与表格相同),加上 7 天的每小时净额与其累计值,也就是 CVD 线本身。
symbol,与 /long_short_ratio/get_coin 完全相同。
data = requests.get(f"{BASE_URL}/taker_intensity/get_cvd_coin" , headers=headers, params={"symbol": "BTC"}, timeout=30).json()["data"]print(data["windows"]["24h"]["net"], "line covers:", data["series"]["exchanges"], "last cvd:", data["series"]["cvd"][-1])# Live capture 2026-09-22 (abridged with ...; anonymous studio twin, same inner shape):# {"exchanges": [{"key": "binance", "listed": true, "since": null, "full_7d": true, "stale": false,# "last_at": "2026-09-22T05:50:00+00:00",# "windows": {"1h": {"buy": 334079345.8, "sell": 432484304.99, "net": -98404959.2},# "4h": {...}, "24h": {"buy": 12764594401.23, "sell": 12156150828.71, "net": 608443572.52},# "7d": {"buy": 48395824125.78, "sell": 48033568140.24, "net": 362255985.54}}},# {"key": "okx", "full_7d": false, "since": "2026-09-21", ...}, {"key": "gate", ...}],# "windows": {"1h": {"buy": 661443769.03, "sell": 760343818.66, "net": -98900049.65}, "4h": {...},# "24h": {"buy": 24795988390.84, "sell": 23206873390.07, "net": 1589115000.77},# "7d": {"buy": 69832361511.62, "sell": 68794205279.31, "net": 1038156232.31}},# "series": {"bucket_seconds": 3600, "days": 7, "timestamp": [1789452000, 1789455600, ...],# "net": [-53629060.26, -75636445.35, ...], "cvd": [0.0, -75636445.35, ...],# "exchanges": ["binance", "gate"], "price": [...], "price_symbol": "BTCUSDT",# "price_multiplier": 1, "provisional_from": 1790053200},# "symbol": "BTC", "token_id": 1, "updated_at": "2026-09-22T05:50:00+00:00"}{"data": {"exchanges", "windows", "series", "symbol", "token_id", "updated_at"}}.
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
windows.<1h|4h|24h|7d> | object | 美元 | {buy, sell, net},加总数据够新的交易所 |
exchanges[] | object[] | — | 完整名单:key、listed、windows(同样四个,每个交易所各一组)、since、full_7d、last_at、stale |
exchanges[].full_7d | bool | — | false = 这个币在该交易所的历史不到 7 天:它的 7 d 窗口为 null,而且不计入 7 d 总额,也不计入序列。OKX 只保留 5 天,所以在数据源开始后一周内都是 false |
series.timestamp | int[] | epoch 秒 | 168 个每小时的格子,由旧到新 |
series.net | float[] | 美元 | 每个整点小时的主动净流量,加总 series.exchanges;该小时没有数据时为 null。series.exchanges 是空的时候,每格都是 null,cvd 会持平在 0,这时这条线不带任何资讯 |
series.cvd | float[] | 美元 | net 的累计值;cvd[0] = 0,这条线看的是形状,不是绝对水准 |
series.exchanges | string[] | — | 这条线加总了哪些交易所 |
series.price / .price_symbol / .price_multiplier / .provisional_from | — | — | 同 /long_short_ratio/get_coin |
400/404/503 与 /long_short_ratio/get_coin 完全相同,503 时回 {"error": "cvd data unavailable"}。
series.exchanges 比 exchanges[] 短是 full_7d 规则造成的;请拿序列跟它自己比,不要跟 windows["24h"] 比,后者计入的交易所比较多。cvd[0] = 0 是定义如此:只有斜率与转折点带有资讯。/cme_cot/get_latest 四个 CME 加密货币期货各自最新一周的 CFTC 数据列,加上每种资产把标准合约与微型合约以币数加总的结果。结构同 /cme_cot/get_history 的一列,但没有 price。
无。
data = requests.get(f"{BASE_URL}/cme_cot/get_latest" , headers=headers, timeout=60).json()["data"]btc = next(c for c in data["contracts"] if c["key"] == "btc")# Live capture 2026-10-07 (abridged):# {"key": "btc", "name": "Bitcoin Futures (CME)", "cftc_code": "133741", "coin": "BTC", "coin_per_contract": 5,# "latest": {"date": "2026-09-29", "open_interest": 19596, "open_interest_change": -2719,# "tff": {"leveraged_funds": {"long": 4980, "short": 11836, "spread": 538, "net": -6856,# "long_change": 235, "short_change": -862, "spread_change": -2187, "net_change": 1097},# "asset_manager": {"long": 5069, "short": 1483, "spread": 297, "net": 3586, ...}, ...},# "legacy": {"non_commercial": {...}, "commercial": {...}, "nonreportable": {...}}}}# data["source_updated"] == "Fri, 02 Oct 2026 19:30:08 GMT", data["stale"] == False{"data": {"contracts": [...], "combined": [...], "report", "units", "source", "source_updated", "fetched_at", "stale"}}
| 字段 | 说明 |
|---|---|
contracts[] | 每个合约一笔:key(btc、micro_btc、eth、micro_eth)、name、cftc_code、coin、coin_per_contract(5/0.1/50/0.1)、latest(一列数据,见 get_history;合约没有数据列时为 null) |
combined[] | btc_combined、eth_combined:name、coin、components、units、micro_since、note、latest(合并后的一列,单位是币) |
report | futures_only |
units | contracts[].latest 部位的单位:口数(× coin_per_contract 换算成币数) |
source | CFTC 的数据来源标示,公布任何数字时都要一并显示 |
source_updated | CFTC 最后一次更新数据集的时间 |
fetched_at | Blave 抓取的时间(UTC) |
stale | true = 连不上 CFTC,回的是最后一份已存的数据 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 503 | {"error": "CFTC data unavailable. Please retry shortly."} | 连不上 CFTC,也没有已存的数据 |
/cme_cot/get_history。/cme_cot/get_history 单一合约依交易人类别区分的每周部位。数据列的日期是报告日,也就是部位的基准日,通常是周二(周二是美国假日时为周一)。数据是之后才公开的:通常是该周周五美东时间 15:30;周三到周五遇到联邦假日时,公布日顺延到下一个营业日,政府停摆则会延后数周(2018-12-24 … 2019-02-26 的报告在 2019-02-01 … 03-05 才出来;2025-09-30 … 2026-01-20 的报告在 2025-11-19 … 2026-01-23 才出来,见 CFTC Releases 7864-19 与 9138-25)。回测不得在数据列公布之前就使用它。
| 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
contractstring · query | 单一合约的单位是口数;*_combined = 标准合约 + 微型合约,以币数加总 | btc、micro_btc、eth、micro_eth、btc_combined、eth_combined(不分大小写) | btc |
start_datestring · query | 起始报告日(含当日)。不带 = 只回最近一年;要完整历史请带一个够早的日期(例如 2018-01-01) | YYYY-MM-DD | 今天(UTC)− 365 天 |
end_datestring · query | 结束报告日(含当日) | YYYY-MM-DD | 最新 |
data = requests.get(f"{BASE_URL}/cme_cot/get_history" , headers=headers, params={"contract": "btc_combined", "start_date": "2026-09-01"}, timeout=60).json()["data"]lev_net = {r["date"]: r["tff"]["leveraged_funds"]["net"] for r in data["rows"]} # BTC# Live capture 2026-10-07 (abridged): 5 rows 2026-09-01 … 2026-09-29# {"contract": {"key": "btc_combined", "name": "Bitcoin + Micro Bitcoin Futures (CME), in BTC", "coin": "BTC",# "components": ["btc", "micro_btc"], "micro_since": "2021-05-04", "units": "coins (...)", "note": "..."},# "rows": [..., {"date": "2026-09-29", "included": ["btc", "micro_btc"], "price": 83663.66,# "open_interest": 100612.0, "open_interest_change": -14522.7,# "tff": {"leveraged_funds": {"long": 25889.6, "short": 61305.6, "spread": 2742.4, "net": -35416.0,# "long_change": 680.4, "short_change": -4283.9,# "spread_change": -11214.8, "net_change": 4964.3},# "asset_manager": {"long": 25570.8, "short": 7421.7, "net": 18149.1, ...},# "dealer": {"net": 13483.9, ...}, "other_reportables": {...}, "nonreportable": {...}},# "legacy": {"non_commercial": {"net": 11754.9, ...}, "commercial": {"net": -13695.5, ...},# "nonreportable": {...}}}],# "price_source": "Binance spot BTCUSDT, UTC daily close on the report date (Tuesday)",# "report": "futures_only", "source": "Source: U.S. Commodity Futures Trading Commission (CFTC), ...",# "source_updated": "Fri, 02 Oct 2026 19:30:08 GMT", "fetched_at": "2026-10-07T09:16:35Z", "stale": false}{"data": {"contract": {...}, "rows": [...], "price_source", "report", "units", "source", "source_updated", "fetched_at", "stale"}},数据列由旧到新。
contract:key、name、coin,以及 cftc_code + coin_per_contract(单一合约)或 components + micro_since + note(合并合约)。
每一列:
| 字段 | 类型 | 说明 |
|---|---|---|
date | string | 报告日,通常是周二,周二是美国假日时为周一 |
open_interest / open_interest_change | number | 未平仓总量与其周变化 |
tff | object | 分组:dealer、asset_manager、leveraged_funds、other_reportables、nonreportable |
legacy | object | null | 分组:non_commercial、commercial、nonreportable;CFTC 该周没有 Legacy 数据列时为 null |
price | float | null | 报告日当天 Binance 现货 BTCUSDT/ETHUSDT 的 UTC 日收盘价;取不到时为 null |
included | string[] | 只有合并合约才有:这一列加总了哪些合约(micro_since 之前为 ["btc"]) |
每个分组:long、short、spread(nonreportable/commercial 没有)、net(= long − short),以及 long_change、short_change、spread_change、net_change。单位:单一合约为口数,合并合约为币数。*_change 字段是 CFTC 自己公布的周变化,不是列与列相减;CFTC 会跳过某些周(例如政府停摆),所以绝不要自己对数据列做差分。
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "contract must be one of btc, micro_btc, eth, micro_eth, btc_combined, eth_combined"} | 未知的合约 |
| 400 | {"error": "Invalid start_date, expected YYYY-MM-DD"}(或 end_date)/{"error": "start_date must not be after end_date"} | 日期不对/区间颠倒 |
| 503 | {"error": "CFTC data unavailable. Please retry shortly."} | 连不上 CFTC,也没有已存的数据 |
*_combined 在 micro_since 有断点:微型合约加入的那一周,总量会跳升,而且该周的 *_change 包含微型合约的整个初始部位。合并合约的回测请从 micro_since 之后开始,或改用单一的 btc/eth 合约。source 放在旁边。未经 CFTC 背书。btc 2018-04-10、micro_btc 2021-05-04、eth 2021-04-06、micro_eth 2021-12-14。CME 自家的 BTC 期货是从 2018-04-10 起才纳入 COT,不是从 2017-12 上市时开始。price 是 Binance 现货的 UTC 日收盘价。