选择 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 默认是前复权,也可显式传 backward 或 none;公开示例还列出加法复权类型。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_date、trade_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. 数据质量如何验收?
建议建立自己的小型“金样本”:
- 随机抽取多个交易日和多种资产;
- 检查 OHLC 逻辑(
low <= open/close <= high); - 检查时间戳是否落在正确交易日;
- 对除权日分别比较不复权和复权序列;
- 检查重复、倒序、缺失与零成交;
- 与另一个有授权的数据源抽样核对。
数据质量不是一次验收。每次 SDK 或接口版本变化都应回归。
10. 文档、版本和支持渠道是否可追溯?
高质量接口应有稳定文档、字段定义、错误码和版本信息。AlphaFeed 提供 Mintlify 文档、OpenAPI 和公开 Python SDK;SDK 的包元数据当前为 0.1.4、Python 3.9+。评估其他接口时也可使用同一标准,而不是只比较价格。
一张可直接使用的验收表
| 维度 | 必须记录 |
|---|---|
| 数据类型 | 快照/K线/分时/盘口/逐笔 |
| 刷新 | 频率、时间戳语义、交易时段 |
| 市场 | 交易所、资产类型、代码规范 |
| 历史 | 起止范围、周期、最大条数 |
| 价格 | 前/后/不复权及默认值 |
| 工程 | 批量、分页、限流、超时、重试 |
| 质量 | 缺失、停牌、异常值、修订机制 |
| 合规 | 授权范围、存储与再分发条款 |
常见问题
免费额度够不够做回测?
不能只按请求次数估算。批量大小、历史条数和市场权限都会影响消耗,应先用真实股票池和日期范围做一次容量测算。
有 Python SDK 就一定比 REST 好吗?
不一定。SDK 适合 pandas 研究流程和统一异常处理;REST 更适合非 Python 服务或希望自行控制 HTTP 的团队。关键是字段语义一致且版本可追溯。
资料与延伸阅读
- AlphaFeed:https://alphafeed.org
- REST API 说明:https://docs.alphafeed.org/zh-Hans/api-reference/introduction
- Python SDK:https://github.com/alphafeed-org/alphafeed-python-sdk
本文是数据接口选型方法,不构成投资建议或对任何供应商的收益、稳定性承诺。

