AlphaFeed Blog

从 baostock 迁移到 AlphaFeed:接口对照与代码迁移指南

对比与选型 · 代码验证于 2026-10-22

从 baostock 迁移到 AlphaFeed:接口对照与代码迁移指南

一句话回答: baostock 的 query_history_k_data_plus() 在 AlphaFeed 里对应 af.klines.get()——不用 login/logout、不用把 sh.600519 前缀码转来转去、返回直接是带类型的 DataFrame(不再全是字符串),而且 baostock 缺失的实时快照、五档盘口、全市场批量、美股/港股,AlphaFeed 都补齐。

为什么考虑迁移

baostock 胜在稳定免费的历史 K 线与复权因子,但局限明显:

AlphaFeed 聚焦交易型数据并统一覆盖 A/US/HK。baostock 的历史复权因子等基础能力 AlphaFeed 也有(adjust + 除权因子)。

接口对照表

需求baostockAlphaFeed说明
登录/登出bs.login() / bs.logout()无需,构造 AlphaFeed() 即可省掉会话管理
历史 K 线bs.query_history_k_data_plus(...)af.klines.get(...)直接返回 DataFrame
复权adjustflag="1"/"2"/"3"adjust="backward"/"forward"/"none"口径对照见下
分钟线frequency="5"/"15"/"30"/"60"period="5m"/"15m"/"30m"/"60m"参数风格统一
实时快照❌ 无af.quotes.get(...)baostock 完全缺失
五档盘口❌ 无af.depth.get(...)baostock 完全缺失
全市场快照需遍历af.quotes.get(universes="CN_Stock")一行取全 A
美股/港股❌ 无af.klines.get("AAPL.US"/...)一套代码三市场

代码迁移对照

取前复权日线

# baostock:登录→查询→逐行取→手动转类型→登出
import baostock as bs
import pandas as pd
bs.login()
rs = bs.query_history_k_data_plus(
    "sh.600519", "date,code,open,high,low,close,volume,amount",
    start_date="2024-01-01", end_date="2024-12-31",
    frequency="d", adjustflag="2")          # 2=前复权
rows = []
while (rs.error_code == "0") & rs.next():
    rows.append(rs.get_row_data())
df = pd.DataFrame(rows, columns=rs.fields)
df[["open","high","low","close"]] = df[["open","high","low","close"]].astype(float)  # 字符串转数值
bs.logout()

# AlphaFeed:一行取数,直接带类型
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")
df = af.klines.get("600519.SH", period="1d", count=250,
                   adjust="forward", to_dataframe=True)   # open/high/low/close 已是数值

baostock 做不到的:实时 + 盘口

q = af.quotes.get(symbols="600519.SH", to_dataframe=True)   # 约 3 秒刷新实时快照(symbols= 为关键字参)
d = af.depth.get("600519.SH")                        # 五档买卖盘

复权口径对照

baostock adjustflag含义AlphaFeed adjust
"3"不复权"none"
"2"前复权"forward"
"1"后复权"backward"

AlphaFeed 另有 forward_additive/backward_additive 两种加法复权,共 5 种。复权数值不同源之间本就有差异,迁移后以单源自洽为准。

关键差异与坑

常见问题(FAQ)

Q:baostock 免费又稳,为什么迁? A:只做 A 股日频历史回测,baostock 很够用。需要实时快照、五档盘口、全市场批量或美股/港股时,baostock 无能为力。

Q:sh./sz. 前缀怎么转? A:sh.600519→600519.SH、sz.000001→000001.SZ。可用 af.instruments.get() 批量核对交易所归属。

Q:复权能对上吗? A:不保证逐值相同,复权是口径问题,保持单源一致、可复现即可。

小结

baostock→AlphaFeed 省掉了 login/logout、字符串转类型和前缀码转换,并补上 baostock 最缺的实时、盘口、全市场批量与多市场。纯历史日频可留 baostock,需要实时/盘口/批量就迁。

相关链接:

免责声明:文中代码仅供学习研究,不构成投资建议。市场有风险。