成功接入A股实时行情API获取实时市场数据
最近在做行情监控和简单的数据分析时,我尝试了一种方式去获取 A 股的实时市场数据。作为开发者,最直观的需求就是:怎么能拿到最及时的价格变化,并能方便地处理它。
在实践中,我发现 WebSocket 是比较合适的方案。相比传统的 HTTP 轮询,它可以保持长连接,把行情数据"推"过来,而不是你去"拉"。这样一来,无论是股价波动还是成交量的变化,都能几乎实时地捕捉到。
1. 接入思路
核心流程很简单:
-
建立 WebSocket 连接
-
订阅关注的股票或指数
-
实时接收数据并解析
-
根据需要存储或做分析
需要注意的是,订阅标的最好是自己关心的股票或指数,否则数据量大,处理起来比较麻烦。收到的数据一般是 JSON 格式,需要解析后才能使用。
以 AllTick API提供的 A 股实时行情接口为例,文档里有完整示例,可以直接参考做快速接入。
2. Python 示例
下面是一个 Python 示例,用来接收某只股票的实时价格:
import websocket
import json
# WebSocket 地址
ws_url = "wss://ws.alltick.co/realtime-stock"
# 订阅股票代码
stock_code = "SH600519" # 贵州茅台
def on_message(ws, message):
data = json.loads(message)
if "data" in data:
for item in data["data"]:
print(f"股票: {item['s']}, 最新价: {item['p']}, 成交量: {item['v']}, 时间: {item['t']}")
def on_open(ws):
sub_msg = json.dumps({"type": "subscribe", "symbol": stock_code})
ws.send(sub_msg)
print(f"已订阅 {stock_code} 实时行情")
def on_close(ws):
print("连接已关闭")
ws = websocket.WebSocketApp(
ws_url,
on_open=on_open,
on_message=on_message,
on_close=on_close
)
ws.run_forever()
代码逻辑很直白:连接 → 订阅 → 接收数据 → 打印。收到的数据包含股票代码、最新价格、成交量和时间戳。对于大部分需求,这些信息就够用了。
3. 数据处理和存储
拿到行情数据后,一般会做一些处理:
-
存到本地数据库,用于后续分析或回测
-
做简单统计,比如涨跌幅或成交量变化
-
可视化展示,比如绘制分时图或 K 线
例如用 Pandas 做一个临时表,把收到的数据存起来:
import pandas as pd
df = pd.DataFrame(columns=["code", "price", "volume", "time"])
def on_message(ws, message):
data = json.loads(message)
if "data" in data:
for item in data["data"]:
df.loc[len(df)] = [item['s'], item['p'], item['v'], item['t']]
print(df.tail(1))
这样就能随时查看最新行情,也方便做统计或绘图。
4. 使用感受
WebSocket 的实时性真的很明显。像贵州茅台这种波动频繁的股票,几乎每秒都能看到成交价更新。相比传统接口,省去了频繁轮询,也减少了延迟。
整体上,接入 A 股实时行情 API 的流程很顺畅:建立连接 → 订阅标的 → 接收数据 → 处理分析。无论是监控行情、做策略实验,还是可视化展示,都可以很自然地集成到自己的程序里。
这种方式几乎是做策略和分析的第一步,也方便在本地累积数据,为后续更复杂的分析提供基础。
