做港股量化、写小行情工具也有大半年了,期间换过好几个行情数据源,踩过不少坑:要么实时推送延迟高、要么历史K线残缺、免费额度抠门到没法测试,直到最近上手iTick,才算把港股数据对接流程理顺,分享一套实测能用的实操方案,给同样做港股数据需求的朋友避坑。

一、先说下港股数据采集的难点
和A股、美股不一样,港交所原生行情授权门槛很高,个人开发者很难拿到一手直连权限,市面上很多第三方工具存在几个通病:
- 实时行情推送卡顿,盘口逐笔数据断断续续,做短线回测完全不准;
- 历史分钟线、分时线接口收费贵,免费额度只给少量日线,回测根本不够用;
- SDK封装差,大多只提供原生http请求,WebSocket实时订阅要自己手写心跳、重连,调试成本极高;
- 标的代码规则混乱,有的要加0前缀、有的要后缀,多股票批量查询容易报错。
对比下来iTick对个人开发者友好度会高很多,一套SDK同时覆盖REST静态历史数据+WebSocket实时推送,港股、美股、A股切换只改地区参数,不用重复写多套对接逻辑,小项目、个人量化工具完全够用。
二、零门槛上手,新手也能快速搭环境
1. 安装依赖
直接pip一键安装官方封装好的SDK,不用自己处理http请求、websocket连接底层逻辑:
bash
pip install itick-sdk
2. 获取权限
官网注册账号就能领取免费token,不用企业资质,个人开发者直接可用:
免费套餐权益(日常测试足够):
- REST历史接口每分钟5次调用
- WebSocket单条连接可订阅3只个股
像腾讯700、阿里9988、美团3690这类热门标的,拿来做短期测试、小策略回测完全没问题,后期多标的批量监控再升级付费套餐就行。
三、两个高频场景实操代码(直接复制运行)
场景1:拉取港股历史K线,做策略回测
支持1分钟、5分钟、小时线、日线、周线、月线全周期,返回开高低收、成交量、成交额、时间戳完整字段,不用自己二次清洗时间。
python
from itick.sdk import Client
# 替换成你自己的token
token = "你的API_TOKEN"
client = Client(token)
# 1. 腾讯控股700,获取最近30根日线
stock_day = client.get_stock_kline("HK", "700", 8, 30)
print("腾讯日线数据:", stock_day)
# 2. 阿里巴巴9988,获取20根60分钟K线
stock_60m = client.get_stock_kline("HK", "9988", 5, 20)
print("阿里小时线数据:", stock_60m)
周期编码对照表,按需替换第三个参数:
1=1分钟|2=5分钟|3=15分钟|4=30分钟|5=1小时|8=日线|9=周线|10=月线
返回字段简单说明:o开盘、h最高、l最低、c收盘、v成交量、tu成交额、t毫秒时间戳,标准化格式,pandas直接导入做回测。
场景2:WebSocket实时订阅盘口、逐笔、实时报价
做盯盘工具、实时信号预警必备,内置心跳、断线自动重连,不用自己写定时心跳、断线重试逻辑,省心很多。
python
import time
from itick.sdk import Client
token = "你的API_TOKEN"
client = Client(token)
# 接收推送回调
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()
# 批量订阅多只港股:实时报价+逐笔成交+五档盘口深度
sub_msg = '{"ac":"subscribe","params":"700$HK,9988$HK,3690$HK","types":"quote,tick,depth"}'
client.send_websocket_message(sub_msg)
# 持续接收20秒数据测试
time.sleep(20)
# 关闭连接
client.close_websocket()
订阅成功会返回提示subscribe Successfully,如果代码/地区填错会提示解析失败,检查股票代码和HK地区标识即可。
额外实用细节:港股逐笔tick数据自带成交方向d字段(1卖出、2买入),做资金流向、逐笔成交分析非常方便,目前支持A股/港股/美股三个市场。
四、内置省心功能,省掉大量开发工作量
- 自动心跳+断线重连
官方SDK已经封装30秒自动心跳,断线后5秒间隔重试,最多10次重连,重连后自动恢复订阅,不用自己维护定时任务,跑隔夜策略不用怕断流丢数据。 - 批量行情接口,高效多标的监控
自带get_stock_quotes批量报价接口,一次性查询多只股票实时价格,不用循环单条请求,大幅减少接口调用次数,节省额度。 - 多市场统一调用逻辑
港股region填HK,切换A股、美股只修改地区参数,接口名称、传参逻辑完全一致,同时做多市场策略不用维护多套对接代码。
五、实测踩坑总结,提前避坑
- 港股代码纯数字即可,比如腾讯直接传700,0700也能识别,但官方示例统一不带前导0,建议统一格式避免后期出兼容问题;
- 免费套餐WebSocket仅支持3个标的订阅,批量盯盘多只个股建议升级付费版;
- 1分钟K线实时推送(WebSocket kline)仅高级套餐开放,普通用户拉分钟历史数据走REST接口更稳定;
- 接口调用有频率限制,批量循环拉取数据记得加延时,避免超限被限制访问。
六、适合哪些人用?
- 个人量化交易者:写策略回测、实时信号提醒工具;
- 小型资讯/盯盘小工具开发者:需要稳定港股实时+历史数据;
- 多市场交易者:同时覆盖A股、港股、美股,想要统一SDK降低开发成本。
整体用下来对比之前试的几款数据源,itick最大优势是对个人开发者友好,文档清晰、SDK封装完整,不用耗费大量时间处理底层连接、数据格式化,入门门槛低,免费额度足够前期测试,有港股数据需求的朋友可以自行注册试一下。
温馨提示:本文仅供代码参考,不构成任何投资建议。市场有风险,投资需谨慎