Skip to content

数据格式

WebSocket 行情推送使用 JSON 消息。客户端应先按顶层 type 字段区分消息类型,再根据 symboldata 解析具体行情数据。

INFO

不同市场、品类和行情权限下,字段可能缺省、置 0、为空字符串,或只返回部分数组内容。客户端解析时应保持兼容:未知字段忽略,可选字段判空,不要假设所有消息都包含相同字段集合。

通用消息结构

大多数标的级行情推送使用以下结构:

json
{
  "type": "QUOTE",
  "symbol": "US.AAPL",
  "data": {}
}
字段类型说明
typestring推送消息类型,例如 QUOTEORDER_BOOKTICKERKLINE
symbolstring标的代码,格式为 {market}.{code},例如 HK.00700US.AAPL。部分市场维度消息没有该字段。
dataobject推送数据主体。不同 type 的结构不同。

客户端建议按如下方式分发:

text
收到 WebSocket message
-> JSON decode
-> switch message.type
 -> QUOTE: 解析基础报价
 -> ORDER_BOOK: 解析买卖盘
 -> TICKER: 解析逐笔成交
 -> KLINE: 解析 K 线
 -> BROKER_QUEUE: 解析经纪队列
 -> MARKET_STATE: 解析市场状态
 -> default: 记录日志并忽略

消息类型

type说明是否绑定标的
QUOTE基础报价。
ORDER_BOOK买卖盘。
TICKER逐笔成交。
KLINE当前 K 线。
BROKER_QUEUE经纪队列。
MARKET_STATE市场状态。

BROKER_QUEUEMARKET_STATE 通常由服务端基于已订阅标的、市场和权限决定是否推送,客户端不需要单独传入对应订阅字段。

时间与数值

类型约定
时间戳字段名以 _ms 结尾时,通常表示 Unix 毫秒时间戳。
价格使用十进制数值。展示时请结合市场价格精度处理。
成交量使用数值类型。不同市场的单位可能不同,请按市场规则展示。
金额成交额、成交金额等字段使用数值类型。
布尔值例如 suspension 表示是否停牌。
枚举例如 directiontypestatus 等字段使用字符串枚举。

QUOTE 基础报价

基础报价推送标的的实时报价和状态信息。

示例

json
{
  "type": "QUOTE",
  "symbol": "US.AAPL",
  "data": {
    "data_time_ms": 1710000000000,
    "last_price": 180.12,
    "open_price": 178.5,
    "high_price": 181.2,
    "low_price": 177.9,
    "prev_close_price": 179.66,
    "volume": 12345678,
    "turnover": 2223456789.12,
    "suspension": false,
    "sec_status": "NORMAL"
  }
}

字段说明

字段类型说明
data.data_time_msinteger行情数据时间,Unix 毫秒时间戳。
data.last_pricenumber最新价。
data.open_pricenumber开盘价。
data.high_pricenumber最高价。
data.low_pricenumber最低价。
data.prev_close_pricenumber昨收价。
data.volumenumber成交量。
data.turnovernumber成交额。
data.suspensionboolean是否停牌。
data.sec_statusstring证券状态。
data.option_dataobject期权相关字段。仅适用于期权品类。
data.pre_marketobject盘前行情字段。仅在适用市场和时段返回。
data.after_marketobject盘后行情字段。仅在适用市场和时段返回。
data.overnightobject夜盘行情字段。仅在适用市场和时段返回。
data.future_dataobject期货相关字段。仅适用于期货品类。

TIP

QUOTE 字段与 REST 实时报价 的 Quote 基础报价语义对齐。需要一次性获取当前完整状态时,可使用 REST 接口补齐。

ORDER_BOOK 买卖盘

买卖盘推送标的的实时盘口列表。返回档数由市场、品类和用户行情权限档(LV1/LV2/LV3)共同决定。

示例

json
{
  "type": "ORDER_BOOK",
  "symbol": "HK.00700",
  "data": {
    "data_time_ms": 1710000000000,
    "ask_list": [
      {
        "price": 320.2,
        "volume": 1000,
        "order_count": 3
      }
    ],
    "bid_list": [
      {
        "price": 320.0,
        "volume": 800,
        "order_count": 2
      }
    ]
  }
}

字段说明

字段类型说明
data.data_time_msinteger买卖盘数据时间,Unix 毫秒时间戳。
data.ask_listobject[]卖盘列表,按档位排序。
data.bid_listobject[]买盘列表,按档位排序。
data.ask_list[].pricenumber卖盘价格。
data.ask_list[].volumenumber卖盘数量。
data.ask_list[].order_countnumber该档订单数量。
data.ask_list[].mpidstring做市商或券商标识。仅部分市场或深度行情返回。
data.bid_list[].pricenumber买盘价格。
data.bid_list[].volumenumber买盘数量。
data.bid_list[].order_countnumber该档订单数量。
data.bid_list[].mpidstring做市商或券商标识。仅部分市场或深度行情返回。

INFO

普通买卖盘和深度买卖盘都使用 ORDER_BOOK 消息类型。客户端应根据实际返回的档数、字段和用户权限判断展示方式。

TICKER 逐笔成交

逐笔成交推送标的的成交明细。服务端可能将多笔成交合并到同一条消息的 ticker_list 中。

示例

json
{
  "type": "TICKER",
  "symbol": "US.AAPL",
  "data": {
    "ticker_list": [
      {
        "time_ms": 1710000000123,
        "sequence": 123456,
        "direction": "BUY",
        "price": 180.12,
        "volume": 100,
        "turnover": 18012,
        "type": "NORMAL"
      }
    ]
  }
}

字段说明

字段类型说明
data.ticker_listobject[]逐笔成交列表。
data.ticker_list[].time_msinteger成交时间,Unix 毫秒时间戳。
data.ticker_list[].sequenceinteger成交序号。可用于去重或排序。
data.ticker_list[].directionstring买卖方向,常见值:BUYSELLNEUTRAL
data.ticker_list[].pricenumber成交价格。
data.ticker_list[].volumenumber成交数量。
data.ticker_list[].turnovernumber成交额。
data.ticker_list[].typestring成交类型,例如 NORMALAUTO_MATCHODD_LOTAUCTION 等。

TIP

不要假设一条 TICKER 消息只包含一笔成交。高活跃标的可能批量推送多笔成交,客户端渲染时建议做节流和增量合并。

KLINE 当前 K 线

K 线推送当前周期的 K 线更新。订阅维度由 symbol + period + adjust 确定。

示例

json
{
  "type": "KLINE",
  "symbol": "US.AAPL",
  "data": {
    "period": "1m",
    "adjust": "none",
    "kl_list": [
      {
        "time_ms": 1710000000000,
        "open_price": 180.0,
        "high_price": 180.5,
        "low_price": 179.8,
        "close_price": 180.12,
        "volume": 12345,
        "turnover": 2223456.78
      }
    ]
  }
}

字段说明

字段类型说明
data.periodstringK 线周期,例如 1m5m1D
data.adjuststring复权方式,例如 noneforward_exclude_dividend
data.kl_listobject[]K 线列表。通常包含当前更新的 K 线。
data.kl_list[].time_msintegerK 线时间,Unix 毫秒时间戳。
data.kl_list[].open_pricenumber开盘价。
data.kl_list[].high_pricenumber最高价。
data.kl_list[].low_pricenumber最低价。
data.kl_list[].close_pricenumber收盘价或当前最新价。
data.kl_list[].volumenumber成交量。
data.kl_list[].turnovernumber成交额。
data.kl_list[].settle_pricenumber结算价。仅部分期货等品类返回。

常用周期

周期说明
1m1 分钟
3m3 分钟
5m5 分钟
10m10 分钟
15m15 分钟
30m30 分钟
60m60 分钟
120m120 分钟
180m180 分钟
240m240 分钟
1D日 K
1W周 K
1M月 K
1Q季 K
1Y年 K

部分市场或品类可能支持盘前盘后、暗盘、夜盘等扩展周期。是否可用以实际订阅响应和权限为准。

BROKER_QUEUE 经纪队列

经纪队列主要用于部分港股买卖盘场景,表示买卖盘对应的经纪席位队列。

示例

json
{
  "type": "BROKER_QUEUE",
  "symbol": "HK.00700",
  "data": {
    "data_time_ms": 1710000000000,
    "ask_brokers": [
      {
        "rank": 1,
        "broker_id": "8465",
        "broker_name": "Broker A"
      }
    ],
    "bid_brokers": [
      {
        "rank": 1,
        "broker_id": "8465",
        "broker_name": "Broker A"
      }
    ]
  }
}

字段说明

字段类型说明
data.data_time_msinteger数据时间,Unix 毫秒时间戳。
data.ask_brokersobject[]卖盘经纪队列。
data.bid_brokersobject[]买盘经纪队列。
data.ask_brokers[].rankinteger排名。
data.ask_brokers[].broker_idstring经纪商 ID。
data.ask_brokers[].broker_namestring经纪商名称,可能缺省。
data.bid_brokers[].rankinteger排名。
data.bid_brokers[].broker_idstring经纪商 ID。
data.bid_brokers[].broker_namestring经纪商名称,可能缺省。

BROKER_QUEUE 不作为普通订阅请求字段传入,通常由服务端基于已订阅的买卖盘能力、市场和权限决定是否返回。

MARKET_STATE 市场状态

市场状态是市场维度消息,不绑定单一标的,因此通常没有 symbol 字段。

示例

json
{
  "type": "MARKET_STATE",
  "data": {
    "market": "US",
    "status": "OPEN",
    "trade_date": "2024-03-08"
  }
}

字段说明

字段类型说明
data.marketstring市场标识,例如 USHK 等。
data.statusstring市场交易状态。
data.trade_datestring交易日。

客户端收到 MARKET_STATE 后,可用于更新页面上的市场开收盘状态、交易日提示或订阅数据可用性提示。

兼容性建议

  • type 分发:不同消息结构差异较大,不要用同一个强类型模型解析所有推送。
  • 未知字段忽略:服务端可能新增字段,客户端应保持向前兼容。
  • 未知 type 兼容:记录日志后跳过,避免因新增消息类型导致连接处理异常。
  • 可选字段判空:期权、期货、盘前盘后、夜盘、经纪队列等字段只在适用场景返回。
  • 数组按空处理ask_listbid_listticker_listkl_list 等数组可能为空。
  • 断线后补齐:推送用于实时更新。断线、重连或解析失败后,可使用 REST 实时行情接口获取最新状态。

相关文档