跳转至

同花顺 Level2 盘口推送

来源同步:/Users/mac/Projects/chatgpt-codex/doc/wss_ThsLevel2OrderBook.md

所属接口集:同花顺 Level2 盘口推送

wss://stock-data-api.aibot6.cn/ws/ths/level2/orderbook/

认证方式

Bearer Token(详见 认证与签名):连接参数 token=...

接口概述

订阅制推送同花顺 Level2 买卖盘口(单股)。卖盘 / 买盘分页相互独立;服务端分别请求源拆口并合并推送,结构仍为 data.asks + data.bids

  • 源接口:
  • 卖盘:GET {THS_MAIN_MONITOR_BASE_URL}/api/v1/level2/order-book/{code6}/asks?page=&page_size=
  • 买盘:GET {THS_MAIN_MONITOR_BASE_URL}/api/v1/level2/order-book/{code6}/bids?page=&page_size=
  • 缓存 Key:
  • {REDIS_KEY_PREFIX}:ths:level2:orderbook:{code6}:asks:{page}:{page_size}
  • {REDIS_KEY_PREFIX}:ths:level2:orderbook:{code6}:bids:{page}:{page_size}
  • 刷新间隔:THS_LEVEL2_POLL_MS(默认 5000);过期才拉源;拉源失败不覆盖旧缓存
  • Redis 键硬 TTL:THS_REDIS_TTL_SEC(默认 86400=24h)
  • 全档大单 level:独立缓存 {REDIS_KEY_PREFIX}:ths:level2:bigdata_levels:{code6}:{asks|bids};刷新间隔 THS_LEVEL2_BIGDATA_LEVELS_POLL_MS(默认 10000
  • 大单金额阈值:THS_LEVEL2_BIGDATA_AMOUNT(默认 2000000 元)
  • 仅单股id 必填;同 id 新连接顶替旧连接
  • 每侧默认每页 10 档;*_page_size 范围 5~30
  • 不再支持旧参数 page / page_size

ws/intraday/1m/ 的差异:分时 id 可省(默认 anonymous);本接口 必须 传入业务 id

ws-proxy:透明中转,保留 QS 与 subscribe 消息即可,无需为拆分页单独改代理。

连接参数

参数 类型 必填 说明
token string API Token
id string 用户标识;缺失关连接码 4002
code string 否* 6 位股票代码;建议建连 QS 带上。别名:stock_code / stockcode / codes(取第一只)
ask_page int 卖盘页码,默认 1
ask_page_size int 卖盘每页档位数,默认 10(5~30)
bid_page int 买盘页码,默认 1
bid_page_size int 买盘每页档位数,默认 10(5~30)

* 未带 code 且未 subscribe 时连接可建立,但不会推盘口。

示例

wss://stock-data-api.aibot6.cn/ws/ths/level2/orderbook/?token=...&id=user_1&code=603690&ask_page=1&ask_page_size=10&bid_page=2&bid_page_size=5

关闭码

说明
4001 鉴权失败
4002 缺少 id
4003 id 被新连接顶替

消息格式

发送(客户端→服务端)

订阅 / 切换 / 独立翻页subscribeset):

{
  "action": "subscribe",
  "code": "603690",
  "ask_page": 1,
  "ask_page_size": 10,
  "bid_page": 2,
  "bid_page_size": 5
}

仅翻买盘示例(卖盘页码保持不变):

{
  "action": "subscribe",
  "code": "603690",
  "bid_page": 3
}

取消订阅

{ "action": "unsubscribe" }

字段 类型 必填 说明
action string subscribe / set / unsubscribe
code string subscribe 时是 6 位代码
ask_page / ask_page_size int 更新卖盘分页;不传则保持当前
bid_page / bid_page_size int 更新买盘分页;不传则保持当前

接收(服务端→客户端)

外层包装 A;data 为合并后的整包(买卖独立 pagination / summary):

{
  "code": 1,
  "message": "success",
  "data": {
    "success": true,
    "source": "ths_order500",
    "unit": {"share": "股", "lot": "手", "shares_per_lot": 100},
    "pagination": {
      "asks": {
        "page": 1,
        "page_size": 10,
        "start_level": 1,
        "end_level": 10,
        "returned_levels": 10,
        "has_more": true,
        "next_page": 2
      },
      "bids": {
        "page": 2,
        "page_size": 5,
        "start_level": 6,
        "end_level": 10,
        "returned_levels": 5,
        "has_more": true,
        "next_page": 3
      }
    },
    "summary": {
      "asks": {
        "side": "ask",
        "level_count": 259,
        "total_volume_share": 2928000,
        "total_volume_lot": 29280.0,
        "display_total_volume_lot": 29280,
        "total_amount_yuan": 80994424.0,
        "total_amount_wan": 8099.4424,
        "display_total_amount_wan": 8099.4,
        "average_price": 27.66203005464481,
        "display_average_price": 27.66,
        "bigdata_levels": [1, 5]
      },
      "bids": {
        "side": "bid",
        "level_count": 159,
        "total_volume_lot": 12606.07,
        "total_amount_wan": 3201.102676,
        "display_average_price": 25.39,
        "bigdata_levels": [2]
      }
    },
    "data": {
      "stockcode": "603690",
      "free_float_shares": 123456789,
      "asks": [
        {
          "level": 1,
          "price": 26.06,
          "total_volume_share": 22000,
          "total_volume_lot": 220.0,
          "display_total_volume_lot": 220,
          "bigdata_num": 0,
          "orders": [
            {"position": 1, "volume_share": 1300, "volume_lot": 13.0, "amount": 33878.0}
          ]
        }
      ],
      "bids": []
    }
  }
}

透传 / 派生字段:

字段 位置 说明
summary.asks / summary.bids pagination 同级 源拆口 data.summary 透传(全档汇总:档位数/总量/总额/均价等)
summary.asks.bigdata_levels / summary.bids.bigdata_levels 各侧 summary 内 全档扫描得到的 bigdata_num≠0level 列表(独立 Redis,默认每 10s 刷新);无则为 []。前端可用 page = ceil(level / page_size) 跳到对应分页再取队列
free_float_shares data.data(与 stockcode 同级) Redis bigdata;交易日当天 / 非交易日上个交易日;无值 null
orders[].amount 档内明细 price × volume_share(元)
bigdata_num orders 同级 仅当前页该档amount > THS_LEVEL2_BIGDATA_AMOUNT 条数;无则为 0
  • 推送间隔:默认 5000msTHS_LEVEL2_POLL_MS
  • 单侧源失败:该侧用旧缓存;双侧皆无则跳过本轮
  • 尚未订阅代码时:空转等待,不推

subscribecode 时回:

{"code": 0, "message": "code is required", "data": null}

环境变量 / 配置(MARKET_CONF

变量 默认 说明
THS_MAIN_MONITOR_BASE_URL http://192.168.7.50:8802 与同花顺大单同源根地址
THS_LEVEL2_TIMEOUT_SEC 5 单次拉源超时秒
THS_LEVEL2_POLL_MS 5000 源刷新间隔 / 软新鲜度 / WSS 推送间隔(毫秒)
THS_LEVEL2_BIGDATA_AMOUNT 2000000 档内大单金额阈值(元);用于 bigdata_num 与全档 bigdata_levels
THS_LEVEL2_BIGDATA_LEVELS_POLL_MS 10000 全档大单 level 扫描刷新间隔(毫秒)
THS_REDIS_TTL_SEC 86400 ths:level2:* Redis 键硬过期(秒,默认 24h)

相关