一句话回答: 多数「对不上」其实是复权口径 问题,不是数据错。实测:quotes.get 的 last_price 与 klines.get(adjust="none"/"forward") 的最新 close 完全一致 (600519.SH 都是 1453.0、000001.SZ 都是 11.81);但 adjust="backward"(后复权)的最新 close 会被放大 (11143.86 / 1299.02)------因为后复权以最早价为基准向上缩放。所以:要和实时价对齐,用 none 或 forward;backward 只用于回测、不要拿它的价和实时价比 。另一类差异是盘中:K 线当日最后一根还在形成,和每几秒刷新的实时快照自然有细微差。诚实边界:实时为约 3 秒快照;跨源价格对不上是另一回事(口径/延迟不同)。
两个"最新价"分别是什么
quotes.get(...)[0]["last_price"]:实时快照的最新成交价 (约 3 秒刷新),是原始价口径。klines.get(..., adjust=X)的最新close:最近一根 K 线的收盘价 ,数值取决于adjust。
它们对不对得上,关键看 adjust。
实测对照(关键)
python
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")
for s in ["600519.SH", "000001.SZ"]:
q = af.quotes.get(symbols=s)[0]["last_price"]
none = af.klines.get(s, period="1d", count=1, adjust="none", to_dataframe=True)["close"].iloc[-1]
fwd = af.klines.get(s, period="1d", count=1, adjust="forward", to_dataframe=True)["close"].iloc[-1]
bwd = af.klines.get(s, period="1d", count=1, adjust="backward", to_dataframe=True)["close"].iloc[-1]
print(s, q, none, fwd, round(float(bwd), 2))
| 标的 | quotes last_price |
kline none |
kline forward |
kline backward |
|---|---|---|---|---|
| 600519.SH | 1453.0 | 1453.0 | 1453.0 | 11143.86 |
| 000001.SZ | 11.81 | 11.81 | 11.81 | 1299.02 |
结论:
none/forward的最新价 = 实时价 ;backward被放大(以最早价为基准缩放历史→最新端放大),数值大是正常的,不是错。
为什么会「对不上」------三种情形
| 现象 | 原因 | 怎么办 |
|---|---|---|
| backward 收盘远大于实时价 | 后复权以最早价为基准放大 | 正常;回测用 backward,比价用 none/forward |
| 盘中实时价 ≠ 当日 K 线收盘 | 当日 K 线还在形成、实时约 3s 刷新 | 盘中用 quotes 看最新,收盘后再看日线 close |
| 和同花顺/其他源对不上 | 跨源复权因子/延迟不同 | 以单源自洽为准,别逐厘对齐 |
该用哪个"最新价"
- 要"此刻的成交价"(盯盘/下单参考) →
quotes的last_price。 - 要和实时价同口径的历史序列 →
klines用none或forward。 - 要做可复现回测 →
klines用backward(但别拿它的绝对价和实时比)。
关键坑与注意事项
- 别拿 backward 的价和实时价比:口径不同,差几倍是设计使然,不是 bug。
- 同一分析固定一种 adjust:比价/展示用 none/forward,回测用 backward,不要混。
- 盘中以 quotes 为准:当日 K 线未收盘,close 会随盘变化;实时最新价看 quotes。
- forward 的历史会随新除权变动:虽然 forward 最新价=实时价,但它的历史段不可复现(复权未来函数),回测仍用 backward。
- 跨源对不上另当别论:那是不同数据源的口径/延迟差异,不在本文(单源内一致性才是本文重点)。
常见问题(FAQ)
Q:为什么后复权收盘价上万,和现价差这么多? A:后复权以最早价为基准、把后续价格按累计复权因子放大,所以最新端数值很大。正常现象,用于回测;比价请用 none/forward。
Q:实时价和日线收盘到底该信哪个? A:盘中看「此刻成交价」用 quotes;收盘后的「当日收盘」看日线 close(none/forward 与收盘实时价一致)。
Q:forward 既然等于实时价,回测为什么不用它? A:forward 最新价对齐现价,但它的历史会随新除权被重写(未来函数风险),不可复现;回测用 backward。
Q:需要付费吗? A:实时与历史均有免费额度可体验,详见官网定价页。
小结
quotes 的 last_price 和 klines 的最新 close 对不上,99% 是复权口径:none/forward 与实时价一致,backward 被放大(回测用)。记住「比价用 none/forward、回测用 backward、盘中用 quotes」,同一分析不混口径,就不会再被"价格对不上"困惑。
参考
- AlphaFeed Python SDK 文档:docs.alphafeed.org/zh-Hans/sdk...
- AlphaFeed 官网:alphafeed.org/
- 本文完整版(AlphaFeed 博客):blog.alphafeed.org/blog/quotes...