加密货币 K 线 + 衍生品 + 情绪面数据 HTTP + WebSocket API · 支持 bitget / binance 多交易所
返回服务主页(HTML 界面)。服务元信息(交易所、交易对、周期、就绪状态)请用 GET /health 或 GET /api/symbols 获取。
返回服务健康状态与多交易所元信息(各交易所、交易对、就绪状态),适合负载均衡探测器。
{
"status": "ok",
"exchange": "bitget", // 默认交易所
"symbols": ["BTC/USDT:USDT", ...],
"exchanges": ["bitget", "binance"],
"symbols_by_exchange": {"bitget": [...], "binance": [...]},
"symbol_list": [{"exchange":"bitget","symbol":"BTC/USDT:USDT","key":"bitget:BTC/USDT:USDT","is_default_exchange":true}, ...],
"base_timeframes": ["1m", "1h", "1d", "1w"],
"derived_timeframes": ["5m", "15m", "4h", ...],
"timeframes": ["1m", "1h", ..., "5m", "15m", ...],
"ready": true,
"ready_by_exchange": {"bitget": true, "binance": true}
}
返回每个交易所的配置、交易对清单,以及带交易所前缀的统一交易对列表(key 可直接传给 /api/candles 的 symbol 参数)。
{
"default_exchange": "bitget",
"exchanges": [
{
"exchange": "bitget",
"symbols": ["BTC/USDT:USDT", ...],
"count": 20,
"base_timeframes": ["1m", "1h", "1d", "1w"],
"ready": true
},
{ "exchange": "binance", ... }
],
"symbols": [
{"exchange":"bitget", "symbol":"BTC/USDT:USDT", "key":"bitget:BTC/USDT:USDT", "is_default_exchange":true},
{"exchange":"binance", "symbol":"BTC/USDT:USDT", "key":"binance:BTC/USDT:USDT", "is_default_exchange":false},
...
],
"count": 39
}
symbols 里的 key(形如 bitget:BTC/USDT:USDT)可直接作为 /api/candles 的 symbol 参数,无需再传 exchange。返回基础周期(交易所直接拉取)和衍生周期(合成生成)的完整列表。
{
"base_timeframes": ["1m", "1h", "1d", "1w"],
"derived_timeframes": ["5m", "15m", "4h", ...],
"timeframes": ["1m", "1h", ..., "5m", "15m", ...]
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 是 | 交易对,如 BTC/USDT:USDT;也可写成带交易所前缀 bitget:BTC/USDT:USDT |
| exchange | string | 可选 | 交易所名:bitget / binance;不传用默认交易所 |
| tf | string | 否 | 时间周期,默认 1m。支持基础及衍生周期 |
| start | int | 可选 | 开始时间戳(毫秒) |
| end | int | 可选 | 结束时间戳(毫秒) |
| limit | int | 可选 | 限制返回的 K 线数量(返回最后 N 根) |
# 获取 BTC 最近 100 根 5 分钟 K 线(默认交易所 bitget) GET /api/candles?symbol=BTC/USDT:USDT&tf=5m&limit=100 # 指定交易所(binance) GET /api/candles?symbol=BTC/USDT:USDT&tf=1h&exchange=binance&limit=100 # 或用带交易所前缀的 symbol(等价于上一行) GET /api/candles?symbol=binance:BTC/USDT:USDT&tf=1h&limit=100 # 指定时间范围 GET /api/candles?symbol=ETH/USDT:USDT&tf=1h&start=1704067200000&end=1704153600000 # 获取 4 小时周期(衍生周期) GET /api/candles?symbol=SOL/USDT:USDT&tf=4h&limit=50
返回 OHLCV 对象数组:
[
{
"timestamp": 1704067200000,
"datetime": "2024-01-01T00:00:00Z",
"open": 42850.12,
"high": 43100.00,
"low": 42780.50,
"close": 43050.80,
"volume": 125.34
},
...
]
| 字段 | 类型 | 说明 |
|---|---|---|
| timestamp | int | UTC 毫秒时间戳 |
| datetime | string | ISO 8601 格式(末尾 Z) |
| open | float | 开盘价 |
| high | float | 最高价 |
| low | float | 最低价 |
| close | float | 收盘价 |
| volume | float | 成交量 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 否 | 交易对,默认 BTC/USDT:USDT;也可带交易所前缀 binance:BTC/USDT:USDT |
| exchange | string | 可选 | 交易所名:bitget / binance;不传用默认交易所 |
data/derivatives/ 目录。# 获取 BTC 衍生品数据(默认交易所) GET /api/derivatives?symbol=BTC/USDT:USDT # 指定交易所 binance GET /api/derivatives?symbol=BTC/USDT:USDT&exchange=binance
{
"exchange": "bitget",
"symbol": "BTC/USDT:USDT",
"timestamp": 1719705600000,
"datetime": "2024-06-30T00:00:00Z",
"funding_rate": 0.0001,
"open_interest": 35120000000.0,
"oi_change_pct": 3.52,
"basis": 8.5
}
| 字段 | 类型 | 说明 |
|---|---|---|
| funding_rate | float | 当前资金费率(每 8 小时) |
| open_interest | float | 当前持仓量(USD) |
| oi_change_pct | float | 24 小时持仓量变化百分比 |
| basis | float | 期货-现货年化基差(%) |
5 个情绪面指标,覆盖 19 个 Binance USDT-M 币对,每 15 分钟刷新。仅 Binance 提供(无需 exchange 参数)。
| 指标 metric | 周期 | 含义 | 字段 | 历史深度 |
|---|---|---|---|---|
taker_buy_sell_ratio | 15m | 主动买卖量比 | buy_sell_ratio, buy_vol, sell_vol | 30 天 |
open_interest_history | 15m | 持仓量历史 | open_interest_amount, open_interest_value | 30 天 |
long_short_account_ratio | 1h | 全球多空账户比 | long_account, short_account, long_short_ratio | 30 天 |
top_long_short_position_ratio | 1h | 大户多空持仓比 | long_account, short_account, long_short_ratio | 30 天 |
funding_rate_history | 8h | 资金费率历史 | funding_rate, mark_price | 7 年(2019+) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 可选 | 交易对,默认 BTC/USDT:USDT |
GET /api/sentiment/latest?symbol=BTC/USDT:USDT
{
"symbol": "BTC/USDT:USDT",
"data": {
"taker_buy_sell_ratio": {"buy_sell_ratio": 1.71, "buy_vol": 341.85, "sell_vol": 199.69, "datetime": "2026-09-10T09:15:00Z"},
"long_short_account_ratio": {"long_short_ratio": 1.495, "long_account": 0.5992, "short_account": 0.4008, ...},
"open_interest_history": {"open_interest_amount": 105237.53, "open_interest_value": 8226912023.79, ...},
"funding_rate_history": {"funding_rate": 0.0000787, "mark_price": 78071.12, ...}
}
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| metric | string | 是 | 指标名,见上表 |
| symbol | string | 可选 | 交易对,默认 BTC/USDT:USDT |
| limit | int | 可选 | 返回最近 N 条,默认 500(上限 2000) |
| start | int | 可选 | 起始毫秒时间戳 |
| end | int | 可选 | 结束毫秒时间戳 |
# 最近 10 条(默认按时间升序返回,data[-1] 最新) GET /api/sentiment/metrics?metric=taker_buy_sell_ratio&symbol=BTC/USDT:USDT&limit=10 # 指定时间范围(start/end 为毫秒时间戳) GET /api/sentiment/metrics?metric=funding_rate_history&symbol=BTC/USDT:USDT&start=1704067200000&end=1706745600000 # 翻页拉全量历史(limit 上限 2000,资金费率 7672 条需分页) # 第 1 页:最新 2000 条,取 data[0].timestamp 作为下一页 end GET /api/sentiment/metrics?metric=funding_rate_history&symbol=BTC/USDT:USDT&limit=2000 # 第 2 页:end = 上一页最早 timestamp - 1,重复直到 count < 2000 GET /api/sentiment/metrics?metric=funding_rate_history&symbol=BTC/USDT:USDT&limit=2000&end=1710000000000
{
"metric": "taker_buy_sell_ratio",
"symbol": "BTC/USDT:USDT",
"period": "15m",
"count": 10,
"data": [
{"timestamp": 1789031700000, "datetime": "2026-09-10T09:15:00Z", "buy_sell_ratio": 1.71, "buy_vol": 341.85, "sell_vol": 199.69},
...
]
}
列出所有指标及每个币对当前缓存的数据条数。
GET /api/sentiment/available
{
"metrics": {
"taker_buy_sell_ratio": {"BTC/USDT:USDT": 2977, "ETH/USDT:USDT": 2977, ...},
"funding_rate_history": {"BTC/USDT:USDT": 7672, ...}
}
}
连接 WebSocket 后,通过 JSON 消息进行订阅管理。服务端在数据更新时主动推送最新 K 线。
{
"action": "subscribe",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m",
"exchange": "bitget" // 可选,也可写 symbol="bitget:BTC/USDT:USDT"
}
{
"action": "unsubscribe",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m",
"exchange": "bitget" // 可选
}
{ "action": "ping" }
{
"type": "subscribed",
"exchange": "bitget",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m"
}
{
"type": "snapshot",
"exchange": "bitget",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m",
"data": [ ... ]
}
{
"type": "kline",
"exchange": "bitget",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m",
"data": [ ... ]
}
{ "type": "pong" }
{ "type": "error", "message": "..." }
// 连接 const ws = new WebSocket("ws://localhost:9009/ws"); ws.onopen = () => { // 订阅 BTC 1m K 线 ws.send(JSON.stringify({ action: "subscribe", symbol: "BTC/USDT:USDT", timeframe: "1m", exchange: "bitget" })); }; ws.onmessage = (event) => { const msg = JSON.parse(event.data); if (msg.type === "kline") { console.log(msg.data); // 最新 K 线数组 } };
以下是完整的周期对照表:
| 基础周期 | 合成衍生周期 |
|---|---|
1m | 2m, 3m, 4m, 5m, 10m, 15m, 20m, 25m, 30m, 45m |
1h | 2h, 3h, 4h, 5h, 6h, 7h, 8h, 9h, 10h, 11h, 12h, 16h, 20h |
1d | 2d, 3d, 4d, 5d, 6d |
1w | 2w, 3w |
衍生周期由对应基础周期的 K 线通过 OHLCV 聚合合成,查询方式与基础周期完全一致。