教程:如何快速查询 A 股实时 K线和5档盘口

实时行情数据是量化交易策略、看板系统和交易决策系统的重要输入。本文将以 Infoway API 提供的 WebSocket API 为例,教你如何使用 Python 快速接入并获取 A 股的实时 K线数据盘口数据

一、准备工作

安装 WebSocket 库:

pip install websockets

二、查询 1 分钟 K 线数据

以下是订阅 A 股平安银行1 分钟 K 线的完整代码:

import asyncio
import json
import websockets

WS_URL = "wss://data.infoway.io/ws?business=stock&apikey=yourApiKey"

# API KEY申请: www.infoway.io

async 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 websockets

WS_URL = "wss://data.infoway.io/ws?business=stock&apikey=yourApiKey"

# 申请API KEY: www.infoway.io

async 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.SZ600000.SH,需要带交易所后缀。

  • 数据使用限制:免费账号有速率限制或订阅数量限制

五、扩展应用建议

  • 看板系统:将返回的实时 K 线和盘口数据接入到图表看板中(如 Grafana + WebSocket)。

  • 自动交易系统:用盘口数据驱动微观结构策略(如买卖盘力量对比)。

  • AI 策略研究:K 线与盘口联合建模,用于训练 LSTM 或 Transformer 型模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值