Python 实现股票 Tick 级实时行情抓取
使用 Python 对接 WebSocket 接口获取股票 Tick 级实时行情。通过安装 websocket-client 和 pandas 依赖库,连接 AllTick 免费 API 订阅股票标的,解析 JSON 数据并存储。利用 Pandas 将列表转为 DataFrame 进行统计分析,支持多标的监控、异动预警及数据持久化。该方案无需付费,适用于量化开发与数据分析场景。

使用 Python 对接 WebSocket 接口获取股票 Tick 级实时行情。通过安装 websocket-client 和 pandas 依赖库,连接 AllTick 免费 API 订阅股票标的,解析 JSON 数据并存储。利用 Pandas 将列表转为 DataFrame 进行统计分析,支持多标的监控、异动预警及数据持久化。该方案无需付费,适用于量化开发与数据分析场景。

在金融量化开发、股票数据分析、策略回测等工作中,实时、精准的股票行情数据是开展后续工作的核心基础。开发者常遇到数据获取的痛点:付费接口成本高、轮询取数延迟大、零散数据格式乱、自研爬虫易踩坑。
本文介绍一套基于 Python 对接 AllTick 免费股票 API 的 WebSocket 接口的解决方案,实现 tick 级实时行情的抓取、整理与分析。
相比其他免费股票数据渠道,AllTick 的免费 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 各类工具,实现更多功能:
matplotlib/plotly:绘制股票实时行情 K 线图、折线图,实现数据可视化;TA-Lib:计算 MA、MACD、RSI 等技术指标,为量化策略开发提供依据;这套基础代码的扩展性极强,仅需简单修改和新增代码,即可适配更复杂的开发场景,推荐几个实用的扩展方向,供大家参考:
在symbols列表中添加数十甚至上百只股票标的,实现多股票、多板块的实时行情批量抓取,适配行业轮动、指数成分股监测等需求。
添加价格涨跌幅判断逻辑,当标的价格波动达到设定阈值(如涨 5%、跌 3%)时,触发控制台提醒、邮件 / 短信预警,适配实盘交易监控。
新增文件 / 数据库写入代码,将 DataFrame 格式的行情数据保存为 CSV、Excel 文件,或写入 MySQL、SQLite 数据库,实现历史行情数据的长期积累。
结合Plotly Dash或Streamlit,将实时行情数据封装为可视化网页看板,实现行情数据的可视化展示与实时刷新,更直观地监测市场变化。
on_message函数中添加异常捕获逻辑,跳过错误数据;本文分享的Python+AllTick 免费 API方案,是一套低成本、高实用的股票实时数据获取解决方案,核心亮点如下:
对于从事金融量化开发、股票数据分析的开发者来说,这套方案能有效解决数据获取的痛点,让大家把更多精力放在核心的业务开发和策略研究上。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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