金融量化开发中,实时精准的股票行情数据是核心基础。然而,付费接口成本高、轮询延迟大等问题常困扰开发者。
使用 Python 通过 WebSocket 获取股票 Tick 级实时行情
介绍使用 Python 结合 WebSocket 接口获取股票 Tick 级实时行情的方法。通过安装 websocket-client 和 pandas 库,建立长连接接收推送数据,并利用 Pandas 进行结构化整理与分析。方案支持多标的订阅、价格统计及可视化扩展,适用于量化研究与数据监控场景。

介绍使用 Python 结合 WebSocket 接口获取股票 Tick 级实时行情的方法。通过安装 websocket-client 和 pandas 库,建立长连接接收推送数据,并利用 Pandas 进行结构化整理与分析。方案支持多标的订阅、价格统计及可视化扩展,适用于量化研究与数据监控场景。

金融量化开发中,实时精准的股票行情数据是核心基础。然而,付费接口成本高、轮询延迟大等问题常困扰开发者。
相比其他免费股票数据渠道,该 API 主打 WebSocket 实时推送机制,解决开发者的核心困扰:
本次实操仅需 2 个 Python 核心库,均为金融数据开发的基础必备库,在终端 / 命令行执行以下命令即可安装:
pip install websocket-client pandas
websocket-client:用于建立 WebSocket 长连接,接收 API 的实时行情推送数据;pandas:用于快速实现非结构化数据的结构化整理,以及基础的统计分析。以下是完整的实操代码,已做详细注释,可直接在本地 Python 环境或线上开发平台运行。仅需根据自身需求,修改代码中 symbols 列表的股票标的,即可实现自定义行情订阅。
import websocket
import json
import pandas as pd
# 初始化列表,用于存储 tick 级实时行情数据
tick_data = []
def on_message(ws, message):
"""接收行情推送消息,解析并提取核心字段"""
# 解析 API 推送的 JSON 格式数据
msg = json.loads(message)
# 提取核心行情信息:标的代码、实时价格、时间戳
tick_info = {
"symbol": msg.get("s"), # 股票标的代码
"price": msg.get("p"), # 实时成交价格
"time": msg.get("t") # 交易时间戳
}
tick_data.append(tick_info)
# 实时打印行情,便于开发调试与行情监测
print(f"{tick_info['symbol']} -> {tick_info['price']} @ {tick_info['time']}")
def on_error(ws, error):
"""捕获并打印连接错误,便于问题排查"""
print("接口连接出错:", error)
def on_close(ws, close_status_code, close_msg):
"""打印连接关闭提示,感知接口连接状态"""
print("WebSocket 连接已关闭")
def on_open(ws):
"""建立连接后,发送标的订阅请求"""
# 定义需要订阅的股票标的,可自由增删(支持 A 股、美股)
subscribe_msg = {
"type": "subscribe",
"symbols": ["AAPL", "TSLA", "GOOG"]
}
# 向 API 发送 JSON 格式的订阅请求
ws.send(json.dumps(subscribe_msg))
if __name__ == "__main__":
# AllTick 实时行情 WebSocket 接口地址
ws_url = "wss://realtime.alltick.co/ws"
# 创建 WebSocket 应用,配置回调函数
ws = websocket.WebSocketApp(
ws_url,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
# 保持长连接,持续接收实时行情数据
ws.run_forever()
运行上述代码后,控制台会实时打印订阅标的的行情信息,所有 tick 级数据会自动存入 tick_data 列表,全程无需手动干预。若需要更换监测标的,直接修改 subscribe_msg 中的 symbols 列表即可,例如添加 A 股标的代码。
抓取到的原始数据存储在列表中,无法直接进行深度分析。利用 Pandas 仅需 2 行核心代码,即可将非结构化列表数据转化为结构化 DataFrame 表格,同时可快速实现标的分组、价格统计等基础分析,为后续策略开发、指标计算、数据可视化打下基础。
# 将 tick 级实时数据转换为 Pandas DataFrame 结构化表格
df = pd.DataFrame(tick_data)
# 查看最新 10 条行情数据,快速监测标的行情变化
print(df.tail(10))
# 按股票标的分组,计算各标的实时价格平均值
avg_price = df.groupby("symbol")["price"].mean()
print(avg_price)
整理后的 DataFrame 数据可直接对接 Python 各类工具,实现更多功能:
这套基础代码的扩展性极强,仅需简单修改和新增代码,即可适配更复杂的开发场景,推荐几个实用的扩展方向:
在 symbols 列表中添加数十甚至上百只股票标的,实现多股票、多板块的实时行情批量抓取,适配行业轮动、指数成分股监测等需求。
添加价格涨跌幅判断逻辑,当标的价格波动达到设定阈值(如涨 5%、跌 3%)时,触发控制台提醒、邮件 / 短信预警,适配实盘交易监控。
新增文件 / 数据库写入代码,将 DataFrame 格式的行情数据保存为 CSV、Excel 文件,或写入 MySQL、SQLite 数据库,实现历史行情数据的长期积累。
结合 Plotly Dash 或 Streamlit,将实时行情数据封装为可视化网页看板,实现行情数据的可视化展示与实时刷新,更直观地监测市场变化。
本方案是一套低成本、高实用的股票实时数据获取解决方案,核心亮点如下:
对于从事金融量化开发、股票数据分析的开发者来说,这套方案能有效解决数据获取的痛点,让大家把更多精力放在核心的业务开发和策略研究上。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online