一句话回答: 不是 bug。用 AlphaFeed 取历史 K 线(klines)时,A 股的 amount(成交额)是真实值,美股/港股的 amount 为 0.0——这是数据源口径差异,美港股历史 K 线只给量不给额,用 volume 替代即可。注意一个反差:实时快照 quotes 的 amount 对美股/港股是有值的(实测 AAPL.US ≈ 234 亿、00700.HK ≈ 85 亿)。所以「amount=0」只发生在美港股的历史 K 线,不发生在实时 quotes。跨市场代码要对 amount 字段按市场分别处理。
AlphaFeed 用统一的 {代码}.{市场} 一套接口取 A/US/HK(见 multi-market-a-us-hk),字段名也统一。但底层数据源对不同市场提供的字段完整度不同:
volume(手)+ amount(元)都有;volume(股),amount 恒为 0.0。如果你的跨市场代码直接用 amount 算 VWAP、换手额、成交额排名,在美港股上就会得到 0——不是数据缺失报错,而是字段口径差异,需要显式处理。
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
for s in ["600519.SH", "AAPL.US", "00700.HK"]:
k = af.klines.get(s, period="1d", count=5, to_dataframe=True)
print(s, "amount前3:", k["amount"].head(3).tolist(), "| volume末:", k["volume"].iloc[-1])实测结果:
标的 | 市场 | 历史 K 线 | 历史 K 线 | 实时 |
|---|---|---|---|---|
600519.SH | A 股 | ✅ 5,574,287,630(元) | ✅ 59927(手) | ✅ 有值 |
AAPL.US | 美股 | ❌ 0.0 | ✅ 67,842,804(股) | ✅ ≈234 亿 |
00700.HK | 港股 | ❌ 0.0 | ✅ 22,269,954(股) | ✅ ≈85 亿 |
关键反差:美港股历史 K 线
amount=0,但实时quotes的amount有值。别把两者混为一谈。
字段 | A 股 | 美股 | 港股 | 说明 |
|---|---|---|---|---|
| ✅ 元 | ❌ 0.0 | ❌ 0.0 | 历史成交额仅 A 股 |
| 手(×100=股) | 股 | 股 | 单位口径不同! |
| ✅ 元 | ✅ 有值 | ✅ 有值 | 实时成交额各市场都有 |
| ✅ | ✅ | ✅ | 小数 |
涨跌停 | ✅ | 无(不适用) | 无(不适用) | 见 instruments |
交易日历/时区 | 沪深 | 美东 | 港 | 需各自对齐 |
def safe_amount(df, market: str):
"""历史 K 线成交额:美港股用 close×volume 估算替代 0。"""
if market == "SH" or market == "SZ" or market == "BJ":
return df["amount"] # A 股直接用真实成交额
# 美港股 volume 单位是股,用 收盘价×成交量 估算成交额
return df["close"] * df["volume"]
# 或:需要精确实时成交额时,用 quotes 而非 klines
q = af.quotes.get(symbols="AAPL.US")[0]
realtime_amount = q["amount"] # 美股实时 amount 有值amount=0 只在美港股历史 K 线:实时 quotes 的 amount 美港股有值,别误以为整个美港股都没有成交额。volume 单位跨市场不同:A 股是「手」(1 手=100 股),美港股是「股」。跨市场算换手、金额时务必换算,否则差 100 倍。close×volume 只是估算:历史 K 线没有真实 amount,用收盘价乘量是近似(日内均价≠收盘价),要精确成交额用实时 quotes 或改用别的口径。amount 排序/算 VWAP:会全是 0。先判市场再决定用 amount 还是 volume。Q:美股 K 线 amount=0 是数据缺失或报错吗?
A:不是。是数据源对美港股历史 K 线不提供成交额的口径差异,接口正常返回、只是该字段为 0。用 volume 或实时 quotes.amount 替代。
Q:那我要美股历史成交额怎么办?
A:历史 K 线没有真实 amount,可用 close×volume 估算;要精确值用实时 quotes(美港股 quotes 的 amount 有值),或接受「美港股以量为准」。
Q:A 股和美股的 volume 能直接比吗?
A:不能。A 股 volume 单位是「手」,美港股是「股」,差 100 倍,比之前先统一单位。
Q:需要付费吗?
A:多市场历史与实时有免费额度可体验,大批量/全市场实时建议 Starter 及以上,详见官网定价页。
跨市场取数时,「美港股 K 线 amount=0」是字段口径差异而非 bug:历史成交额仅 A 股可靠,美港股用 volume(注意单位是「股」不是「手」)或实时 quotes.amount。写跨市场代码先判市场再选字段,就不会被 0 和单位坑到。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。