正文
在跨境指数交易、美股联动策略、海外资产风险监控开发中,小纳指 NQ 是高频使用的热门外盘股指品种。多数交易者、开发人员日常习惯称其通用简称 NQ,但对接行情接口时需要使用平台内部专属编码,本文清晰区分市场通用名称与接口订阅代码,完整实现长连接心跳、订阅、实时行情推送、断线自动重连全套逻辑,代码可直接部署服务器 7×24 小时不间断运行,附带完整返回 JSON 结构与全部字段详细解读,同时说明股指类数据独有特征。
一、品种编码对应说明
- 市场通用交易简称:NQ(小型纳斯达克指数,俗称小纳指)
- 接口订阅专用编码:HX_NQ
- WebSocket 统一长连接地址:ws://39.107.99.235/ws
二、长连接通信硬性规范
- 链路存活规则:客户端每 10 秒发送
{"ping": 10位Unix秒级时间戳},长期无心跳报文会被服务端主动断开; - 订阅流程:连接成功回调内仅发送一次订阅指令
{"Key":"HX_NQ"},无需重复发送; - 推送机制:仅 NQ 点位、盘口数据发生变动时下发数据包,无行情变动不会产生多余网络流量;
- 股指数据特性:无大量逐笔成交数据,买卖五档深度字段为空,核心以点位、日内涨跌数据为主。
三、完整可运行 Python 监听代码
python
import websocket
import json
import time
import threading
# 市场通用简称:NQ 小纳指,接口订阅编码
subscribe_code = "HX_NQ"
def heartbeat_task(ws_conn):
# 独立守护子线程循环发送心跳包,维持链路在线
while True:
try:
timestamp = int(time.time())
heartbeat_msg = json.dumps({"ping": timestamp})
ws_conn.send(heartbeat_msg)
except Exception:
# 心跳发送失败仅跳过本次,不中断循环
pass
time.sleep(10)
def on_open(ws_conn):
print("长连接创建成功,准备订阅NQ小型纳斯达克指数(接口编码HX_NQ)")
# 组装订阅报文发送至行情服务
sub_payload = json.dumps({"Key": subscribe_code})
ws_conn.send(sub_payload)
# 启动心跳守护线程
heartbeat_thread = threading.Thread(target=heartbeat_task, args=(ws_conn,), daemon=True)
heartbeat_thread.start()
def on_message(ws_conn, msg_text):
"""接收并解析小纳指实时推送行情"""
try:
raw_data = json.loads(msg_text)
if "body" not in raw_data:
return
quote = raw_data["body"]
print("================ NQ 小纳指 实时行情更新 ================")
print(f"接口内部编码:{quote['StockCode']} | 市场通用简称:NQ(小型纳指)")
print(f"实时指数点位:{quote['Price']}")
print(f"当日开盘点位:{quote['Open']}")
print(f"前一交易日收盘点位:{quote['LastClose']}")
print(f"日内最高点位:{quote['High']},日内最低点位:{quote['Low']}")
print(f"当日涨跌点数:{quote['Diff']},涨跌幅百分比:{quote['DiffRate']}%")
print(f"行情更新标准时间:{quote['Time']},时间戳:{quote['LastTime']}")
print("注:股指品种无五档盘口、成交量数据")
print("=========================================================\n")
except json.JSONDecodeError:
print("收到非标准格式报文,跳过解析流程")
except Exception as err:
print("行情数据解析出现异常:", str(err))
def on_close(ws_conn, close_code, close_info):
"""连接断开后自动延时重连"""
print(f"NQ小纳指行情链路断开,断开标识{close_code},3秒后执行重连逻辑")
time.sleep(3)
start_nq_ws()
def on_error(ws_conn, error_info):
print("WebSocket底层通信发生异常:", str(error_info))
def start_nq_ws():
"""程序入口,初始化长连接实例"""
ws_app = websocket.WebSocketApp(
url="ws://39.107.99.235/ws",
on_open=on_open,
on_message=on_message,
on_close=on_close,
on_error=on_error
)
ws_app.run_forever()
if __name__ == "__main__":
start_nq_ws()
四、服务端推送完整 JSON 数据包示例
bash
{
"body": {
"StockCode": "HX_NQ",
"Price": 19426.75,
"Open": 19351.00,
"LastClose": 19338.25,
"High": 19462.50,
"Low": 19320.00,
"Time": "2026-07-10 15:21:46",
"LastTime": 1783744906,
"BP1": "",
"BV1": "",
"SP1": "",
"SV1": "",
"TotalVol": "",
"Diff": 88.50,
"DiffRate": 0.46
}
}
五、全部字段详细业务释义
- StockCode:平台内部接口编码 HX_NQ,对外通用交易名称 NQ 小纳指;
- Price:指数实时最新点位,是趋势判断核心数值;
- Open / LastClose:当日开盘点位、上一交易日收盘基准点位;
- High / Low:截至当前交易日的最高、最低波动点位;
- Time / LastTime:格式化可读时间、10 位秒级时间戳,用于日志与时序排序;
- BP1、SP1、TotalVol:股指类品种无盘口、成交量数据,字段为空字符串;
- Diff:当日涨跌绝对点数,DiffRate:标准化涨跌幅百分比。
六、程序线上部署与业务拓展说明
- 容错机制:多层异常捕获,畸形数据包、心跳发送失败都不会直接终止整个监听程序,适合后台长期驻留;
- 重连逻辑:断连设置 3 秒冷却时间,避免本地断网、服务器波动时高频重复创建连接;
- 适用业务:美股联动量化脚本、跨境资产监控后台、网页外盘指数盯盘页面、隔夜风险预警工具;
- 拓展方式:如需同时监控德指 DAX、恒指 HSI 等其他股指,仅修改 subscribe_code 参数,多个编码使用英文逗号分隔,数据解析代码无需任何改动;
- 时段适配:纳指分美盘、盘前盘后多个交易时段,长连接全天候同步全部时段点位,无需手动启停程序。