A股行情数据API实战:用itick的Python SDK对接沪深实时数据

做A股相关的量化工具或者盯盘软件,第一个问题往往不是策略怎么写,而是数据从哪来。A股数据API、沪深实时行情、A股历史K线接口——这几块拼起来就是本文要讲的内容。用itick的Python SDK对接上海(SH)和深圳(SZ)两个交易所的股票数据,实时行情走WebSocket,历史K线走REST,一篇文章讲完。

A股行情数据API实战:用itick的Python SDK对接沪深实时数据

沪市和深市,两个不同的region

跟美股、港股不太一样,A股在itick这边被拆成了两个regionSH代表上海证券交易所,SZ代表深圳证券交易所。举两个例子会比较直观:

  • 贵州茅台 600519,属于沪市,region=SH
  • 平安银行 000001,属于深市,region=SZ

所以对接A股的时候,第一步得先搞清楚你要查的这只票挂在哪个交易所,传错region会查不到数据。如果一时分不清,可以先查itick的产品列表接口(get_symbol_list)确认一下代码归属。

安装与初始化

pip install itick-sdk
from itick.sdk import Client

token = "your_api_token"
client = Client(token)

拉取实时报价和历史K线

# 贵州茅台,沪市
quote_sh = client.get_stock_quote("SH", "600519")
print("茅台实时报价:", quote_sh)

# 平安银行,深市
quote_sz = client.get_stock_quote("SZ", "000001")
print("平安银行实时报价:", quote_sz)

# 茅台日K线,取最近60根
kline = client.get_stock_kline("SH", "600519", 8, 60)
print("茅台日K线:", kline)

kType参数跟其他市场一样:1分钟=1,5分钟=2,15分钟=3,30分钟=4,1小时=5,日线=8,周线=9,月线=10。返回结构里c是收盘价、o开盘价、h最高价、l最低价、v成交量、tu成交额,字段含意跟港股、美股接口是统一的,这也是用同一套SDK对接多市场的好处之一,字段不用每个市场重新学一遍。

WebSocket实时推送(同时订阅沪深两市)

import time

def on_message(message):
    print("行情推送:", message)

def on_error(error):
    print("连接异常:", error)

client.set_message_handler(on_message)
client.set_error_handler(on_error)

client.connect_stock_websocket()

# 同一条连接可以混合订阅沪市和深市的标的
client.send_websocket_message(
    '{"ac":"subscribe","params":"600519$SH,000001$SZ,300750$SZ","types":"quote,tick"}'
)

time.sleep(30)
print("是否仍然连接:", client.is_websocket_connected())
client.close_websocket()

一条WebSocket连接是可以同时混合订阅SHSZ两个region标的的,不需要为两个交易所分别开连接,这点对同时监控沪深300成分股这种场景挺方便。

A股特有的几个注意点

  1. 涨跌停与熔断状态:quote接口返回的ts字段表示交易状态,0是正常交易,1是停牌,2是退市,3是触发熔断,做A股监控工具的时候这个字段建议一定要处理,不然涨跌停的票可能会被误判成异常数据。
  2. T+1限制不影响行情数据:itick这边只提供行情数据展示服务,不涉及交易,T+1的限制是券商交易层面的规则,跟数据接口没关系,这个之前有开发者问过,在此说明一下。
  3. 代码里别带交易所后缀:A股代码就是纯数字,比如600519,不用写成600519.SH这种格式,region参数已经承担了区分交易所的职责。

常见错误排查

如果订阅返回cannot be resolved action,八成是params里的代码或者region拼错了;如果一直收不到消息,先看看是不是当前是非交易时段——A股不是24小时市场,收盘之后自然没有tick和quote推送,这时候可以订阅kline类型来验证连接本身是不是正常。

心跳这块SDK已经处理,默认30秒一次ping,断线之后5秒间隔自动重连,最多重试10次,重连成功后订阅关系也会恢复,不需要额外写重连逻辑。

小结

A股这块用itick对接,核心就是分清楚SHSZ两个region,剩下的调用方式跟美股港股完全是同一套逻辑。历史K线走REST批量拉,实时行情走WebSocket订阅,免费套餐先跑几只票验证效果,够用了再考虑升级套餐扩大标的覆盖范围。详细字段和批量接口文档在itick文档中心都能查到。

posted @ 2026-07-12 18:30  时间算法  阅读(9)  评论(0)    收藏  举报