美股API接入指南:实时行情、历史K线,怎样避免显示错价格?

TickDB Research ·

摘要:美股行情功能接通以后,产品经理还要回答:页面显示的是哪个时段的价格,历史曲线包含哪些交易,财报之后怎样继续观察?本文以特斯拉三季报为案例,实际调用 TickDB REST API,取得报价、历史日线、分钟线与交易时间信息,解释实时行情、历史K线和盘前盘后数据怎样分工,并提供可运行脚本、原始结果与财报行情观察表,方便产品和技术同事一起验收。

10 月 22 日北京时间 12:42,TickDB 的同一次特斯拉快照里,主价格是 386.47 美元,盘后价格是 373.649 美元,夜盘(隔夜时段,overnight)价格是 368.82 美元。假如行情页只取主价格,把“页面刚刷新”当成“价格就是现在”,用户看到的仍可能是前一天下午的收盘记录。财报已经发布,这样的显示很容易让人误读市场变化。

我后来发现,问题不在接口有没有返回价格,而在页面把哪个时段的价格当成了“现在”。

接入时应把报价、历史走势和更新方式分别处理,让每个价格都带上自己的时段与数据时间。TickDB 提供行情快照、历史 K 线和交易时间查询,可以据此生成一张能追溯来源的观察表。下面沿着“先取报价,再取历史,最后对齐财报事件”的顺序,把这条路径实际跑一遍。

特斯拉官网确认,2026 年第三季度业绩于 10 月 21 日公布;此前公告安排在美股盘后发布。这也是一个适合检查行情页的时刻:常规交易结束以后,报价仍可能继续变化。特斯拉业绩公告、此前发布安排

一分钟看懂:现在的价格、过去的走势,各用什么数据

图1:AI生成概念示意。快照与历史序列分别回答不同问题,图中K线不代表真实行情。

页面要回答的问题应取得什么展示时保留什么
这只股票目前能查到什么报价行情快照及对应时段的字段组价格、返回项、数据时间
过去一段时间怎样变化指定范围与周期的历史K线日期范围、周期、复权方式
页面怎样继续更新按需求安排轮询或持续订阅更新状态、异常提示与恢复方式

快照像一次带时间的定格,K线把一个窗口内的开、高、低、收等数据汇总起来。查询方式决定你何时拿到它们;盘前、常规、盘后与夜盘,描述的是数据所属时段。

这几个问题分清后,接口参数和页面字段就能一一对应:股票详情页展示哪一种报价,曲线画哪个范围,数据缺失时怎样提醒。技术同事也不必从“接一个实时行情接口”里猜整套页面逻辑。

第一步:取回报价,把价格和它的时间一起留下

我这次直接请求 TickDB 的 REST 快照端点:

GET https://api.tickdb.ai/v1/market/ticker

请求参数:

{"symbols":"TSLA.US,AAPL.US","type":"stock"}

鉴权通过请求头 X-API-Key 传递,密钥放在服务端或本地安全环境中。我把返回结果存下来后,特斯拉的三个返回项如下,时间统一换算为纽约时间(America/New_York;北京时间约为纽约时间加 12 小时,夏令时):

返回项价格(美元)纽约数据时间
主价格 last_price386.4710月21日 16:00:00
盘后 post_market_quote.last_done373.64910月21日 19:59:59
夜盘 overnight_quote.last_done368.8210月22日 00:42:06

接口请求发生在北京时间 10 月 22 日中午,主价格的数据时间却在纽约前一天下午。请求时间与数据时间要分别保存:页面刚刚刷新,只能说明刚发起过查询。

对这组结果,页面可以分开展示“常规收盘”“盘后”“夜盘”,旁边标明各自时间。如果页面只观察常规交易,就保留常规收盘作为主价;如果页面要展示夜盘观察结果,就使用对应返回项,并保留夜盘标签。

这里容易省掉一步:时间戳最大的字段,不一定是页面要的主价。一个“常规收盘表现”页面,与一个“夜盘观察”页面,选择规则本来就不同。

TickDB 当前文档说明,扩展时段的返回项在对应产品和数据可用时返回。对应字段缺失时,界面应显示缺失状态;沿用旧值则注明旧值时间,不把别的时段悄悄替上去。TickDB快照字段说明

第二步:取得历史走势,先明确曲线画的是哪一段

历史行情使用:

GET https://api.tickdb.ai/v1/market/kline

我这篇的日线请求固定为:

{
  "symbol":"TSLA.US",
  "interval":"1d",
  "adjust":"none",
  "start_time":1792022400000,
  "end_time":1792627199999,
  "limit":1000
}

对应 UTC 时间为 10 月 15 日 00:00:00 至 10 月 21 日 23:59:59.999;时间戳单位是毫秒。

曲线停在前一天,先检查返回日期

这次区间日线查询返回了四条记录,最后一条停在 10 月 20 日。交易日历列出的日期则包含 10 月 21 日。

我一开始也只看了请求成功,后来把返回日期和交易日历对了一遍,才发现曲线停在前一天。我针对 10 月 21 日又查了一次,取得了该日记录,收盘价为 386.47 美元。最终五个交易日与本次日历对齐,两次原始响应分别保留。

这里最容易被忽略:请求成功,不代表曲线完整。页面很可能已经把一条截止到前一天的线画好了。把返回日期与预期交易日核对,才知道是否还需要补取。

缺日的原因需要进一步定位;在原因明确之前,先记录缺口与补取结果,不用上一条价格复制出一条“新日线”。

分钟线包含哪些时段,要看实际返回

我还查询了特斯拉 10 月 21 日的 1m、不复权历史数据,返回 720 条记录,纽约时间从 08:00 到 19:59,包含盘后片段。

所以,不能把“美股分钟K线只含常规时段”作为通用前提。也不能看到这份样本里有盘后,就认定其他证券、日期和粒度都相同。产品画图前应检查实际时间范围,再决定怎样标注和筛选。

日线与分钟线也可能表现不同。我补取的日线收盘价是 386.47;当日最后一条分钟线在 19:59,收盘价为 373.649。若页面要展示常规收盘,应使用已确认的对应记录,不能直接拿整段分钟序列的最后一行代替。

TickDB 文档还说明,最新一根 K 线可能仍在形成;免费版 K 线查询不支持通过 start_time、end_time 指定范围。接入前核对账号权限,做研究归档时留下查询时间和复权方式。TickDB K线查询说明

财报之后,把事件与行情放到同一条时间线上

image.png

图2:由本篇真实返回绘制。实线为720条分钟收盘价;夜盘只画一个快照点,未采样的空档不连线。17:30标记为公司公告的业绩问答会时间。

在这张图里,16:00 的常规收盘只是一个节点。分钟样本继续到 19:59;之后,下一天的夜盘快照又给出了一个新的观察点。

如果界面只画常规时段,收盘以后曲线停下可以是产品设计;旁边的扩展时段报价却还在变化。此时应告诉用户曲线显示到哪里,避免让人以为整个页面卡住了。

反过来,若曲线已经包含盘后,标题和时间轴也要相应标注,不能仍让读者按“常规交易走势”理解整段数据。

财报日期、问答会时间、行情时间,分别记录

特斯拉公告中的问答会时间是 10 月 21 日美东 17:30,对应北京时间 10 月 22 日 05:30。它是问答会安排,不能直接填进“财报精确发布时间”。

这次可以形成下面的事件观察表:

记录时间或时段价格(美元)来源
三季报发布安排10月21日盘后—特斯拉官方公告
常规收盘记录10月21日 16:00:00386.47TickDB快照;补取日线收盘一致
业绩问答会安排10月21日 17:30—特斯拉官方公告
盘后快照10月21日 19:59:59373.649TickDB盘后对象
夜盘快照10月22日 00:42:06368.82TickDB夜盘对象

行情记录只能帮你定位观察窗口,不能拿先后顺序当因果。要解释价格变化,还得看财报和同期信息。

FINRA 的投资者资料也提醒,扩展时段可能面临较低流动性、更大波动和不同交易场所的价格差异。把时段与时间写清,是给读者判断这些数据的必要信息。FINRA:扩展时段交易

交付前必须定下四件事:主价、异常、更新、追溯

主价怎么选。先写清页面目的,再决定采用哪个返回项。交易时段切换时,也要说明旧返回项怎样保留和展示。

什么情况下显示异常。对应字段缺失、时间无法解析、历史范围不完整,应成为可见状态。数据多久算旧,要由具体用途确定,不能用一条固定阈值覆盖所有场景。

页面怎样继续更新。按需查询适合打开页面或发起一个问题时取得快照;轮询需要安排频率和请求次数限制。需要持续订阅的项目,另行检查更新、连接恢复与数据缺口处理。本文的实际接入是 REST。

同事能否追溯结果。至少保留证券代码、返回项、数据时间、采集时间和原始返回的保存位置。报价表与历史表分别保存,避免把“某一刻的价格”和“某个窗口的收盘”混成一列。

这些要求写进验收清单,产品验收就有了具体检查项:检查页面上的价格来自哪里、属于哪一段,以及缺失时用户会看到什么。

给技术同事:直接运行随文材料

下载完整脚本、原始响应与观察表

材料使用 Python 3.10+、系统 curl 和 IANA 时区数据,不需要安装第三方 Python 库。请先在安全环境中配置 TICKDB_API_KEY,然后在解压根目录运行:

python3 attachments/collect_us_observation.py --out my_run

脚本实际发起 REST 请求,密钥通过标准输入传给 curl,不进入命令参数或结果文件。默认参数就是本篇固定的证券与日期窗口;取自己的样本前,修改脚本中集中列出的任务参数,再另存运行结果。

最终运行取得八行报价记录、五条日线和720条分钟线。五条日线包含一次定向补取,原始区间响应与补取响应都保留在材料中。

如果先想核对本文结果,可以离线运行:

python3 attachments/collect_us_observation.py --offline evidence --out my_check

它会生成报价 CSV、日线 CSV、分钟线 CSV 和检查报告。本篇保存样本输出 PASS;若仍有缺日,报告保留 CHECK_REQUIRED。输出目录必须是新目录,避免覆盖已有记录。

随文另有事件观察表生成脚本,把官方事件信息与报价 CSV 放到同一份表中,运行方法见 README。

常见问题:先把一只股票的快照和一小段历史跑通

刚开始接美股API,先做哪一步

先挑一只目标股票,取得一份快照和一小段历史数据。把页面要展示的返回项、时段和数据时间确认下来,再扩展股票池与更新方式。免费账号是否支持所需范围,先按当前文档核对。

价格或曲线看起来不对,从哪里排查

先看原始返回,再核证券、返回项、数据时间、周期、复权和日期覆盖。本篇区间日线缺日,定向补取后取得记录,就是需要把结果保存下来再核对的一类情况。

这套结果还能用在哪里

相同的报价与时间记录,可以交给研究表、监控任务或 AI 助手。AI 回答行情问题时,也应保留返回项、数据时间和来源;提醒或持续监控则要增加相应的更新与异常处理。

最后,先把一张行情页交付清楚

美股 API 接入的第一份有用成果,可以很小:一张显示返回项与时间的报价表,一段范围清楚的历史走势,再加一份能找到来源的事件记录。

这次特斯拉样本中,常规收盘、盘后和夜盘分别有自己的价格,日线还经历了一次缺日补取。把这些差异保留下来,产品经理才能检查页面含义,技术同事才能定位取数与展示问题。

我自己跑完这一遍,最先改的不是脚本,是页面上的时间标注。

用自己的目标证券跑一次,先核对页面上的主价格和曲线截止时间。这两处说清楚以后,再增加更多标的和功能。

本文样本采集于2026年10月22日。价格用于展示数据接入方法,不构成投资建议。

参考资料与随文材料

  1. [特斯拉三季报发布公告]及[此前发布安排]:事件日期、盘后发布安排与问答会时间。
  2. TickDB:行情快照、K线查询、交易日历、交易时段:当前字段、参数与查询条件。
  3. [FINRA:Extended-Hours Trading—Know the Risks]:扩展时段交易的市场背景。
  4. [本文实测材料]:真实REST响应、参数与时间、运行脚本、CSV、检查报告及事件观察表。

相关文章

美股数据源怎么选?实时行情、历史回测和AI查询的选型清单

摘要 :做美股产品、量化研究或 AI 助手,团队最怕“演示时看着都行,真交付了全得返工”。实时行情得卡准时段,历史回测得弄清复权,AI 查询必须能追溯真实数据。本文结合 Yahoo/yfinance、Alpha Vantage、Massive 和 TickDB 的官方资料与真实跑通样本,给你一套选型顺序,并附上能直接扔给技术同事的“需求卡”、原始结果和测试脚本。 假设你们团队要接入苹果(AA…

TickDB Research ·

美股行情数据源怎么选?实测四家平台:别让错乱的“最新价”毁掉你的实时看板与 AI 查询

为美股团队选数据源,最怕“演示能用,交付返工”。本文结合真实自动化实测与官方资料,聚焦 实时看板、历史回测与 AI 查询 三大场景。文章不仅拆解了盘前/盘后价格时点错乱、复权口径不一等五个选型陷阱,还 直接提供了可运行的 Python 验证代码、多市场字段对比明细和复权因子计算公式 。你将看到 TickDB 在同一响应中如何返回三个时点的价格,以及如何通过 MCP 原生协议让 AI 直接取回…

TickDB Research ·

A股回测用前复权还是后复权:同一只股票,两条收益曲线差 34 个百分点

同一个接口、同一只A股、同一段 250 个交易日, adjust 传 none 累计收益是 −29.92%,传 forward 是 +4.50%。差 34.42 个百分点。三条序列都没算错,它们回答的是三个不同的问题。更要紧的是:不传这个参数时默认给的是不复权,而前复权序列每次除权都会整条重算。这篇讲清五种复权取值的差别、哪一条可复现,最后给一段能自检序列类型的代码。 我在 10 月 19…

TickDB Research ·

A股实时数据API:请求成功,不等于名单里每只票都有数据

摘要 :本文写给负责自选股看板的产品经理,以及参与投研数据源选型的负责人。接入A股实时数据API之后,怎么确认名单里每只股票这一轮都拿到了数据?怎么避免把没返回的行、或者旧价格,当成正常更新?文章用TickDB批量行情快照的真实结果,加上国内外机构资料和反例,把名单核对、数据时间和交易窗口拆开讲,并提供页面检查清单、Python脚本和五项边界自测材料,可以直接转给技术同事验证。 本文回答三个…

TickDB Research ·

股票盘口数据:1档、5档、10档、1000档,档数越多盘口越深吗?

同一个盘口接口,苹果返回1档,寒武纪5档,腾讯10档,比特币1000档。直觉会说比特币最深、苹果最浅。可把挂单换成钱一算,比特币1000档挂的钱,还不到腾讯10档的三分之一。这篇讲清档数到底由什么决定、盘口深度该怎么比,最后给行情App三条显示规矩和一段跨市场盘口代码。 10月16日晚上11点33分,美股正在交易,港股和A股已经收盘。我用同一个盘口接口,查了四个标的:苹果、寒武纪、腾讯、比特…

TickDB Research ·