跳到主要内容

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

订阅参数

名称类型必填说明
symbolstring交易对,大写,例如 BTCUSDT
intervalenum取值之一:1m3m5m15m30m1h2h4h6h8h12h1d3d1w1M

消息体

进行中的 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
}
}

消息字段

字段类型说明
eventstring恒为 "kline"
tsinteger服务端推送时间,Unix 毫秒(ms)。
symbolstring交易对,大写。
intervalstringK 线时间间隔,回显订阅参数。
klineobjectK 线数据对象(见下文)。

kline 对象

字段类型说明
open_timeintegerK 线开始时间,Unix 毫秒(ms)。
close_timeintegerK 线结束时间,Unix 毫秒(ms)(K 线的最后一毫秒)。
openstring (decimal)开盘价。
highstring (decimal)当前 K 线区间内的最高价。
lowstring (decimal)当前 K 线区间内的最低价。
closestring (decimal)最近成交价。
volumestring (decimal)当前 K 线累计成交量(基础资产)。
quote_volumestring (decimal)当前 K 线累计成交量(计价资产)。
tradesinteger当前 K 线区间内的成交笔数。
taker_buy_volumestring (decimal)主动买入成交量(基础资产)。
taker_buy_quote_volumestring (decimal)主动买入成交量(计价资产)。
is_closedboolean仅在该 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> 进行回填。