教程:如何快速查询 A 股实时 K线和5档盘口
实时行情数据是量化交易策略、看板系统和交易决策系统的重要输入。本文将以 Infoway API
提供的 WebSocket API 为例,教你如何使用 Python 快速接入并获取 A 股的实时 K线数据 和 盘口数据。
一、准备工作
安装 WebSocket 库:
pip install websockets
二、查询 1 分钟 K 线数据
以下是订阅 A 股平安银行1 分钟 K 线的完整代码:
import asyncio
import json
import websocketsWS_URL = "wss://data.infoway.io/ws?business=stock&apikey=yourApiKey"# API KEY申请: www.infoway.ioasync def connect_and_receive():async with websockets.connect(WS_URL) as websocket:init_message = {"code": 10004, # K线订阅请求号"trace": "trace-id-001", # 自定义追踪ID"data": {"arr": [{"type": 1, # 1 表示 1 分钟K线"codes": "000001.SZ" # A股代码}]}}await websocket.send(json.dumps(init_message))async def send_ping():while True:await asyncio.sleep(30)ping = {"code": 10010, "trace": "trace-id-001"}await websocket.send(json.dumps(ping))ping_task = asyncio.create_task(send_ping())try:while True:message = await websocket.recv()print("K线数据:", message)finally:ping_task.cancel()asyncio.run(connect_and_receive())
返回数据说明:
{"c": "11.25", // 收盘价"h": "11.28", // 最高价"l": "11.22", // 最低价"o": "11.23", // 开盘价"v": "258400", // 成交量(单位:股)"vw": "11.2458", // 加权平均价"pca": "0.02", // 价格变化"pfr": "0.18%", // 涨跌幅"t": 1747550648097, // 时间戳"s": "000001.SZ", // 股票代码"ty": 1 // K线类型(1分钟)
}
三、查询盘口数据(Level 2)
以下是订阅平安银行盘口数据的完整代码:
import asyncio
import json
import websocketsWS_URL = "wss://data.infoway.io/ws?business=stock&apikey=yourApiKey"# 申请API KEY: www.infoway.ioasync def connect_and_receive():async with websockets.connect(WS_URL) as websocket:init_message = {"code": 10002, # 盘口订阅请求号"trace": "trace-id-002","data": {"codes": "000001.SZ"}}await websocket.send(json.dumps(init_message))async def send_ping():while True:await asyncio.sleep(30)ping = {"code": 10010, "trace": "trace-id-002"}await websocket.send(json.dumps(ping))ping_task = asyncio.create_task(send_ping())try:while True:message = await websocket.recv()print("盘口数据:", message)finally:ping_task.cancel()asyncio.run(connect_and_receive())
返回数据说明:
{"a": [ // 卖盘数据["11.25", "11.26", "11.27", "11.28", "11.29"], // 卖五档价格["23000", "18000", "9500", "6000", "7200"] // 对应数量],"b": [ // 买盘数据["11.24", "11.23", "11.22", "11.21", "11.20"], // 买五档价格["26000", "20000", "10000", "7500", "8500"] // 对应数量],"s": "000001.SZ", // 股票代码"t": 1747553102161 // 时间戳
}
四、注意事项
Ping 心跳机制:WebSocket 连接必须维持心跳,否则服务端会自动断开连接。每隔 30 秒发送一次
code=10010
的心跳消息。股票代码格式:A 股股票代码格式为
000001.SZ
或600000.SH
,需要带交易所后缀。数据使用限制:免费账号有速率限制或订阅数量限制
五、扩展应用建议
看板系统:将返回的实时 K 线和盘口数据接入到图表看板中(如 Grafana + WebSocket)。
自动交易系统:用盘口数据驱动微观结构策略(如买卖盘力量对比)。
AI 策略研究:K 线与盘口联合建模,用于训练 LSTM 或 Transformer 型模型。