實時行情數據是量化交易策略、看板系統和交易決策系統的重要輸入。本文將以 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 型模型。