美股量化数据接入实战:低成本获取实时行情与历史K线

AI摘要
【知识分享】本文介绍itick金融数据SDK的Python接入方法,涵盖REST接口获取美股实时报价与历史K线、WebSocket实时推送订阅流程,并说明免费套餐额度、延迟表现及常见问题。内容为技术教程,不涉及投资建议或违规内容。

环境准备与数据源选择

先装 SDK:


pip  install  itick-sdk

然后去 itick 官网 注册账号,在后台拿到 API Token。所有请求都会用到它。

为什么选 itick?其实社区里还有很多优秀的金融数据 API,但 itick 的免费套餐已经覆盖了美股、港股、A股等主流市场的实时数据和历史K线。REST 接口每分钟可以调用 5 次,WebSocket 允许 1 条连接、订阅 3 个标的。这个额度对学习、原型测试基本够用,实测下来延迟也在可接受范围内。如果你需要更高频的查询,官方也提供了 600 次/分钟、6 条连接等更高配置的付费方案,按需升级就好。


1. 获取实时报价(REST)


from itick.sdk import Client

token = "your_api_token"

client = Client(token)

# region 填 US 代表美股市场

quote = client.get_stock_quote("US", "AAPL")

print("苹果最新报价:", quote)

tick = client.get_stock_tick("US", "TSLA")

print("特斯拉 Tick:", tick)

region 参数传 "US" 即可,SDK 底层会自动拼接成完整请求。返回的字段里,ld 是最新价,o/h/l 是开、高、低,ch/chp 是涨跌额和涨跌幅,和券商 App 看盘时的数据基本一致。


2. 获取历史 K 线

美股支持从 1 分钟到月线的多种周期,参数 kType 的取值整理如下:

kType 含义
1 1 分钟
2 5 分钟
3 15 分钟
4 30 分钟
5 1 小时
8 1 天
9 1 周
10 1 月

拉取苹果最近 10 根 5 分钟 K 线的代码:


kline = client.get_stock_kline("US", "AAPL", kType=2, limit=10)

print("K线数据:", kline)

每条 K 线包含 t(时间戳)、o/h/l/c(开高低收)、v(成交量)和 tu(成交额),画个简单的走势图完全够用。


3. WebSocket 实时推送

盯盘、量化实盘等场景下,反复轮询 REST 接口很容易触碰频率上限,而且效率不高。更好的方式是使用 WebSocket,让服务端主动推送数据。itick 的 SDK 已经封装好了连接、心跳和自动重连。

下面是一个完整的订阅例子,同时接收苹果和特斯拉的报价与盘口数据:


import time

def  on_message(message):

print(f"收到推送: {message}")

def  on_error(error):

print(f"WebSocket 出错: {error}")

client.set_message_handler(on_message)

client.set_error_handler(on_error)

# 建立 WebSocket 连接

client.connect_stock_websocket()

# 订阅 AAPL(US 市场)和 TSLA(NASDAQ 交易所,US 市场)

subscribe_msg = '{"ac":"subscribe","params":"AAPL$US,TSLA$NASDAQ$US","types":"quote,depth"}'

client.send_websocket_message(subscribe_msg)

# 保持连接一段时间,实际项目中可以改成事件循环

time.sleep(30)

print("当前连接状态:", client.is_websocket_connected())

client.close_websocket()

关于订阅参数:

  • params 格式为 代码$地区。如果同一市场内有多个交易所需要区分,可以写成 代码$交易所$地区

  • types 可选 tick(逐笔成交)、quote(实时报价)、depth(十档盘口)、kline(K线推送,其中 1 分钟粒度的 kline@1 目前仅对 Premium 及以上套餐开放)。

SDK 还内置了心跳机制(默认每 30 秒 ping 一次),一旦因网络抖动断线,会自动按 5 秒间隔重连,最多尝试 10 次。重连成功后,之前的订阅关系也会自动恢复。这个小设计在搭建实时监控时省了不少事。


常见问题

Q:免费套餐能支撑日常开发吗?

如果只是个人学习、搭建原型或者跑一些低频策略,每分钟 5 次 REST 调用、1 条 WebSocket 连接基本足够。当策略需要监控更多标的或更高频的数据时,再考虑升级到更高级别的套餐。

Q:数据延迟表现怎么样?

itick 官方给出的延迟参考是毫秒级推送。我在本地测试下来,做盯盘工具和实时计算的延迟感知很小,符合一般量化的要求。当然实际体验也和你的服务器位置、网络环境有关。

Q:一条 WebSocket 连接可以订阅多少个标的?

单条连接最多支持 500 个标的。如果你监控上千只美股,可以按逻辑拆分成多条连接,或者联系客服调整连接数上限。


结语

本文用 itick 的 Python SDK 演示了美股实时行情和历史 K 线的基本接入流程:REST 负责一次性或低频查询,WebSocket 负责持续的实时推送。两条链路配合使用,基本能覆盖选股、盯盘、策略回测等场景。整个流程从注册、拿到 Token 到跑通第一条 WebSocket 推送,通常半小时内能搞定。

更详细的字段说明、批量请求接口以及 Java/Go/Node.js 等语言的 SDK,可以查阅 itick 文档中心。希望这篇文章能帮你少走一点弯路,快速把数据层搭起来。

免责声明:本文仅用于技术交流与学习,不构成任何投资建议。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
81
粉丝
4
喜欢
8
收藏
8
排名:1777
访问:1510
私信
所有博文