K 线流
订阅指定交易对与时间间隔的 K 线(OHLCV)推送。
WebSocket 地址:wss://stream.pipai.io/ws
订阅
订阅:
{
"op": "subscribe",
"channel": "market.klines",
"params": { "symbol": "BTCUSDT", "interval": "1m" },
"req_id": "client-201"
}
取消订阅:
{
"op": "unsubscribe",
"channel": "market.klines",
"params": { "symbol": "BTCUSDT", "interval": "1m" },
"req_id": "client-202"
}
订阅参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
symbol | string | 是 | 交易对,大写,例如 BTCUSDT。 |
interval | enum | 是 | 取值之一:1m、3m、5m、15m、30m、1h、2h、4h、6h、8h、12h、1d、3d、1w、1M。 |
消息体
进行中的 K 线更新:
{
"event": "kline",
"ts": 1745923200250,
"symbol": "BTCUSDT",
"interval": "1m",
"kline": {
"open_time": 1745923200000,
"close_time": 1745923259999,
"open": "67432.15",
"high": "67450.50",
"low": "67430.00",
"close": "67442.80",
"volume": "12.3421",
"quote_volume": "832104.55",
"trades": 142,
"taker_buy_volume": "6.8810",
"taker_buy_quote_volume": "464012.31",
"is_closed": false
}
}
K 线收盘时的最终推送:
{
"event": "kline",
"ts": 1745923260001,
"symbol": "BTCUSDT",
"interval": "1m",
"kline": {
"open_time": 1745923200000,
"close_time": 1745923259999,
"open": "67432.15",
"high": "67498.80",
"low": "67410.00",
"close": "67498.80",
"volume": "201.7710",
"quote_volume": "13612498.55",
"trades": 2014,
"taker_buy_volume": "112.4421",
"taker_buy_quote_volume": "7588321.42",
"is_closed": true
}
}
消息字段
| 字段 | 类型 | 说明 |
|---|---|---|
event | string | 恒为 "kline"。 |
ts | integer | 服务端推送时间,Unix 毫秒(ms)。 |
symbol | string | 交易对,大写。 |
interval | string | K 线时间间隔,回显订阅参数。 |
kline | object | K 线数据对象(见下文)。 |
kline 对象
| 字段 | 类型 | 说明 |
|---|---|---|
open_time | integer | K 线开始时间,Unix 毫秒(ms)。 |
close_time | integer | K 线结束时间,Unix 毫秒(ms)(K 线的最后一毫秒)。 |
open | string (decimal) | 开盘价。 |
high | string (decimal) | 当前 K 线区间内的最高价。 |
low | string (decimal) | 当前 K 线区间内的最低价。 |
close | string (decimal) | 最近成交价。 |
volume | string (decimal) | 当前 K 线累计成交量(基础资产)。 |
quote_volume | string (decimal) | 当前 K 线累计成交量(计价资产)。 |
trades | integer | 当前 K 线区间内的成交笔数。 |
taker_buy_volume | string (decimal) | 主动买入成交量(基础资产)。 |
taker_buy_quote_volume | string (decimal) | 主动买入成交量( 计价资产)。 |
is_closed | boolean | 仅在该 K 线最终推送时为 true,其余情况下为 false。 |
推送频率
K 线形成期间大约每 250 ms 推送一次,外加该 K 线收盘后立即发送一次 is_closed: true 的最终推送。如果自上次推送以来没有新的成交,可能会跳过某次更新——切勿假定严格的推送节奏。
重连
若在 K 线进行中连接断开,中间的更新会丢失,但重连后下一次推送(约 250 ms 内)会携带当前 K 线的完整累计状态,因此进行中的 K 线对消费者来说是可自愈的。
对于断连期间可能错过的已收盘 K 线,可使用 GET /v1/market/klines?symbol=...&interval=...&startTime=<last_known_close_time> 进行回填。