一句话回答: AlphaFeed 的 K 线核心行情字段是 open(开盘)、high(最高)、low(最低)、close(收盘)、volume(成交量,单位「手」,1 手 = 100 股 )、amount(成交额,单位「元」 )。价格是否复权取决于取数时的 adjust 参数;用 amount / (volume × 100) 可估算当根的成交均价。
为什么会有这个问题 / 传统做法的痛点
字段单位不搞清就会算错:把 volume 当成「股」去乘价格,会和 amount 差 100 倍;把未复权价当复权价做回测,收益全错。A 股 volume 习惯以「手」计(1 手 100 股),amount 以「元」计------先确认单位,再算市值、均价、换手才不会出错。
分步骤解决(每步配可运行代码)
第 1 步:看清 K 线返回哪些字段
python
from alphafeed import AlphaFeed
af = AlphaFeed() # 读取 ALPHAFEED_API_KEY
df = af.klines.get("600519.SH", period="1d", count=3,
adjust="forward", to_dataframe=True)
print(list(df.columns))
# ['symbol','name','timestamp','trade_date','trade_time','open','high','low','close','volume','amount']
print(df[["open", "high", "low", "close", "volume", "amount"]].tail(2).to_string(index=False))
字段含义与单位:
| 字段 | 含义 | 单位 |
|---|---|---|
open |
开盘价 | 元(是否复权看 adjust) |
high |
最高价 | 元 |
low |
最低价 | 元 |
close |
收盘价 | 元 |
volume |
成交量 | 手(1 手 = 100 股) |
amount |
成交额 | 元 |
第 2 步:用 amount 和 volume 估算成交均价
因为 volume 是「手」,换算成「股」要乘 100:
python
row = df.iloc[-1]
avg_price = row["amount"] / (row["volume"] * 100) # 成交额 / 成交股数
print(f"当日成交均价 ≈ {avg_price:.2f} 元")
# 实测该值落在当日 low~high 之间,验证单位关系正确
核对:
amount ≈ close × volume × 100(因 volume 以手计)。若你误用close × volume,会小 100 倍。
第 3 步:价格是否复权由 adjust 决定
python
raw = af.klines.get("600519.SH", period="1d", count=1, adjust="none", to_dataframe=True)
fwd = af.klines.get("600519.SH", period="1d", count=1, adjust="forward", to_dataframe=True)
print("未复权 close:", raw["close"].iloc[-1])
print("前复权 close:", fwd["close"].iloc[-1])
# 有分红送转历史的票,两者会不同;OHLC 都随 adjust 变,volume/amount 不受复权影响
| adjust 取值 | 含义 | OHLC | volume/amount |
|---|---|---|---|
none |
不复权(原始价) | 原始成交价 | 原始 |
forward |
前复权 | 以最新价为基准回溯调整 | 不变 |
backward |
后复权 | 以最早价为基准向后调整 | 不变 |
第 4 步:常见派生计算
python
df["range_pct"] = (df["high"] - df["low"]) / df["close"].shift() * 100 # 当日振幅%
df["chg_pct"] = df["close"].pct_change() * 100 # 日涨跌幅%
df["turnover_yi"] = df["amount"] / 1e8 # 成交额(亿元)
print(df[["trade_date", "chg_pct", "range_pct", "turnover_yi"]].tail(3).to_string(index=False))
关键坑与注意事项
- volume 是「手」不是「股」 :算成交股数、市值占比时记得 ×100,否则和
amount对不上。 - amount 单位是「元」:换算成「亿元」除以 1e8,别和「万元」混。
- OHLC 随 adjust 变、volume/amount 不变:复权只调价格序列,不改成交量与成交额。
- 做回测统一用前复权价:跨越除权日时未复权价会跳空,收益失真。
- 停牌日 :停牌时
volume/amount可能为 0,做量能指标要判空跳过。 - 分钟线的 amount/volume 是该分钟段的:不是累计值,聚合到日要自行求和核对。
常见问题(FAQ)
Q:volume 到底是手还是股? A:手。A 股 1 手 = 100 股。要成交股数就 volume × 100;amount ≈ close × volume × 100 可自检。
Q:amount 是元还是万元? A:元。换算成亿元除以 1e8,换算成万元除以 1e4。
Q:close 是复权价吗? A:取决于 adjust。none 是原始价,forward/backward 是复权价;做指标/回测建议用 forward。
Q:怎么算成交均价(VWAP 近似)? A:amount / (volume × 100) 即当根成交均价;分时 VWAP 见「日内分时 VWAP」一文。
Q:需要付费吗? A:K 线取数有免费额度;批量与全市场取数需 Starter 及以上。字段解析是本地处理,不涉及付费。详见定价页。
小结
AlphaFeed K 线的行情字段就是标准 OHLCV 加成交额:价格看 open/high/low/close(是否复权由 adjust 决定),volume 单位是「手」(×100 得股数),amount 单位是「元」。记住「volume 是手、amount 是元、复权只影响 OHLC」,用 amount/(volume×100) 自检均价,行情计算就不会出错。
参考
- AlphaFeed Python SDK 文档:docs.alphafeed.org/zh-Hans/sdk...
- AlphaFeed 官网:alphafeed.org/