港股数据接口怎么接?itick港股API实时行情+K线全流程
港股API、港股实时行情、港股历史K线——这几个关键词应该是很多做量化或者资讯工具的开发者最近都在搜的。港交所(HKEX)的行情数据不像美股那么容易白嫖,能提供稳定推送、还带Python SDK的服务商其实不多,itick算是其中做得比较完整的一个。这篇就用itick的Python SDK,把港股的REST历史数据和WebSocket实时推送对接流程走一遍。

港股市场背景速览
港股用的标的代码跟A股、美股都不太一样,比如腾讯是700,阿里巴巴是9988,都是纯数字代码,不带字母后缀。itick里对接港股,region参数固定传HK即可,交易所主要就是HKEX,一般情况下exchange参数留空就走主交易所。
环境准备
先装SDK:
pip install itick-sdk
去 itick.org 注册,拿到token。免费账户REST每分钟5次调用、WebSocket 1条连接3个订阅,先拿腾讯、阿里这两只票测试足够了。
接口一览
| 功能 | REST方法 | 说明 |
|---|---|---|
| 实时报价 | get_stock_quote | 最新价、涨跌幅等 |
| 逐笔成交 | get_stock_tick | 每一笔成交明细 |
| 盘口深度 | get_stock_depth | 五档/十档买卖盘 |
| 历史K线 | get_stock_kline | 分钟线到月线 |
| 批量报价 | get_stock_quotes | 一次查多只股票 |
批量接口是港股这种要同时盯多只票场景下比较好用的功能,比如同时看腾讯、美团、小米三只,不用循环调三次单个接口。
REST拉取历史K线
from itick.sdk import Client
token = "your_api_token"
client = Client(token)
# 腾讯控股 700,日K线,取最近30根
kline = client.get_stock_kline("HK", "700", 8, 30)
print(kline)
# 阿里巴巴港股 9988,60分钟K线
kline_ali = client.get_stock_kline("HK", "9988", 5, 20)
print(kline_ali)
kType对照表:1=1分钟,2=5分钟,3=15分钟,4=30分钟,5=1小时,8=1天,9=1周,10=1月。返回数据里o/h/l/c是开高低收,v是成交量,tu是成交金额,t是K线所在周期的时间戳(毫秒)。
WebSocket订阅港股实时行情
import time
def on_message(msg):
print("推送消息:", msg)
def on_error(err):
print("发生错误:", err)
client.set_message_handler(on_message)
client.set_error_handler(on_error)
client.connect_stock_websocket()
client.send_websocket_message(
'{"ac":"subscribe","params":"700$HK,9988$HK,3690$HK","types":"quote,tick,depth"}'
)
time.sleep(20)
client.close_websocket()
订阅成功后服务端会先回一条 {"code":1,"resAc":"subscribe","msg":"subscribe Successfully"},确认订阅生效了再等推送数据。如果传的代码或者地区参数写错了,会收到 cannot be resolved action 的错误,这时候回去检查一下region和股票代码是不是对得上。
港股的Tick数据里有个字段d表示买卖方向(0默认、1卖、2买),这个字段目前只有港股、美股、A股三个市场支持,做逐笔成交分析的时候记得用上。
心跳与断线重连
itick的WebSocket要求客户端30秒左右发一次心跳包,SDK已经把这块封装好了,不需要自己写定时任务。断线场景下,SDK内置5秒间隔、最多10次的自动重连机制,重连成功后订阅也会自动恢复,不用担心半夜断线之后早上起来发现数据全丢了。
踩坑记录
- 代码格式:港股是纯数字,别加前导0之外的字符,比如腾讯就是
700不是0700(实测两种传法itick都能识别,但官方文档给的示例是不带前导0的)。 - 免费套餐的连接数和订阅数比较少,多标的监控场景建议尽快评估升级付费套餐,避免超限之后新的订阅请求被拒绝。
kline@1(1分钟K线的WebSocket推送)目前只对Premium及以上套餐开放,普通套餐拉分钟线数据还是走REST接口比较稳妥。
写在最后
港股这条线用itick对接,流程跟美股基本是同一套逻辑,区别主要在代码格式和交易所参数上。整个SDK的调用方式统一,切换市场基本就是改个region参数的事,这点对同时要覆盖多个市场的开发者来说还蛮省事的。更完整的字段定义可以查 itick文档。

浙公网安备 33010602011771号