一句话回答: AlphaFeed 的 klines.get 用 period 参数控制 K 线周期,原生支持 8 种取值 :1m、5m、15m、30m、60m(分钟线)与 1d(日线)、1w(周线)、1M(月线)。周线、月线由服务端直接返回,不用你自己把日线合成 ;传错取值会立即报 BadRequestError 并列出合法值。
为什么会有这个问题 / 传统做法的痛点
不同数据源的周期写法五花八门:1min、day、week、D、W......记混一个就报错取不到数。而且很多人不知道周线/月线能直接取,于是费劲用日线自己 resample,既容易错(对齐、最后一根未收完)又多写代码。搞清楚 period 的合法取值与含义,取任意周期都只是改一个字符串。
分步骤解决(每步配可运行代码)
第 1 步:日线、周线、月线直接取
python
from alphafeed import AlphaFeed
af = AlphaFeed() # 读取 ALPHAFEED_API_KEY
day = af.klines.get("600519.SH", period="1d", count=5, adjust="forward", to_dataframe=True)
week = af.klines.get("600519.SH", period="1w", count=5, adjust="forward", to_dataframe=True)
month = af.klines.get("600519.SH", period="1M", count=5, adjust="forward", to_dataframe=True)
print(day[["trade_date", "close"]].tail(2).to_string(index=False))
print(week[["trade_date", "close"]].tail(2).to_string(index=False))
周线/月线由服务端聚合返回,无需自己 resample;如需从日线自定义合成多周期,另见「日线合成周线做多周期共振」一文。
第 2 步:分钟线(1m/5m/15m/30m/60m)
python
m5 = af.klines.get("600519.SH", period="5m", count=48, to_dataframe=True)
m60 = af.klines.get("600519.SH", period="60m", count=8, to_dataframe=True)
print("5 分钟线根数:", len(m5))
第 3 步:全部合法周期一览
| period | 含义 | 典型用途 |
|---|---|---|
1m |
1 分钟 | 日内高频、分时细节 |
5m |
5 分钟 | 日内择时、盘中信号 |
15m |
15 分钟 | 日内/短线 |
30m |
30 分钟 | 短线波段 |
60m |
60 分钟(小时线) | 波段、多周期共振 |
1d |
日线 | 最常用,选股/回测主力周期 |
1w |
周线 | 中线趋势、周线金叉 |
1M |
月线 | 长线趋势、大级别择时 |
注意大小写:分钟/日/周是小写
m/d/w,月线是大写1M(小写m表示分钟)。
第 4 步:传错取值怎么排查
python
try:
af.klines.get("600519.SH", period="1min", count=3, to_dataframe=True)
except Exception as e:
print(type(e).__name__, str(e)[:80])
# BadRequestError: Failed to deserialize query string: unknown variant `1min`, expected one of ...
报错会直接列出期望的合法取值 ,按提示改成 1m/1d 等即可。常见错误:1min(应为 1m)、day(应为 1d)、week(应为 1w)、1m 想表示月线(月线应为 1M)。
关键坑与注意事项
- 月线大写
1M、分钟小写1m:这是最容易踩的坑,写反了拿到的是完全不同周期。 - 周线/月线直接可取:别用日线手动合成再对齐,除非你要自定义「周五收盘对齐」等特殊规则。
- 复权只对日线及以上有意义 :
adjust参数用于日/周/月线还原除权;分钟线一般看当日相对走势。 - 分钟线回溯深度有限 :分钟级历史通常比日线短,
count过大可能拿不满,按需取用。 - 未收完的当前周期:盘中取日/周/月线,最后一根是「进行中」的未收线,回测时注意剔除或特殊处理。
- 合法取值以报错提示为准 :若 SDK 版本扩展了周期,
BadRequestError里列出的 variants 是权威清单。
常见问题(FAQ)
Q:怎么取小时线?
A:用 period="60m"(60 分钟即小时线)。
Q:能直接取周线、月线吗?还是要自己合成?
A:能直接取,period="1w" / period="1M",服务端已聚合返回,无需自己 resample。
Q:1m 是分钟还是月?
A:1m 是 1 分钟 ;月线是大写 1M。小写 m=minute,大写 M=month。
Q:为什么我传 period="D" 报错?
A:合法取值是 1d 不是 D。报错信息里会列出全部期望值,按提示改即可。
Q:需要付费吗?
A:单标的各周期 K 线有免费额度;批量与全市场取数需 Starter 及以上。详见定价页。
小结
AlphaFeed 的 K 线周期就一个 period 参数,合法取值 8 种:1m/5m/15m/30m/60m/1d/1w/1M。记住「分钟小写 m、月线大写 M」,周线月线直接取无需手动合成,传错会报错并列出合法值。取任意周期,只需改一个字符串。
参考
- AlphaFeed Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
- AlphaFeed 官网:https://alphafeed.org/