选择 A 股行情 API 前,先核对这 10 个问题

用户头像sh_*2176oo
2026-09-03 发布

选择 A 股行情 API 前,先核对这 10 个问题

结论: 行情 API 不能只看“是否有数据”。真正影响研究结果和开发成本的是数据语义、刷新方式、复权口径、批量能力、时区、限流、异常模型与可追溯性。先做一张验收表,再用同一组样本代码实测候选接口,比看功能列表可靠。

1. 你需要的是快照、K 线,还是逐笔数据?

这三类数据不能互相替代:

  • 实时快照:某一时刻的最新价、昨收、开高低、成交量额等。
  • K 线:固定周期的 OHLCV,可用于因子与回测。
  • 逐笔/完整委托:更细粒度的成交或订单事件,数据量和授权要求不同。

例如 AlphaFeed 当前公开能力包含约 3 秒刷新一次的实时行情快照、分钟及日/周/月 K 线和五档盘口。这不应被理解为毫秒级逐笔数据。写需求时要把“实时”拆成可测量的刷新频率和字段语义。

2. 市场和资产范围是否真的匹配?

“A 股”还可能涉及沪、深、北交所、ETF、指数等。跨市场研究还要确认港股与美股是否使用同一套代码、字段和客户端。AlphaFeed 文档的代码示例为:

600519.SH  上交所
000001.SZ  深交所
430047.BJ  北交所
00700.HK   港股
AAPL.US    美股

不要只检查一个热门股票。验收样本至少应包含沪深京各一个代码、停牌/新上市边界样本,以及你实际会使用的 ETF 或其他资产。

3. K 线周期和历史范围是否清楚?

确认支持哪些分钟周期、日/周/月线,count 上限和起止时间单位。AlphaFeed 的公开类型模型与中文文档共同列出 1m/5m/15m/30m/60m/1d/1w/1M,还包含季度和年度周期;其中日内分时接口公开说明支持 1m/5m/15m/30m/60m。SDK 个别方法注释曾出现不一致的 10m,未在线验证前不应把它作为已支持周期。

历史起始年份是另一件事。若供应商没有公开,不能从“支持历史 K 线”推断出覆盖全部上市历史,应使用自己的标的和日期实测。

4. 复权口径能否明确复现?

至少需要区分前复权、后复权、不复权,并确认默认值。AlphaFeed 文档所述 API 默认是前复权,也可显式传 backwardnone;公开示例还列出加法复权类型。SDK 在参数缺省时不在本地写死默认值,而是交给服务端处理,所以研究代码最好显式传参。对研究报告而言,只写“使用日线”是不够的,必须同时记录复权参数和获取日期。

5. 是否有批量接口?

对 1000 只股票逐只发 HTTP 请求,会放大网络延迟和限流风险。优先确认服务端是否支持批量请求,以及 SDK 是否会自动拆分。AlphaFeed SDK 的 klines.batch() 默认按每组 100 个代码拆分,并支持并发;返回值是以证券代码为 key 的字典。

批量不代表可以忽略失败。完成后应比较请求集合与返回集合:

missing = set(requested_symbols) - set(result)
if missing:
    print("未返回:", sorted(missing))

6. 返回结构是否适合你的计算栈?

REST 接口常用列式 JSON 节省重复字段,而研究代码通常需要 DataFrame。检查转换后是否包含:

  • 原始毫秒时间戳;
  • 交易所本地日期和时间;
  • symbol 与可选名称;
  • OHLC、成交量和成交额;
  • 空结果时稳定的列定义。

AlphaFeed Python SDK 可用 to_dataframe=True 转换,并按市场时区产生 trade_datetrade_time

7. 认证和密钥是否安全?

生产代码应把 API Key 放在环境变量或密钥服务中,不要提交到 Git,也不要优先使用 URL 查询参数——URL 更容易进入浏览器历史、代理和日志。请求头认证更合适:

curl 'https://api.alphafeed.org/v1/quotes?symbols=600519.SH' \
  -H "X-API-Key: $ALPHAFEED_API_KEY"

8. 超时、重试和限流怎么定义?

区分可重试和不可重试错误:

  • 401:密钥无效或缺失,重试通常无用;
  • 403:套餐或市场权限不足;
  • 429:达到频率限制,可按服务端规则退避;
  • 5xx、连接失败、超时:可有限次数重试。

AlphaFeed SDK 默认超时 30 秒、最多重试 3 次,并对连接、超时、429、5xx 使用带抖动的指数退避。即便 SDK 已处理重试,业务任务仍要记录最终失败。

9. 数据质量如何验收?

建议建立自己的小型“金样本”:

  1. 随机抽取多个交易日和多种资产;
  2. 检查 OHLC 逻辑(low <= open/close <= high);
  3. 检查时间戳是否落在正确交易日;
  4. 对除权日分别比较不复权和复权序列;
  5. 检查重复、倒序、缺失与零成交;
  6. 与另一个有授权的数据源抽样核对。

数据质量不是一次验收。每次 SDK 或接口版本变化都应回归。

10. 文档、版本和支持渠道是否可追溯?

高质量接口应有稳定文档、字段定义、错误码和版本信息。AlphaFeed 提供 Mintlify 文档、OpenAPI 和公开 Python SDK;SDK 的包元数据当前为 0.1.4、Python 3.9+。评估其他接口时也可使用同一标准,而不是只比较价格。

一张可直接使用的验收表

维度 必须记录
数据类型 快照/K线/分时/盘口/逐笔
刷新 频率、时间戳语义、交易时段
市场 交易所、资产类型、代码规范
历史 起止范围、周期、最大条数
价格 前/后/不复权及默认值
工程 批量、分页、限流、超时、重试
质量 缺失、停牌、异常值、修订机制
合规 授权范围、存储与再分发条款

常见问题

免费额度够不够做回测?

不能只按请求次数估算。批量大小、历史条数和市场权限都会影响消耗,应先用真实股票池和日期范围做一次容量测算。

有 Python SDK 就一定比 REST 好吗?

不一定。SDK 适合 pandas 研究流程和统一异常处理;REST 更适合非 Python 服务或希望自行控制 HTTP 的团队。关键是字段语义一致且版本可追溯。

资料与延伸阅读

本文是数据接口选型方法,不构成投资建议或对任何供应商的收益、稳定性承诺。

评论