加密 API

39 个端点 · 通用 · 工具 · Alpha · 原始数据

最后更新 2026-10
Base URL
https://api.blave.org
认证
每个请求都要带 api-key 与 secret-key 请求头
权限
API plan or Blave Agent plan
频率限制
每组密钥、每个 IP 各 5 分钟 500 次

通用规则

所有加密货币的 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 端点会列出有涵盖的交易对。
  • 只回已收盘的 K 棒,还在形成中的最后一根会被丢掉。
  • 回应是 {"data": {"timestamp": [...], "alpha": [...], ...}}:平行数组,每根 K 棒一个元素。timestamp 是 Unix 秒(UTC),也就是 K 棒的标签。
  • 要抓超过 365 天的历史,一年送一个请求再接起来。

stat 对象:区块里有列出它的指标才会回。它是一个逻辑斯回归模型,用该交易对过去一年的这个指标对未来 24h 的价格变动拟合而成:

字段类型说明
up_probfloat给定最新指标值时,未来 24h 上涨的机率(0–1)
avg_up_returnfloat过去上涨时的平均 24h 报酬(小数,0.02 = +2%)
avg_down_returnfloat过去下跌时的平均 24h 报酬(小数,负值)
return_ratiofloat-avg_up_return / avg_down_return
exp_valuefloatup_prob × avg_up_return + (1 − up_prob) × avg_down_return
is_data_sufficientbool交易对的历史不到一年时为 false,这时不要依赖其他字段

没有数据时,这个对象会退回 up_prob 0.5,其余为零。

即时价格

GET/price
数据起始
只有快照(没有历史)
更新频率
服务器缓存 5 秒

参数

名称说明可用值默认
symbol
string · query必填
币名或 USDT 交易对BTCUSDT 或 BTC(不分大小写)

范例

Python
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}

回应

一个扁平的对象。

字段类型单位说明
symbolstring—不含 USDT 的币名(例如 BTC,即使送的是 BTCUSDT)
pricefloatUSDT最新价格
change_24hfloat小数24h 涨跌,以小数表示(0.025 = +2.5%)

错误

状态码回应内容情况
400{"error": "symbol is required"}没带 symbol
404{"error": "symbol <SYMBOL> not found"}这个币没有价格

备注

  • 价格来源,依备援顺序:Binance 的 USDT-M 永续合约 → Binance 现货 → BingX 永续合约。
  • change_24h 通常与 price 来自同一个交易所,但两者分开缓存(各 5 秒),所以可能短暂不一致。

Alpha 总表

GET/alpha_table
数据起始
只有快照(每个交易对的最新值)
更新频率
每 5 分钟

参数

无。

范例

Python
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说明
statisticsup_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。
  • 一律重新抓;不要重复使用先前的回应。

K 线

GET/kline
数据起始
2020-01-01,合约上架日较晚时从上架日起
更新频率
每根 K 棒收盘后约一分钟内

涵盖范围。所有代码以 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 的历史)。

参数

名称说明可用值默认
symbol
string · query必填
Binance USDⓈ-M USDT 永续合约。只给币名时会补上 USDT;只存在倍数前缀版本的币名会对应到那个版本(PEPE → 1000PEPEUSDT)BTCUSDT;也接受 BTC、btc、BTC/USDT、BTC-USDT
period
string · query必填
K 棒周期。任何整数分钟的周期都接受,不限于列出的例子{n}min/{n}h/{n}d,最小 1min(例如 1min、3min、15min、2h、1d、7d)。{n}m 会当成分钟(15m = 15min)
start_date
string · query
起始日期(含当日)YYYY-MM-DD(UTC)end_date − 365 天(周期 ≥ 5min);end_date − 30 天(周期 < 5min)
end_date
string · query
结束日期(含当日,K 棒到该 UTC 日结束为止)YYYY-MM-DD(UTC)现在

每次请求的窗口:周期 ≥ 5min → 最多 365 天;更长的区间会默默截短(start_date 改成 end_date − 365 天,不报错)。周期 < 5min → 最多 30 天;更长的区间回 400。

范例

Python
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": ...} 里),依时间由旧到新。

字段类型单位说明
timefloatUnix 秒(UTC)K 棒开盘时间
open / high / low / closefloat计价币(USDT)价格
volumefloat | 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 棒就把它丢掉。
  • 要抓超过一个窗口的历史,一个窗口送一个请求再接起来(例如 3 年的 5min = 3 个请求;1 年的 1min = 13 个 ≤30 天的请求)。
  • 全部 740 档 USDT 永续合约的完整 1 分钟历史都在磁碟上,所以大范围的请求直接由已存数据回应,不会有第一次抓取很慢的情况。
  • 起始日适用于每个周期,包含 1min。
  • 最新一根已收盘的 1 分钟 K 棒通常在下一分钟内就拿得到;少数服务降级的情况下,最新的 K 棒可能延迟约 5–10 分钟。
  • 服务器缓存:30 秒(1min)、300 秒(1h/4h/1d)、60 秒(其他周期);最新一根已收盘 K 棒还没进来时只有 5 秒。

市场方向

GET/market_direction/get_alpha
数据起始
2024-12-27
更新频率
每 5 分钟

参数

没有 symbol:alpha 是单一条全市场序列,不是每个币一条。内部只用 BTCUSDT 来对齐 K 棒;它不会被回传,也不影响 alpha。见加密货币指标共通规则。

名称说明可用值默认
period
string · query必填
K 棒周期1h、4h、8h、1d(最小 1h)
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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。

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]市场方向值

错误

状态码回应内容情况
403{"error": "period is required"}没带 period 或无法解析

备注

  • 单一条全市场序列,没有交易对维度;回得到的最早 1d K 棒是 2024-12-27。

筛选器已存条件

GET/screener/get_saved_conditions
数据起始
—
更新频率
即时

参数

无。

范例

Python
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 送)。只有这个账号自己的条件。

字段类型说明
filtersobject[]条件的筛选项,全部以 AND 组合:indicator_id(int)、indicator_name({"en", "zh"})、param(字符串;"-" = 指标的默认值)、operator_id(int)、operator_symbol(字符串,例如 >)、value(门槛)
notestring你储存这个条件时取的名称
name_en / name_zhstring | null只有官方/社群条件才有值;你自己的条件会是空的或 null,请改读 note
description_en / description_zhstring | null只有官方/社群条件才有值;可能是空的或 null

错误

状态码回应内容情况
403{"error": "unsupported api feature"}密钥没有绑定用户账号

备注

  • 每次请求都即时读取账号已储存的条件。

筛选器结果

GET/screener/get_saved_condition_result
数据起始
快照(目前的 alpha 值)
更新频率
每 5 分钟

参数

名称说明可用值默认
condition_id
int · query必填
要执行的条件get_saved_conditions 回的 id

范例

Python
response = requests.get(f"{BASE_URL}/screener/get_saved_condition_result", headers=headers,                        params={"condition_id": 12}, timeout=60)

回应

{"data": {"alpha_names": [...], "symbols": [...]}}.

字段类型说明
alpha_namesobject[]每个不重复的筛选指标一笔,依筛选项顺序:en/zh(显示名称,有参数时参数放在括号里)、name(指标 key)、type、url;指标有定义时再加上 value_format、value_decimals、polarity
symbolsobject[]符合所有筛选项的币
symbols[].symbolstring不含 USDT 的币名(例如 BTC)
symbols[].idint币的 id(未知时为 0)
symbols[].user_selectedbool这个币在账号的自选清单里
symbols[].pricefloat最新价格,单位 USDT(与 /price 同一个来源;取不到时为 0)
symbols[].24h_chgfloat24h 涨跌,以小数表示(0.025 = +2.5%)
symbols[].alphasfloat[]这个币在每个筛选指标上的值,与 alpha_names 平行
symbols[].alpha_notesobject[]每个指标一笔: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"}密钥没有绑定用户账号

筹码集中度币种清单

GET/holder_concentration/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/holder_concentration/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 目前所有加密货币的 */get_symbols 端点都回同一份 Binance 的 USDT-M 交易对清单。
  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

筹码集中度

GET/holder_concentration/get_alpha
数据起始
2021-05-11(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]多空账户比取对数后,相对 30 天平均的 Z-score,并反转正负号;数值越高 = 筹码越集中
statobject见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"} / {"error": "period is required"}缺少参数

备注

  • 只涵盖 Binance,以 Binance 的全市场多空账户比为基础。
  • 2021-05-11 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始。

资金费率

GET/funding_rate/get_alpha
数据起始
2025-09-30(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
交易对(一律用 Binance 的写法,不论哪个交易所)e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
exchange
string · query
要读哪个交易所的永续合约资金费率;其他值回 400binance, okx, bingx, bybitbinance
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型单位说明
timestampfloat[]Unix 秒(UTC)K 棒标签
alphafloat[]百分比资金费率 × 100(0.01 = 0.01%);正值 = 多方付给空方
closefloat[]USDT永续合约收盘价
statobject—见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"} / {"error": "period is required"}缺少参数
400{"error": "exchange must be one of binance, okx, bingx, bybit"}exchange 不在清单内

备注

  • 2025-09-30 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始,exchange=bybit 也较晚开始,请读第一个时间戳。

市场情绪币种清单

GET/market_sentiment/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/market_sentiment/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

市场情绪

GET/market_sentiment/get_alpha
数据起始
2020-01-01(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]市场情绪值
statobject见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"} / {"error": "period is required"}缺少参数

备注

  • 2020-01-01 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始。

资金稀缺

GET/capital_shortage/get_alpha
数据起始
2023-12-09
更新频率
每 5 分钟

参数

没有 symbol;全市场。见加密货币指标共通规则。

名称说明可用值默认
period
string · query必填
K 棒周期,5min 与 15min 都有数据5min, 15min, 1h, 4h, 8h, 1d
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]资金稀缺值
statobject见 stat 对象(以 BTC 计算)

错误

状态码回应内容情况
403{"error": "period is required"}缺少参数

备注

  • 只涵盖 Binance,全市场,取自 Binance 的 USDT 借贷年利率。
  • 单一条全市场序列,没有交易对维度;第一根 1d K 棒是 2023-12-09。

板块轮动历史

GET/sector_rotation/get_history_data
数据起始
最近 365 天(每日)
更新频率
约每小时

参数

无。

范例

Python
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 最上层,不在各板块里面;它是所有板块序列共用的时间轴。

字段类型说明
timestampfloat[]Unix 秒(UTC),每个点一个;观察到的回应有 366 个每日点
alpha.<sector>.datafloat[]板块序列,长度与顺序同 timestamp(366);第一个元素是 0.0
alpha.<sector>.name_en / name_zhstring板块显示名称

错误

只有共用错误。

备注

  • 序列是最近一年的每日窗口(366 个每日点),每个板块都从 0.0 开始。没有参数,而且每次重建只重算最近 365 天,所以没有更长的历史。
  • 由排程重建,每次重建间隔 50–60 分钟;直接回排程的产出,没有额外的服务器缓存。

板块轮动热图

GET/sector_rotation/get_overview_data
数据起始
快照
更新频率
约每小时

参数

无。

范例

Python
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}}}}:各币明细

错误

只有共用错误。

备注

  • 由排程重建,每次重建间隔 50–60 分钟;直接回排程的产出,没有额外的服务器缓存。

OI 失衡

GET/oi_imbalance/get_overview_data
数据起始
快照
更新频率
每 5 分钟

参数

无。

范例

Python
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 由大到小排序。

字段类型单位说明
tokenstring—币名
token_idint—Blave 的币 id
token_pricefloat美元价格
token_chgfloat小数价格涨跌
market_capfloat美元市值
oi_totalfloat美元Binance/OKX/BingX 三家加总的合约未平仓量
alphafloat比率oi_total / market_cap:数值高 = 未平仓量相对规模过于拥挤(有轧仓/波动风险)

错误

只有共用错误。

备注

  • /alpha_table 的 oi_imbalance 只带最终的 alpha;这个端点才有完整表格。
  • 服务器缓存:5 分钟。

巨鲸警报币种清单

GET/whale_hunter/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/whale_hunter/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

巨鲸警报

GET/whale_hunter/get_alpha
数据起始
2021-12-01(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
timeframe
string · query
加总资金流的滚动窗口15min, 1h, 4h, 8h, 24h, 3d24h
score_type
string · query
未平仓量变化或成交量score_oi, score_volumescore_oi
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]依 timeframe 加总的未平仓量变化(或成交量),相对 30 天平均的 Z-score
statobject见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"} / {"error": "period is required"}缺少参数
403{"error": "Invalid score_type"}不允许的 score_type

备注

  • 只涵盖 Binance:USDT-M 永续合约的未平仓量与成交量。
  • 服务器端不验证 timeframe。试过一个清单外的值 2h,回了 200 且有数据。这只是单一次观察,不能证明任何 {n}h 都能用。除非你自己验证过要用的值,否则请用清单内的值。
  • 2021-12-01 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始。

多空力道币种清单

GET/taker_intensity/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/taker_intensity/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

多空力道

GET/taker_intensity/get_alpha
数据起始
2020-01-01(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
timeframe
string · query
滚动窗口15min, 1h, 4h, 8h, 24h, 3d24h
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]依 timeframe 加总的(主动买 − 主动卖)成交量,相对 30 天平均的 Z-score;正值 = 净买入
statobject见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"} / {"error": "period is required"}缺少参数

备注

  • 只涵盖 Binance:USDT-M 永续合约的主动买/卖成交量。
  • 2020-01-01 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始。

异常涨跌币种清单

GET/unusual_movement/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/unusual_movement/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

异常涨跌

GET/unusual_movement/get_alpha
数据起始
2020-01-02(BTCUSDT)
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
timeframe
string · query
衡量涨跌幅的窗口15min, 1h, 4h, 8h, 24h, 3d, 7d24h
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]timeframe 内的报酬,除以换算到该窗口的 365 天波动率;|alpha| 大 = 离群值
closefloat[]收盘价(USDT)
statobject见 stat 对象

错误

状态码回应内容情况
400{"error": "symbol is required"} / {"error": "period is required"}缺少参数
500服务器错误timeframe 不在允许的清单内

备注

  • 只涵盖 Binance:USDT-M 永续合约的价格。
  • 2020-01-02 是 BTCUSDT 的第一根 1d K 棒;其他交易对可能较晚开始。

挤压动能币种清单

GET/squeeze_momentum/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/squeeze_momentum/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

挤压动能

GET/squeeze_momentum/get_alpha
数据起始
2020-02-09(BTCUSDT)
更新频率
日 K

参数

没有 period;固定为 1d。见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC),每日
alphafloat[]动能值
scolorstring[]black = 挤压中(布林通道在肯特纳通道之内),grey = 挤压结束
statobject见 stat 对象

错误

状态码回应内容情况
403{"error": "symbol is required"}缺少参数

备注

  • 只涵盖 Binance:USDT-M 永续合约的价格。
  • 序列有补值:BTCUSDT 从 2020-01-01 就有数据列,但 alpha 在 2020-02-09 之前都是 0.0。请求的起点早于数据起始日时会回这些补值列,它们是填充,不是信号。请丢掉开头的零,或从数据起始日开始。
  • 2020-02-09 是 BTCUSDT 第一个非零的 alpha;其他交易对可能较晚开始。

Blave 顶尖交易员曝险

GET/blave_top_trader/get_exposure
数据起始
2025-03-03
更新频率
每 5 分钟

参数

没有 symbol:alpha 是单一条全市场序列,不是每个币一条。内部只用 BTCUSDT 来对齐 K 棒;它不会被回传,也不影响 alpha。见加密货币指标共通规则。

名称说明可用值默认
period
string · query必填
K 棒周期1h, 4h, 8h, 1d
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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。

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[]Blave 顶尖交易员(账户资产前 10%)的净曝险:每位交易员的净名目部位 ÷ 自身资产,取这些交易员的中位数,再 ×100(正值 = 净多)。这是原始比率,不是 z-score

错误

状态码回应内容情况
403{"error": "period is required"}缺少参数

备注

  • 单一条全市场序列,涵盖这些交易员持有的所有币;没有交易对维度。

爆仓币种清单

GET/liquidation/get_symbols
数据起始
—
更新频率
服务器缓存 10 分钟

参数

无。

范例

Python
symbols = requests.get(f"{BASE_URL}/liquidation/get_symbols", headers=headers, timeout=30).json()["data"]

回应

{"data": ["BNBUSDT", "BTCUSDT", ...]},已排序。

错误

只有共用错误。

备注

  • 清单取自最新的 Binance 的 USDT-M 未平仓量快照。

爆仓指标

GET/liquidation/get_alpha
数据起始
BTC/ETH 为 2023-01-01;其他交易对可能较晚开始
更新频率
每 5 分钟

参数

见加密货币指标共通规则。

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
period
string · query必填
K 棒周期5min, 15min, 1h, 4h, 8h, 1d
timeframe
string · query
滚动窗口15min, 1h, 4h, 8h, 24h, 3d24h
start_date
string · query
起始日YYYY-MM-DDend_date − 365 天
end_date
string · query
结束日期YYYY-MM-DD今天

范例

Python
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": {...}}}.

字段类型说明
timestampfloat[]Unix 秒(UTC)
alphafloat[](空单 − 多单爆仓量,以币计)依 timeframe 加总 ÷ 其 30 天滚动标准差;不减平均。> 0 = 空单爆仓多于多单,< 0 = 多单较多
statobject见 stat 对象

错误

状态码回应内容情况
400{"error": "symbol is required"} / {"error": "period is required"}缺少参数

备注

  • 序列有补值:BTCUSDT 从 2020-01-01 就有数据列,但 alpha 在 2023-01-01 之前都是 0.0。请求的起点早于数据起始日时会回这些补值列,它们是填充,不是信号。请丢掉开头的零,或从数据起始日开始。BTC/ETH 以外的交易对更晚才转为非零,所以要逐一检查。

爆仓地图

GET/liquidation/get_map
数据起始
快照
更新频率
服务器缓存 5 秒

参数

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
price_max
float · query
价格轴上限价格服务器决定的范围
price_min
float · query
价格轴下限价格服务器决定的范围

范例

Python
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"}}.

字段类型单位说明
pricefloatUSDT目前价格
labelsfloat[]USDT200 个价格区间
oi_valuefloat[]美元Binance 未平仓量分配到各区间的估计值(模型估计,不是真实部位)
cumsumfloat[]美元跨区间累计的爆仓曝险
liquidationobject美元{"24h": {"buy_liq": [...], "sell_liq": [...]}}:各区间最近 24 小时 Binance 实际的强制平仓单,各自除以固定的 0.3(假设的 Binance 市占):buy_liq = 空单爆仓,sell_liq = 多单爆仓

错误

状态码回应内容情况
400{"error": "symbol is required"}缺少参数

爆仓地图变化

GET/liquidation/get_map_change
数据起始
最近 24 小时
更新频率
每次请求时计算

参数

名称说明可用值默认
symbol
string · query必填
商品代码e.g. BTCUSDT
price_max
float · query
价格轴上限价格服务器决定的范围
price_min
float · query
价格轴下限价格服务器决定的范围

范例

Python
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"}}.

字段类型单位说明
pricefloatUSDT目前价格
labelsfloat[]USDT200 个价格区间(下缘)
hist_0_1hfloat[]美元各区间最近 0–1 小时新增的估计爆仓曝险:模型地图快照之间的正向差值,不是实际爆仓
hist_1_8hfloat[]美元最近 1–8 小时
hist_8_24hfloat[]美元最近 8–24 小时

错误

状态码回应内容情况
400{"error": "symbol is required"}缺少参数

备注

  • 每次请求都会重建目前的地图(服务器缓存 5 秒),并与约 1 小时、8 小时、24 小时前存下的地图快照比较。每个交易对每 30 分钟存一次快照,每次请求地图时也会存。

每币爆仓

GET/liquidation/get_coin
数据起始
快照(最近 24 小时)
更新频率
每 5 分钟

单一币种在 Blave 收集的所有交易所数据源上的强制平仓:四个滚动窗口与各交易所的拆分、一条 24 点的每小时序列,以及各数据源的涵盖说明。这是真实的爆仓流量(如同 get_alpha 的输入),不是 get_map 背后的模型估计。

参数

名称说明可用值默认
symbol
string · query必填
币种。计价币后缀会被去掉;回应的 symbol 是正规化后的币名BTC、BTCUSDT、btc、BTC-USDT-SWAP、BTC_USDT(≤ 32 个字符)

范例

回应

{"data": {"symbol", "rank", "updated_at", "windows", "exchanges", "detail_complete", "series"}}.

字段类型单位说明
symbolstring—正规化后的币名,例如 BTC
rankint / null—依跨交易所 24 小时总额排序,在前 50 名币种中的名次;不在前 50 名或没有事件时为 null
updated_atstring / nullISO 8601(UTC)所用最新一个 5 分钟区段的时间
windowsobject—key 是字符串 "1"、"4"、"12"、"24"(小时)。每个都是结束在最新 5 分钟区段的滚动窗口,字段如下
windows.<h>.total_liq_usd / long_liq_usd / short_liq_usdfloat美元跨交易所加总;long = 多单被爆仓(价格下跌),short = 空单被爆仓(价格上涨)
windows.<h>.long_pct / short_pctfloat / null比率 0–1占窗口总额的比例;窗口总额为 0 时为 null
windows.<h>.covered_hoursfloath窗口内实际有区段的小时数(收集程序刚重启后会 < h)
windows.<h>.by_exchangeobject美元{exchange: {total_liq_usd, long_liq_usd, short_liq_usd}}。窗口内没有事件的交易所没有 key;要分辨「数据源正常、这个币没动静」与「数据源不存在」,请读 exchanges[]
exchanges[]object[]—每个数据源一列(目前六个,没有事件也会出现),依 24 小时总额由大到小排序,其次依名单顺序
exchanges[].exchangestring—binance, bybit, gate, okx, htx, bitfinex
exchanges[].listedbool / null—该交易所是否有这个币的 USDT 本位永续合约;抓不到合约清单时为 null(Bitfinex 一律为 null)
exchanges[].last_event_atstring / nullISO 8601(UTC)该数据源最新出现的区段(任何币);从未出现过时为 null
exchanges[].price_basisstring—换算美元所用的价格:trade_avg、bankruptcy、unverified
exchanges[].coveragestring—数据源完整度:full、full_unstated、sampled_1s、aggregated_1s、sampled_undisclosed
exchanges[].time_basisstring—event:依事件本身的时间戳分区段
detail_completebool—这个币可能被排除在完整的逐区段明细清单之外时为 false(数据源每个 5 分钟区段只留前 100 名币种):这时 windows 可能少算。前 50 名的币几乎都是 true
series.bucket_secondsints一律为 3600
series.pointsobject[]—一律 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 笔爆仓」

备注

  • 涵盖 Binance、Bybit、Gate.io、OKX、HTX 与 Bitfinex 的爆仓数据源。
  • 只有快照:没有 start_date/end_date,也没有 24 小时以前的数据。要历史请用 get_alpha(正规化的多空失衡,不是美元金额)。
  • 交易对的处理方式与其他爆仓端点不同:get_alpha/get_map 需要 Binance 永续合约的写法(BTCUSDT);这里 BTC 与 BTCUSDT 是同一个币。
  • 服务器缓存:5 分钟。
  • 美元名目金额在收集当下换算,所以各交易所可以加总。

爆仓矩阵

GET/liquidation/get_exchanges
数据起始
滚动窗口,对齐 5 分钟(默认最近 24 小时)
更新频率
每 5 分钟

全市场的强制平仓,依交易所汇总,并提供 币种 × 交易所 矩阵,是 /liquidation/get_coin 的全市场版本。两者用同一个对齐 5 分钟的滚动窗口,所以同一个币的 24 小时总额在两边是同一个数字。

参数

名称说明可用值默认
hours
int · query
窗口长度。超出范围 → 400(不会截短);非整数的值会默默退回默认值1–16824
top_n
int · query
要个别列出几个币;其余归到 others。范围/非整数的规则同 hours1–5010

范例

回应

{"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_basisstring—该列的可比性: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
othersobject—被 top_n 截掉的全部,字段相同再加 coin_count,所以 coins[] + others 加回来等于各交易所的总额
totalobject美元/比率total_liq_usd, long_liq_usd, short_liq_usd, long_pct, short_pct
covered_hoursfloath窗口内实际有区段的小时数(收集程序刚重启后会 < hours)
bucketsint—汇总的 5 分钟区段数
window_hours / window_start / window_endint / string小时/ISO 8601(UTC)服务器实际采用的窗口
updated_atstringISO 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"}参数超出范围

备注

  • 涵盖 Binance、Bybit、Gate.io、OKX、HTX 与 Bitfinex 的爆仓数据源。
  • 完全没有数据(数据源中断,或数据来源连不上)时仍回 200,结构相同,所有金额为 null、buckets: 0,绝不会是一整张零的表。使用数字前先检查 total.total_liq_usd。
  • 只有总额,没有时间序列。单一币种的每小时走势用 /liquidation/get_coin;正规化的长历史信号用 /liquidation/get_alpha。
  • 窗口是滚动的,不是日历日,而且与 /liquidation/get_coin 的 windows["24"] 是同一个窗口。
  • 服务器缓存:5 分钟。
  • 美元名目金额在收集当下换算,所以各交易所可以加总。

多空比总表

GET/long_short_ratio/get_table
数据起始
快照(最新横断面)
更新频率
5 分钟区段

目前所有收集的币种 × 所有多空比来源。十个来源:Binance、OKX 与 Gate.io 各公布三种(所有账户、顶尖交易员账户、顶尖交易员部位),Bybit 只公布账户。数据列依 Binance 未平仓名目金额排序。只列出对应得到 Blave 币种清单的币;用 API 密钥拿到的是完整表格(full: true),匿名的 Studio 版本只有其 30 个币白名单的列。

参数

无。

范例

开始收集的时间(第一个存下的区段,2026-09-22 以 BTC 量测)

来源 key开始收集日
binance_account2021-05-11
binance_top_account / binance_top_position2026-08-22
okx_account / okx_top_account / okx_top_position2025-02-18
gate_account / gate_top_account / gate_top_position2026-08-12
bybit_account2026-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[].keystring—<exchange>_<type>,例如 binance_top_position,也就是 coins[] 里用的 key
sources[].exchange / .typestring—binance / okx / gate / bybit; account / top_account / top_position
sources[].last_atstringISO 8601(UTC)该数据源最新的一笔取样
sources[].stalebool—该数据源最新的取样已超过 1 小时(以现在为准)。最上层的 updated_at 是最新的那个来源,不代表任何单一来源的状况;判断某个来源要看它自己的 last_at/stale
summary.binance_tokens / .binance_long_majorityint—有 Binance 账户比的币数/其中高于 1 的币数。以整张表计算,不是只算回传的列
tokens_shown / tokens_totalint—回传的列数/表格的总列数。用 API 密钥时两者相等
fullbool—用 API 密钥时为 true;匿名的 Studio 版本为 false
updated_atstringISO 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 天);这个数据集没有长历史端点。
  • 粒度是 5 分钟,但每个来源各有自己的公布时间,不要写成「每 5 分钟更新」。
  • 快照是每个来源已公布的最新区段;Gate.io 与 OKX 的区段大约晚 10 分钟到。

每币多空比

GET/long_short_ratio/get_coin
数据起始
最近 7 天,每小时一点,加上最新的 5 分钟点
更新频率
5 分钟区段

单一币种、全部十个来源:每个来源最新的 5 分钟值、每个来源一条 7 天的每小时序列,以及同一时间轴上的 Binance 永续合约收盘价。

参数

名称说明可用值默认
symbol
string · query必填
币种。计价币后缀会被去掉;回应的 symbol 是正规化后的币名BTC、BTCUSDT、btc(≤ 32 个字符)

范例

回应

{"data": {"latest", "series", "sources", "symbol", "token_id", "updated_at"}}.

字段类型单位说明
latest.<source key>object / null—{value, ts}:该来源最新的 5 分钟取样;来源没有上架这个币时为 null
series.bucket_seconds / .daysints / d3600 / 7
series.timestampint[]epoch 秒168 格,由旧到新,每小时一格
series.<source key>float[] / null比率每小时的最后一笔取样;该小时没有取样时为 null。来源没有上架这个币时,整个字段是单一个 null(不是数组)
series.pricefloat[] / null美元同一时间轴上的 Binance 永续合约收盘价。这个币没有 Binance 永续合约时是单一个 null(price_symbol/price_multiplier 也是 null)
series.price_symbol / .price_multiplierstring / int—价格取自哪个永续合约,以及它的合约乘数(1000PEPEUSDT → 1000;price ÷ price_multiplier = 每颗币的价格)
series.provisional_fromint / nullepoch 秒第一个还可能变动的格子(来源最晚约 10 分钟后才定案);没有任何来源有数据时为 null
sources[]object[]—完整名单,字段同表格端点,再加 listed
sources[].listedbool—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 只会代表「该交易所没有上架」

备注

  • 涵盖 Binance、OKX、Gate.io 与 Bybit 的多空比数据源。
  • /long_short_ratio/get_table 关于跨交易所「顶尖交易员」的注意事项在这里同样适用。
  • 7 天就是这个端点提供的全部历史;没有 start_date/end_date。
  • 关于本页原始数据端点各个范例里的「匿名的 Studio 版本」:Studio 页面(/studio/charts/...)不带密钥就能从同一支产生程序拿到相同的内容,这些范例就是从那里撷取的。它们不能取代 API 密钥端点:表格只留 30 个币(full: false),Studio 白名单以外的币会回 403 {"error_code": "ERR001", ..., "anon_whitelist": [...]} 而不是数据。这里记载的 API 密钥端点没有白名单,也不裁列。
  • Gate.io 与 OKX 的区段大约晚 10 分钟到。

未平仓量总表

GET/oi_imbalance/get_table
数据起始
快照(最新横断面)
更新频率
约每 15 分钟

所有收集的币种 × 五个交易所,以美元名目金额计。口径:只算 USDT 本位永续合约、美元名目金额、单边。回报双边的交易所会除以二(exchanges[].side_factor,Gate.io = 0.5)。因为每个值都已经是美元名目金额,带倍数的合约(1000PEPE 这类)跨交易所可以直接相加,不必重新换算。

参数

无。

范例

开始收集的时间(第一个存下的区段,2026-09-22 以 BTC 量测)

交易所开始收集日
binance2021-12-01
bingx2025-04-15
gate2026-08-12
okx2026-09-21
bybit2026-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_idstring / int—币种
coins[].oi_totalfloat美元五个交易所加总
coins[].chg_1h / .chg_4h / .chg_24hfloat / null小数以小数表示的变化(0.0675 = +6.75 %)。每个窗口只算在该窗口起点有基准值的交易所,分子与分母用同一组交易所;都没有时为 null
coins[].market_capfloat / null美元市值;没有可用的市值时为 null
coins[].oi_mcapfloat / null比率oi_total ÷ market_cap;这个币没有市值时为 null
coins[].by_exchangeobject—{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_7dstring / bool日期数据源的历史不到 7 天时(full_7d: false)是它的第一天,否则为 null/true。在这张表上仅供参考(表格没有 7 天窗口);在 /oi_imbalance/get_coin 上,这种数据源没有 7 d 基准值,不会计入 series.total
totalobject—全市场的 oi、chg_1h/4h/24h、n_exchanges、n_full_7d
summary.oi_mcap_leader / _valuestring / 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"}排程没有新的结果(缺少或已超过一小时),绝不会是一整张零的表

备注

  • 上面范例中 OKX/Bybit 的 chg_24h: null 是年轻数据源规则造成的,不是市场数据有缺:这两家从 2026-09-21 才开始收集,所以当时还没有 24 h 的基准值。
  • 这是横断面,不是历史。单一币种最近 7 天(每小时、全部五个交易所)用 /oi_imbalance/get_coin;单一币种在单一交易所、足够回测的长历史用 /oi_imbalance/get_history。
  • 快照带 1 h/4 h/24 h 的变化。它由排程约每 15 分钟从 5 分钟的来源区段重建;Gate.io 与 OKX 的区段大约晚 10 分钟到。

每币未平仓量

GET/oi_imbalance/get_coin
数据起始
最近 7 天,每小时一点,加上目前的值
更新频率
5 分钟区段

单一币种在各交易所的未平仓量,口径与表格相同:目前的值与占比、四个变化窗口与各自计入的交易所,以及一条 7 天的每小时总量线。

参数

symbol,与 /long_short_ratio/get_coin 完全相同。

范例

回应

{"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[].listedbool—false = 该交易所没有上架这个币;它的值为 null
oi_total / market_cap / oi_mcapfloat美元/比率同表格端点
oi_mcap_rank / tokens_totalint / null—在表格排程最近一轮中依 oi_mcap 排的名次;该排程没有新的结果时为 null
windows.<1h|4h|24h|7d>.chg / .chg_usdfloat / null小数/美元计入的交易所合计的变化
windows.<w>.exchangesstring[]—该窗口计入了哪些交易所:年轻的数据源不会出现,所以 24 h/7 d 计入的交易所可能比 1 h 少
series.timestampint[]epoch 秒168 个每小时的格子,由旧到新
series.totalfloat[] / null美元每格的未平仓总量,这条线只含 series.total_exchanges(也就是 full_7d 的数据源),所以水准不能与 oi_total 比较。其中任何一个交易所在该小时没有取样时,该格为 null;这个币没有任何交易所是 full_7d 时,整个字段为 null
series.total_exchangesstring[]—这条线加总了哪些交易所
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"}。

备注

  • 涵盖 Binance、OKX、BingX、Bybit 与 Gate.io 的未平仓量。
  • windows["1h"]["exchanges"] 有五笔而 windows["24h"] 只有三笔,是年轻数据源规则造成的,不是数据缺漏;比较不同窗口前请先读这个清单。
  • /oi_imbalance/get_table 关于 OI 失衡的注意事项同样适用于这个 oi_total。
  • 只有七天。要更长的序列来回测,请用 /oi_imbalance/get_history(单一交易所,单位是币而不是美元,口径与 oi_total 不同)。
  • Gate.io 与 OKX 的区段大约晚 10 分钟到。

未平仓量历史

GET/oi_imbalance/get_history
数据起始
binance 2021-12-01;bybit 2025-08-21;gate 2026-03-28
更新频率
5 分钟区段

单一币种在单一交易所的未平仓量,是可以拿来回测的时间序列,口径与 Studio 仪表板的未平仓量卡片相同。alpha 是单边未平仓量,单位是币,不是美元。带倍数的合约会换算回币数(1000PEPE 回的是 PEPE 的颗数)。每个区段取该周期的最后一笔读数;未平仓量是存量,绝不加总。

参数

名称说明可用值默认
symbol
string · query必填
币种,规则同 /oi_imbalance/get_coinBTC, BTCUSDT, btc
period
string · query必填
区段大小。1w 回 400(不支持这个单位);1m 会当成 1min,因为小于 5min 所以回 400{n}min/{n}h/{n}d,最小 5min(例如 5min、1h、4h、1d)
start_date
string · query
起始日期(含当日)YYYY-MM-DD(UTC)end_date − 365 天
end_date
string · query
结束日(含当日)YYYY-MM-DD(UTC)今天
oi_exchange
string · query
要读哪个交易所的未平仓量binance、bybit、gate(不分大小写)binance

每次请求的窗口:最多 365 天;更长的区间会默默截短(start_date 改成 end_date − 365 天,不报错),与 /kline 相同。

范例

回应

{"data": {"timestamp", "alpha", "close", "exchanges"}},平行数组,由旧到新。

字段类型单位说明
timestampfloat[]Unix 秒(UTC)区段起点
alphafloat[]币oi_exchange 上的单边未平仓量,取区段的最后一笔读数
closefloat[]USDTBinance 的 USDT-M 永续合约价格,以合约单位计,所以 1000PEPE 是每 1000 颗币的价格
exchangesstring[]—实际读取的交易所,例如 ["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>"}目前读不到数据,请重试

备注

  • 涵盖 Binance、Bybit 与 Gate.io 的未平仓量;close 是 Binance 的 USDT-M 永续合约价格。
  • 200 加空数组代表该窗口内没有区段(例如币在那之后才上架),不要把它缓存成永久的「没有数据」。
  • end_date 是今天时,最后一个区段在周期结束前会持续变动。
  • 要抓超过 365 天的历史,一年送一个请求再接起来。
  • 解析度是 5 分钟。每个交易所的序列从数据起始日开始,币在该交易所的上架日较晚时从上架日开始。只含目前上架中的合约。

主动买卖净额总表

GET/taker_intensity/get_cvd_table
数据起始
快照(滚动 1 h/4 h/24 h 窗口)
更新频率
约每 15 分钟

各币种的主动(市价单)买进与卖出成交额,以美元计,涵盖三个交易所:Binance 取自 5 分钟 K 线的主动买入计价币成交额(卖出 = 该根 K 棒的总额减去它),OKX 取自它的美元主动成交量,Gate.io 取自主动成交张数 × 同一列的乘数与标记价格。只含永续合约,不含现货,而且是由 5 分钟 K 棒汇总,不是由逐笔成交汇总。用的是各交易所自己回报的成交额;绝不会拿成交量去乘从别的交易所借来的价格。

参数

无。

范例

Python
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 量测)

交易所来源字段开始收集日
binance5 分钟 kline(主动买成交额)2020-01-01
gatecontract_stats2026-08-12
okxtaker_volume_usd2026-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_idstring / int—币种
coins[].buy_24h / .sell_24hfloat / null美元滚动 24 h 内的主动买进/卖出成交额,加总该币所有未过期的交易所;全部过期时为 null
coins[].net_1h / .net_4h / .net_24hfloat / null美元各滚动窗口内的 buy − sell(null 规则相同)
coins[].by_exchangeobject—{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[].stalebool—该数据源的最后一根 K 棒已超过一小时:它的窗口会回 null,而且不计入总额,以免贡献一个实际涵盖时间不足却没有标示的加总
totalobject美元全市场的 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 的信号,有多年历史。这里是当下的原始美元成交额。
  • 窗口是滚动的,结束在最后一根已收盘的 5 分钟 K 棒,所以 net_24h 不是日历日。
  • 由排程约每 15 分钟从 5 分钟的来源区段重建;Gate.io 与 OKX 的区段大约晚 10 分钟到。

每币主动买卖净额

GET/taker_intensity/get_cvd_coin
数据起始
最近 7 天,每小时一点,加上滚动窗口
更新频率
5 分钟区段

单一币种在各交易所的主动买进/卖出/净额(口径与表格相同),加上 7 天的每小时净额与其累计值,也就是 CVD 线本身。

参数

symbol,与 /long_short_ratio/get_coin 完全相同。

范例

回应

{"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_7dbool—false = 这个币在该交易所的历史不到 7 天:它的 7 d 窗口为 null,而且不计入 7 d 总额,也不计入序列。OKX 只保留 5 天,所以在数据源开始后一周内都是 false
series.timestampint[]epoch 秒168 个每小时的格子,由旧到新
series.netfloat[]美元每个整点小时的主动净流量,加总 series.exchanges;该小时没有数据时为 null。series.exchanges 是空的时候,每格都是 null,cvd 会持平在 0,这时这条线不带任何资讯
series.cvdfloat[]美元net 的累计值;cvd[0] = 0,这条线看的是形状,不是绝对水准
series.exchangesstring[]—这条线加总了哪些交易所
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"}。

备注

  • 涵盖 Binance、OKX 与 Gate.io 的主动成交流量。
  • series.exchanges 比 exchanges[] 短是 full_7d 规则造成的;请拿序列跟它自己比,不要跟 windows["24h"] 比,后者计入的交易所比较多。
  • cvd[0] = 0 是定义如此:只有斜率与转折点带有资讯。
  • Gate.io 与 OKX 的区段大约晚 10 分钟到。

CME 比特币/以太币期货持仓报告

GET/cme_cot/get_latest
数据起始
只有最新一期报告
更新频率
每周,周五美东时间 15:30

四个 CME 加密货币期货各自最新一周的 CFTC 数据列,加上每种资产把标准合约与微型合约以币数加总的结果。结构同 /cme_cot/get_history 的一列,但没有 price。

参数

无。

范例

Python
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(合并后的一列,单位是币)
reportfutures_only
unitscontracts[].latest 部位的单位:口数(× coin_per_contract 换算成币数)
sourceCFTC 的数据来源标示,公布任何数字时都要一并显示
source_updatedCFTC 最后一次更新数据集的时间
fetched_atBlave 抓取的时间(UTC)
staletrue = 连不上 CFTC,回的是最后一份已存的数据

错误

状态码回应内容情况
503{"error": "CFTC data unavailable. Please retry shortly."}连不上 CFTC,也没有已存的数据

备注

  • 要历史请用 /cme_cot/get_history。
  • 部位以周二为准(周二是美国假日时为周一),由 CFTC 在该周周五美东时间 15:30 公布;周三到周五遇到联邦假日时,公布日顺延到下一个营业日,政府停摆则会延后数周。
  • 服务器缓存:1 小时。

CME 比特币/以太币期货持仓报告历史

GET/cme_cot/get_history
数据起始
2018-04-10(btc);其他合约较晚
更新频率
每周,周五美东时间 15:30

单一合约依交易人类别区分的每周部位。数据列的日期是报告日,也就是部位的基准日,通常是周二(周二是美国假日时为周一)。数据是之后才公开的:通常是该周周五美东时间 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)。回测不得在数据列公布之前就使用它。

参数

名称说明可用值默认
contract
string · query
单一合约的单位是口数;*_combined = 标准合约 + 微型合约,以币数加总btc、micro_btc、eth、micro_eth、btc_combined、eth_combined(不分大小写)btc
start_date
string · query
起始报告日(含当日)。不带 = 只回最近一年;要完整历史请带一个够早的日期(例如 2018-01-01)YYYY-MM-DD今天(UTC)− 365 天
end_date
string · query
结束报告日(含当日)YYYY-MM-DD最新

范例

回应

{"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(合并合约)。

每一列:

字段类型说明
datestring报告日,通常是周二,周二是美国假日时为周一
open_interest / open_interest_changenumber未平仓总量与其周变化
tffobject分组:dealer、asset_manager、leveraged_funds、other_reportables、nonreportable
legacyobject | null分组:non_commercial、commercial、nonreportable;CFTC 该周没有 Legacy 数据列时为 null
pricefloat | null报告日当天 Binance 现货 BTCUSDT/ETHUSDT 的 UTC 日收盘价;取不到时为 null
includedstring[]只有合并合约才有:这一列加总了哪些合约(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 合约。
  • 完整的 BTC 历史约 440 列周数据(约 0.5 MB),一个请求就拿完,不分页。
  • 授权:CFTC 的数据属于公有领域,但 CFTC 要求注明出处,显示任何数字时请把 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 上市时开始。
  • 服务器缓存:1 小时。
  • price 是 Binance 现货的 UTC 日收盘价。