查找适用于每日 OHLCV 的
免费 EOD 股票数据 API
构建数据流程前,应从市场覆盖范围、收盘价口径、数据最终确认时间、公司行为处理方式、历史跨度、请求限额和导出格式等方面评估免费的股票日终数据 API。
快速解答:免费 EOD 股票数据 API 是什么
EOD 股票数据 API 通常为每个已经结束的交易日返回一条日线记录,包括开盘价、最高价、最低价、收盘价和成交量(OHLCV)。它适合夜间投资组合估值、日频因子研究、选股、报告和回测,并不适合盘中交易执行。真正可用的免费套餐还应说明覆盖哪些交易所和证券类型、“收盘价”采用什么口径、日线何时最终确认,以及拆股、分红、代码变更和盘后修订会如何影响历史数据。
不要把收盘铃响后最先出现的数字直接当成不可变的官方收盘价。不同市场和供应商可能采用最后一笔合格成交、收盘竞价价、综合行情收盘价或供应商计算的参考价;期货等品种还可能使用结算价。对于生产级日线流程,这一口径通常比接口响应是 100 毫秒还是 500 毫秒更重要。
适合回测、选股器、研究笔记本、投资组合报告,以及不需要实时逐笔行情的仪表盘。
日线可能在收盘后很快出现,但在竞价、迟报成交和修订处理完成前,它仍可能只是初步值。
免费套餐通常会限制调用次数、历史跨度、交易所覆盖、标的数量、批量下载、再分发或商业用途。
日线股票数据接口应返回哪些字段
| 字段 | 字段含义 | 核对事项 |
|---|---|---|
| OHLC | 常规交易时段或供应商明确说明的其他时段内形成的开高低收价格。 | 是否包含盘前盘后成交,以及“收盘价”究竟指最后成交价、收盘竞价价、官方收盘价还是结算价。 |
| 交易日标识 | 交易日期、交易所、时区、计价币种和交易状态。 | 提前收盘、节假日、跨市场上市证券,以及与 UTC 日期不同的本地交易日边界。 |
| 成交量 | 指定交易时段内报告的成交股数或合约数。 | 计量单位、跨场所汇总、零股交易、竞价成交量和盘后修订规则。 |
| 原始值与复权值 | 未经处理的市场观测值,以及针对拆股、有时也包含分红调整后的连续序列。 | 复权范围、因子生效日、分红处理惯例,以及是调整全部 OHLC 字段还是只调整收盘价。 |
| 发布状态 | 日线是初步值、修订值还是最终值,并附带来源时间和更新时间。 | 供应商的修订窗口、重述规则,以及历史版本能否追溯。 |
| 证券身份 | 证券代码、永久标识、上市地点、资产类型和有效日期范围。 | 退市、代码复用、并购、股份类别变更和按历史时点还原的代码映射。 |
值得测试的免费 EOD 股票数据 API
不存在适用于所有日线任务的唯一最佳免费接口。小型自选股可以使用按证券查询的 API;全球选股器更需要高效的多标的访问;回测则需要比近期紧凑响应更长的历史。下面根据当前官方资料整理了几个实用起点,但免费套餐边界可能变化,部署前仍应重新核验。
| 服务商 | 免费起点的价值 | 关键限制 | 优先测试 |
|---|---|---|---|
| Alpha Vantage | 官方 TIME_SERIES_DAILY 接口通过免费 API Key 提供全球股票原始日线 OHLCV,并支持 JSON 或 CSV。 | 免费 compact 响应只返回最近 100 条;完整 20 多年历史以及 Daily Adjusted 接口在官方文档中属于付费能力。 | 需要近期原始日线的小型自选股或夜间报告,而不是全市场深度历史回填。 |
| Twelve Data | 其个人套餐页面把全球股票与 ETF 的 EOD 数据列入免费范围,time series 接口可返回按时间排列的 OHLC,以及适用品种的成交量。 | 即使批量请求,额度仍按标的消耗,并按官方信用额度窗口重置;覆盖范围、历史深度、交易所访问和再分发仍取决于套餐。 | 多资产或国际市场原型,并实测每个交易日更新完整证券池所需的总额度。 |
| Marketstack | 官方 FAQ 说明免费套餐支持 EOD 数据,每月最多 1,000 次 API 请求,并提供最长 12 个月历史。 | 12 个月不足以支持长期因子研究;如果每个标的单独请求,月度额度也可能很快耗尽。 | 标的数量经过严格控制的近期行情看板或概念验证。 |
不要只比较宣传中的历史跨度。用同一组拆股日、分红日、提前收盘日、退市证券和跨市场上市证券测试所有候选。如果接口不能稳定识别同一证券,也无法解释日线为何发生变化,那么再大的标的数量也不能让数据变得可靠。
30 分钟快速验收样本
先测试 10 个有代表性的证券,而不是随机抓 100 个:两只高流动性美股、一只 ETF、一只 ADR 或海外上市证券、一只低成交量小盘股、一只发生过代码变更的证券、一只已退市证券(若支持)、一个近期拆股案例、一个现金分红除息日,以及一个提前收盘交易日。记录每家接口返回的交易日、时区、币种、原始值与复权值、缺失字段、响应时间、额度消耗,以及第二次抓取时最近日线是否变化。这样的证据比只成功请求一只热门大盘股更有判断力。
如何评估免费 EOD 股票数据 API
检查交易所时区、提前收盘、竞价、迟到成交和供应商发布时间。当地时间 16:01 获取的日线可能仍是初步值,之后还会修订。
要求原始 OHLCV 加拆股、分红事件或明确复权因子。计算收益时不能把复权收盘与未复权开高低价混在一起。
在各市场预期完成窗口后运行,跳过节假日和临时休市,并区分缺失交易日与证券真实零成交。
重复抓取短期滚动窗口,比较数据哈希,为变化的日线设置版本并记录原因。日频管道更需要受控修订,而不是极高请求速度。
应抽查提前收盘日、节假日前后、拆股除权日、特别分红日、停牌日、发生迟报修订的日期以及已退市证券。这些场景更容易暴露日历、复权和证券身份问题,而大型活跃股票的一周正常数据往往看不出来。
把免费限额换算为完成整个股票池回填所需的请求数和时间,并核对缓存、衍生数据、再分发及商业使用条款。接口价格为零,并不等于它适合生产产品。
拆股与分红示例:如果一只股票在 1 拆 2 前收于 100 美元,除权日开盘约为 50 美元,原始价格序列会显示接近 50% 的下跌,但一股旧股实际已经变成两股新股。拆股复权应把拆股前价格除以 2,同时把拆股前成交股数乘以 2;如果成交量也按价格方向除以 2,就会破坏换手和成交量分析。现金分红采用另一套回报口径:若股票在每股 1.00 美元现金分红前收于 50.00 美元,除息日收于 49.50 美元,价格收益为 49.50 ÷ 50.00 - 1 = -1.0%,而不考虑税费与再投资时点的含分派回报为 (49.50 + 1.00) ÷ 50.00 - 1 = 1.0%。应保留原始日线、公司行为记录、复权因子和回报计算口径,使用户能够复现任一序列。
可靠的 EOD 数据接入流程
- 依据交易所日历建立预期交易日清单,纳入提前收盘、节假日和临时休市;不能只根据接口返回的行来推断是否开市。
- 按照供应商注明的发布时间调度,而不是简单从名义收盘时间起算;同时获取原始日线、复权输入和数据状态元信息。
- 检查 OHLC 逻辑关系、非负成交量、币种、交易日期、证券身份及股票池完整性。异常数据应进入待核队列,不能静默向前填充。
- 不可变地保存原始响应,把首个版本标记为初步值,并滚动复查近期数据。来源修订日线时,应同时保留新旧数值。
- 在独立且可追溯的层中应用拆股和分红调整,使研究既能复现市场原始序列,也能复现选定的总回报口径。
- 在下游报告或回测启动前,发布每日质量清单,列出缺失证券、陈旧日线、来源时间、复权版本和最终确认状态。
借助 QVeris 发现股票数据能力
QVeris 可帮助智能体发现并检查可调用的金融数据能力,无需一开始就在代码中绑定某一家供应商。对于 EOD 流程,应先检查证券代码与日期参数、交易所覆盖、原始值与复权字段、返回时间戳和错误处理方式,再调用相应工具。结果仍需经过自己的质量校验、来源版本和许可控制;能够发现并调用接口,并不意味着不同供应商的数据口径可以直接互换。
常见问题
具体时间取决于交易所和供应商。日线可能在收盘数分钟后出现,但在竞价、迟报成交和修订处理完成前仍是初步值。应按照公开的发布时间调度,并滚动复查近期交易日。
不一定。官方收盘价可能来自收盘竞价或交易所计算,而最后一笔报告成交可能迟报、发生在场外,或不符合收盘价资格。必须核对接口采用的价格定义。
应把原始市场观测和公司行为作为底层事实,再生成单独设有版本的复权序列。这样既能避免混用复权与未复权字段,也能复现所采用的拆股和分红口径。
如果历史跨度、退市证券、时点化代码映射、公司行为、缺失交易日和许可条件都满足要求,它可以支持日频研究。只包含当前证券代码的数据会产生幸存者偏差。
应保存不可变的原始版本,滚动重抓近期窗口,比较变化字段,并记录来源时间与采集时间。只有经过预先定义的修订窗口后,才能把初步日线提升为最终值。
