做A股量化,一套Python SDK搞定A股行情数据沪深实时

用户头像Fxdund
2026-08-18 发布

写量化小工具、个人盯盘脚本的时候,相信很多朋友跟我一样:最难的往往不是写策略逻辑,而是搞定靠谱的行情数据源

之前踩过不少坑:用爬虫抓取网页行情,网站一改接口直接全部失效;高频请求就触发IP限流;不同市场返回字段五花八门,写一堆适配代码;想要实时推送,还要自己折腾WebSocket心跳、断线重连,一堆底层细节耗掉大把时间。

最近在做个人A股监控小项目,试了 itick 的 Python SDK,体验挺舒服,不需要复杂封装,REST拿历史K线,WebSocket接收实时推送,沪深两市一套代码就能搞定,在这里分享下实战踩坑与完整示例。

一个关键认知:A股要区分沪市SH、深市SZ

和美股港股不一样,A股接口里,上海交易所用region=SH,深圳交易所用region=SZ,这是最容易踩的第一个坑。

举两个典型标的:

  • 贵州茅台 600519 → 沪市 SH
  • 平安银行 000001 → 深市 SZ

⚠️注意:股票代码直接传纯数字,不要带 .SH / .SZ 后缀,region参数负责区分交易所,后缀加上反而查不到数据。如果拿不准某只股票归属哪个市场,可以调用get_symbol_list标的列表接口确认。

快速安装初始化

安装SDK,填入自己申请的token即可完成初始化:

pip install itick-sdk
from itick.sdk import Client

# 替换成你的token
token = "your_api_token"
client = Client(token)

REST接口:获取实时快照 + 历史K线

普通的最新报价、历史K线数据,直接调用REST接口就可以,同步调用简单直接,适合回测、定时拉取数据场景。

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

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

# 获取茅台最近60根日线K线
# kType:1=1分钟,2=5分钟,3=15分钟,4=30分钟,5=1小时,8=日线,9=周线,10=月线
kline = client.get_stock_kline("SH", "600519", kType=8, count=60)
print("茅台日K线:", kline)

返回字段是统一规范:
o开盘、h最高、l最低、c收盘、v成交量、tu成交额。A股、港股、美股字段命名保持一致,做多市场项目的时候,不用反复写不同字段适配代码,这点很省心。

WebSocket实时推送:同时订阅沪深多只股票

如果要做盘中盯盘、预警脚本,轮询接口效率太低,优先使用 WebSocket 推送。

比较友好的一点:同一个连接可以同时订阅沪市、深市的标的,不用分别新建两条连接,监控沪深300一篮子股票的时候会省事很多。SDK内部已经封装好了心跳、断线自动重连,断线后最多重试10次,重连成功自动恢复订阅关系,不用自己手写重连逻辑。

示例代码:

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)

# 建立websocket连接
client.connect_stock_websocket()

# 订阅标的:格式 代码$交易所,同时订阅quote快照、tick逐笔
sub_msg = '{"ac":"subscribe","params":"600519$SH,000001$SZ,300750$SZ","types":"quote,tick"}'
client.send_websocket_message(sub_msg)

# 保持连接30秒接收数据
time.sleep(30)

print("连接状态:", client.is_websocket_connected())
# 关闭连接
client.close_websocket()

💡小提示:A股不是7×24小时市场,非交易时段不会有tick、quote推送。如果连接成功但是收不到数据,先确认是否开盘;排查连接是否正常,可以尝试订阅kline类型做验证。

开发A股工具,这几个细节一定要留意

  1. 交易状态字段 ts
    quote接口返回ts字段代表股票状态:0正常交易、1停牌、2退市、3熔断。写监控、预警程序务必判断这个字段,否则停牌、涨跌停股票的数据容易造成逻辑误判。
  2. T+1 是交易规则,和行情接口无关
    SDK只返回行情数据,不涉及交易下单。A股T+1属于券商交易层面规则,不会影响行情数据获取。
  3. 常见报错排查
  • cannot be resolved action:大概率订阅消息里股票代码、SH/SZ格式写错,核对代码$region写法;
  • 完全收不到推送:优先检查当前是否A股交易时间,其次核对token权限。

简单总结

个人做量化小项目的时候,优先避开不稳定的网页爬虫,选择成熟SDK可以节省大量底层开发时间。

这套方案的优势总结:

  1. 统一SDK,A股区分SH/SZ,多市场字段统一;
  2. 历史K线用REST,实时行情用WebSocket,分工清晰;
  3. WebSocket内置心跳、自动重连,减少造轮子;
  4. 有免费套餐可以用来做原型验证,跑通脚本之后,再按需升级扩大标的数量。

完整的字段说明、批量接口可以去官方文档中心查阅。

希望这篇实战可以帮到正在折腾Python量化的小伙伴。如果大家有好用的行情工具,也欢迎评论区一起交流。

免责声明:本文仅为技术开发实战分享,不构成任何投资建议,行情接口仅供程序学习研究使用。

参考文档:https://docs.itick.org/rest-api/stocks/stock-kline
GitHub:https://github.com/itick-org/

评论