同花顺 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 被新连接顶替 |
消息格式¶
发送(客户端→服务端)¶
订阅 / 切换 / 独立翻页(subscribe 或 set):
{
"action": "subscribe",
"code": "603690",
"ask_page": 1,
"ask_page_size": 10,
"bid_page": 2,
"bid_page_size": 5
}
仅翻买盘示例(卖盘页码保持不变):
取消订阅:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
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≠0 的 level 列表(独立 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 |
- 推送间隔:默认 5000ms(
THS_LEVEL2_POLL_MS) - 单侧源失败:该侧用旧缓存;双侧皆无则跳过本轮
- 尚未订阅代码时:空转等待,不推
subscribe 缺 code 时回:
环境变量 / 配置(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) |
相关¶
- 同花顺大单 HTTP:
GET /v1/api/monitor/ths_bigorder(见 同花顺主力大单) - 同花顺 Level2 DDE HTTP:
GET /v1/api/monitor/ths_level2_dde(见 同花顺 Level2 DDE) - 分时 WSS:
ws/intraday/1m/(见 1 分钟 K 线推送)