加密货币 K 线数据 HTTP + WebSocket API
返回服务名称、交易所、交易对列表、可用周期及就绪状态。
{
"service": "Data Provider",
"exchange": "binance",
"symbols": ["BTC/USDT:USDT", "ETH/USDT:USDT", ...],
"base_timeframes": ["1m", "1h", "1d", "1w"],
"derived_timeframes": ["5m", "15m", "4h", ...],
"timeframes": ["1m", "1h", ..., "5m", "15m", ...],
"ready": true
}
返回服务健康状态,与 / 相同结构,适合负载均衡探测器。
{
"status": "ok",
"exchange": "binance",
"symbols": ["BTC/USDT:USDT", ...],
"ready": true,
...
}
返回基础周期(交易所直接拉取)和衍生周期(合成生成)的完整列表。
{
"base_timeframes": ["1m", "1h", "1d", "1w"],
"derived_timeframes": ["5m", "15m", "4h", ...],
"timeframes": ["1m", "1h", ..., "5m", "15m", ...]
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 是 | 交易对,如 BTC/USDT:USDT |
| tf | string | 否 | 时间周期,默认 1m。支持基础及衍生周期 |
| start | int | 可选 | 开始时间戳(毫秒) |
| end | int | 可选 | 结束时间戳(毫秒) |
| limit | int | 可选 | 限制返回的 K 线数量(返回最后 N 根) |
# 获取 BTC 最近 100 根 5 分钟 K 线 GET /api/candles?symbol=BTC/USDT:USDT&tf=5m&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 | 成交量 |
连接 WebSocket 后,通过 JSON 消息进行订阅管理。服务端在数据更新时主动推送最新 K 线。
{
"action": "subscribe",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m"
}
{
"action": "unsubscribe",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m"
}
{ "action": "ping" }
{
"type": "subscribed",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m"
}
{
"type": "snapshot",
"symbol": "BTC/USDT:USDT",
"timeframe": "1m",
"data": [ ... ]
}
{
"type": "kline",
"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" })); }; 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 聚合合成,查询方式与基础周期完全一致。