支持 Python 3.9+,推荐 3.10 或更高版本。内置 pandas 和 tqdm 支持。
初始化
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")
也可以通过环境变量设置:
export ALPHAFEED_API_KEY="your-api-key"
from alphafeed import AlphaFeed
af = AlphaFeed() # 自动读取 ALPHAFEED_API_KEY
标的代码格式
标的代码统一使用 {代码}.{交易所后缀} 格式:
| 后缀 | 交易所 | 示例 |
|---|
.SH | 上海证券交易所 | 600519.SH |
.SZ | 深圳证券交易所 | 000001.SZ |
.BJ | 北京证券交易所 | 920047.BJ |
.US | 美股 | AAPL.US |
.HK | 港股 | 00700.HK |
获取日K线
支持周期:1d(日)、1w(周)、1M(月)、1Q(季)、1Y(年)
df = af.klines.get("600519.SH", period="1d", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_date", "open", "high", "low", "close", "volume"]])
symbol name trade_date open high low close volume
600519.SH 贵州茅台 2026-06-02 1306.00 1326.36 1301.00 1307.22 36362
600519.SH 贵州茅台 2026-06-03 1304.00 1304.00 1276.00 1281.91 52477
600519.SH 贵州茅台 2026-06-04 1278.99 1288.99 1266.69 1268.00 33506
600519.SH 贵州茅台 2026-06-05 1278.00 1283.00 1267.74 1272.86 31304
600519.SH 贵州茅台 2026-06-08 1272.00 1278.00 1260.00 1262.98 30828
获取分钟K线
支持周期:1m(1分钟)、5m(5分钟)、15m(15分钟)、30m(30分钟)、60m(60分钟)
df = af.klines.get("600519.SH", period="5m", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_time", "open", "high", "low", "close", "volume"]])
symbol name trade_time open high low close volume
600519.SH 贵州茅台 2026-06-08 14:40:00 1263.21 1263.86 1262.11 1262.81 502
600519.SH 贵州茅台 2026-06-08 14:45:00 1262.93 1263.48 1260.00 1260.80 1307
600519.SH 贵州茅台 2026-06-08 14:50:00 1261.40 1261.80 1260.80 1261.00 544
600519.SH 贵州茅台 2026-06-08 14:55:00 1260.88 1261.25 1260.42 1260.78 810
600519.SH 贵州茅台 2026-06-08 15:00:00 1260.80 1263.34 1260.80 1262.98 577
复权方式
K 线接口支持 adjust 参数:
| 值 | 说明 |
|---|
forward | 前复权(默认) |
backward | 后复权 |
none | 不复权 |
df = af.klines.get("600519.SH", adjust="none", to_dataframe=True) # 不复权
df = af.klines.get("600519.SH", adjust="forward", to_dataframe=True) # 前复权(默认)
df = af.klines.get("600519.SH", adjust="backward", to_dataframe=True) # 后复权
批量获取K线
一次请求获取多只标的的K线数据:
symbols = ["600519.SH", "000001.SZ"]
dfs = af.klines.batch(symbols, period="1d", count=3, to_dataframe=True, show_progress=True)
for sym, df in dfs.items():
print(f"--- {sym} ({df['name'].iloc[0]}) ---")
print(df[["trade_date", "open", "close", "volume"]].to_string(index=False))
--- 000001.SZ (平安银行) ---
trade_date open close volume
2026-06-04 10.91 10.82 869271
2026-06-05 10.83 10.98 1003503
2026-06-08 10.97 11.03 1090926
--- 600519.SH (贵州茅台) ---
trade_date open close volume
2026-06-04 1278.99 1268.00 33506
2026-06-05 1278.00 1272.86 31304
2026-06-08 1272.00 1262.98 30828
获取实时行情
按标的代码查询
df = af.quotes.get(symbols=["600519.SH", "000001.SZ"], to_dataframe=True)
print(df[["symbol", "last_price", "prev_close", "volume", "ext.name", "ext.change_pct"]])
symbol last_price prev_close volume ext.name ext.change_pct
600519.SH 1262.98 1272.86 30828 贵州茅台 -0.007762
000001.SZ 11.03 10.98 1090926 平安银行 0.004554
按标的池查询(全量行情)
支持的标的池:
| 标的池 ID | 说明 |
|---|
CN_Stock | A 股(沪深) |
CN_ETF | ETF |
US_Stock | 美股 |
HK_Stock | 港股 |
df = af.quotes.get(universes=["CN_Stock"], to_dataframe=True)
print(df)
symbol region last_price prev_close open ... ext.name ext.change_pct ext.change_amount ext.amplitude ext.turnover_rate
0 300522.SZ CN 11.13 11.61 11.34 ... 世名科技 -0.041344 -0.48 0.068045 0.027931
1 688283.SH CN 36.00 37.42 36.46 ... 坤恒顺维 -0.037948 -1.42 0.070818 0.013895
2 301509.SZ CN 26.21 27.44 27.15 ... 金凯生科 -0.044825 -1.23 0.051020 0.035865
3 688183.SH CN 112.11 117.85 110.00 ... 生益电子 -0.048706 -5.74 0.085023 0.030515
4 300830.SZ CN 8.94 9.06 8.80 ... 金现代 -0.013245 -0.12 0.052980 0.030392
... ... ... ... ... ... ... ... ... ... ... ...
5512 300531.SZ CN 16.50 15.82 15.98 ... 优博讯 0.042984 0.68 0.068268 0.085419
5513 300078.SZ CN 3.31 3.33 3.22 ... 思创智联 -0.006006 -0.02 0.066066 0.027491
5514 002638.SZ CN 4.18 4.31 4.15 ... 勤上股份 -0.030162 -0.13 0.058005 0.020665
5515 300972.SZ CN 180.80 185.00 184.00 ... 万辰集团 -0.022703 -4.20 0.047568 0.012079
5516 603170.SH CN 11.89 12.17 11.96 ... 宝立食品 -0.023007 -0.28 0.036976 0.006025
[5517 rows x 18 columns]
获取日内分时
单只标的
支持周期:1m(默认)、5m、15m、30m、60m
df = af.klines.intraday("600519.SH", count=5, to_dataframe=True)
print(df[["symbol", "name", "trade_time", "close", "volume"]])
symbol name trade_time close volume
600519.SH 贵州茅台 2026-06-08 14:56:00 1263.00 191
600519.SH 贵州茅台 2026-06-08 14:57:00 1262.99 126
600519.SH 贵州茅台 2026-06-08 14:58:00 1263.00 6
600519.SH 贵州茅台 2026-06-08 14:59:00 1263.00 0
600519.SH 贵州茅台 2026-06-08 15:00:00 1262.98 254
批量日内分时
dfs = af.klines.intraday_batch(["600519.SH", "000001.SZ"], to_dataframe=True)
for sym, df in dfs.items():
print(f"{sym}: {len(df)} 条分钟线")
获取标的信息
insts = af.instruments.get(["600519.SH", "000001.SZ"])
for i in insts:
print(f"{i['symbol']:>10s} {i['name']:<6s} 交易所={i['exchange']} 类型={i['type']} 上市={i['ext'].get('listing_date','')}")
600519.SH 贵州茅台 交易所=SH 类型=stock 上市=2001-08-27
000001.SZ 平安银行 交易所=SZ 类型=stock 上市=1991-04-03
获取除权因子
df = af.klines.ex_factors(["600519.SH"], to_dataframe=True)
print(df[["symbol", "trade_date", "ex_factor"]].tail(5))
symbol trade_date ex_factor
600519.SH 2023-12-20 1.011540
600519.SH 2024-06-19 1.020716
600519.SH 2024-12-20 1.015637
600519.SH 2025-06-26 1.019649
600519.SH 2025-12-19 1.017003
获取五档盘口
depth = af.depth.get("600519.SH")
print(f"标的: {depth['symbol']} 地区: {depth['region']}")
for i in range(5):
bid = f"买{i+1}: {depth['bid_prices'][i]:>10.2f} x {depth['bid_volumes'][i]}"
ask = f"卖{i+1}: {depth['ask_prices'][i]:>10.2f} x {depth['ask_volumes'][i]}"
print(f" {bid} | {ask}")
标的: 600519.SH 地区: CN
买1: 1262.98 x 2 | 卖1: 1262.99 x 7
买2: 1262.65 x 1 | 卖2: 1263.00 x 44
买3: 1262.31 x 1 | 卖3: 1263.02 x 1
买4: 1262.20 x 2 | 卖4: 1263.20 x 2
买5: 1262.03 x 2 | 卖5: 1263.34 x 1