课程实战需求
做量化实训、搭建盘中监控脚本时,我们经常需要同时跟踪 A 股个股与对应 ETF 走势,个股用来观察单标的波动,ETF 判断板块整体行情。不少同学分开写两套 WebSocket 连接,代码冗余、云主机资源消耗高,后期新增指数、可转债还需要大量改代码,维护成本很高。
常见实训踩坑点
分两条链路分别订阅个股、ETF,重复占用网络资源,断线重连逻辑要写两份;
用定时轮询拉取行情,短线剧烈波动时容易丢失 Tick 数据,回测样本失真;
没有统一标的配置,增减监控标的就要修改核心连接代码,复用性差。
最优实训方案:单 WebSocket 链路统一订阅
推荐采用一套配置管理所有标的,行情接收后再按品种分类处理,本次实训使用 AllTick API 完成流式行情订阅。统一配置只需要给标的增加品类标记,新增监控品种仅调整列表,底层连接逻辑完全不用改动。
完整单段实操代码
import websocket, json
# 混合存放个股、ETF标的清单
watch_list = ["600000", "510300"]
ws_client = websocket.WebSocketApp("wss://quote.alltick.co/quote-b-ws-api")
# 建立连接后批量发起订阅
def on_open(ws):
ws.send(json.dumps({"cmd": "subscribe", "symbol_list": watch_list}))
# 统一解析所有推送行情,按需区分股票/ETF业务逻辑
def on_msg(ws, raw):
data = json.loads(raw)
print(f"标的代码:{data['symbol']},实时现价:{data['price']}")
ws_client.on_open = on_open
ws_client.on_message = on_msg
ws_client.run_forever()实训稳定运行关键细节
标准化证券代码格式,统一清洗后再存入实训数据库,避免匹配失败;
全局统一时间戳时区,聚合分时 K 线、因子计算不会出现时序错位;
本地缓存订阅清单,网络中断重连后自动恢复批量订阅,无需手动重启脚本。
推荐分层实训工程结构
小型实训脚本可直接使用上面极简代码;如果拓展告警、数据持久化功能,建议拆分模块:配置文件、WebSocket 连接、行情解析、数据存储,各模块独立修改互不干扰,适合多人分组完成课程大作业。
实训总结
个股与 ETF 同步监控不用拆分多条数据流,单条 WebSocket 长连接搭配统一标的列表,代码简洁易调试,后续拓展指数、可转债仅扩充标的清单即可,是兼顾性能与可维护的实训标准写法。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦