跳转到主要内容

安装

pip install alphafeed
支持 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_StockA 股(沪深)
CN_ETFETF
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(默认)、5m15m30m60m
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