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 實時行情接口獲取最新狀態。

相關文檔