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 日收盤價。