AlphaFeed Blog

vnpy 用什么数据源?A 股历史行情接入与 BarData 映射实操

对比与选型 · 代码验证于 2026-11-02

vnpy 用什么数据源?A 股历史行情接入与 BarData 映射

一句话回答: vnpy 是开源量化交易框架,交易走券商网关(CTP/券商柜台)、数据走「数据服务(datafeed)」;但它内置的数据服务多面向期货或需付费账号,个人做 A 股常卡在「历史行情从哪来」。务实做法:用 AlphaFeed 取 A 股后复权 K 线 → 映射成 vnpy 的 BarData → 存入 vnpy 数据库跑回测。本文的 AlphaFeed 取数部分真实验证(klines 含 open/high/low/close/volume/amount,amount 可作 turnover)。诚实边界:vnpy 为第三方框架,BarData/数据库接口以 vnpy 官方为准;AlphaFeed 只提供行情数据,不替代 vnpy 的交易网关(真实下单仍走券商)。

vnpy 的数据从哪来:datafeed 的定位

vnpy 把「交易」和「数据」分开:

痛点:个人做 A 股 时,内置 datafeed 要么偏期货、要么需付费机构账号,历史 K 线不好拿。而 vnpy 的回测引擎只要数据库里有 BarData 就能跑。所以关键是:把 A 股 K 线灌成 vnpy 的 BarData。

vnpy datafeed vs 自备数据 API

维度vnpy 内置 datafeed自备数据 API(AlphaFeed 示例)
A 股历史部分需付费/偏期货✅ 日/周/月到上市首日
复权可复现看数据源adjust 5 种,回测用 backward
多市场视 datafeedA/US/HK 一套代码
接入方式配置 datafeed取 DataFrame → 映射 BarData
交易下单vnpy Gateway(券商)❌ 数据 API 不下单

vnpy 描述基于其「开源量化交易框架(交易+数据分离)」的公开定位,BarData/数据库 API 以 vnpy 官方文档与版本为准。AlphaFeed 侧取数经本文 tools/verify_new_2026-11-02.py 真实跑通(SDK 0.1.4)。

分步骤:AlphaFeed K 线 → vnpy BarData

1) 用 AlphaFeed 取后复权日线(真实验证)

from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

df = af.klines.get("600519.SH", period="1d", count=250,
                   adjust="backward", to_dataframe=True)
# 列含:trade_date, open, high, low, close, volume, amount(A股 amount 为元)

2) 映射成 vnpy 的 BarData(按 vnpy 官方 API)

from datetime import datetime
from vnpy.trader.object import BarData
from vnpy.trader.constant import Exchange, Interval

bars = []
for _, r in df.iterrows():
    bars.append(BarData(
        symbol="600519",
        exchange=Exchange.SSE,              # 沪市;深市用 Exchange.SZSE
        datetime=datetime.strptime(r["trade_date"], "%Y-%m-%d"),
        interval=Interval.DAILY,
        open_price=r["open"], high_price=r["high"],
        low_price=r["low"], close_price=r["close"],
        volume=r["volume"],                 # 单位「手」
        turnover=r["amount"],               # A 股成交额(元)
        gateway_name="DB",
    ))
# 再用 vnpy 的 database.save_bar_data(bars) 入库,供回测引擎使用

BarData/save_bar_data 为 vnpy 官方对象与接口,字段名以你所用 vnpy 版本为准;本文验证的是「AlphaFeed 取数含映射所需全部字段」。

3) 字段映射速查

vnpy BarDataAlphaFeed 来源说明
datetimetrade_date转 datetime
open/high/low/close_priceopen/high/low/close后复权
volumevolume单位「手」
turnoveramountA 股成交额(元);美港股为 0
symbol/exchange代码拆分.SH→SSE、.SZ→SZSE、.BJ→BSE

关键坑与注意事项

常见问题(FAQ)

Q:vnpy 做 A 股历史回测,数据到底从哪来最省心? A:自备一个稳定数据 API(如 AlphaFeed)取 A 股 K 线,映射成 BarData 入 vnpy 数据库,回测引擎直接用,不依赖偏期货的内置 datafeed。

Q:AlphaFeed 能替代 vnpy 吗? A:不能,也不冲突。AlphaFeed 是数据层,vnpy 是交易+回测框架;下单仍走 vnpy 的券商 Gateway。

Q:实时行情能喂给 vnpy 吗? A:AlphaFeed 提供约 3 秒的实时快照,可用于准实时监控/研究;vnpy 实盘 tick 推送通常走券商 Gateway,按你的实盘链路设计。

Q:需要付费吗? A:历史 K 线有免费额度可体验,长历史/全市场/高频建议 Starter 及以上,详见官网定价页。

小结

vnpy 的数据与交易是分离的——交易走券商 Gateway,历史行情靠 datafeed 或你自己入库。个人做 A 股最省心的是自备数据 API:用 AlphaFeed 取后复权 K 线、按官方 BarData 字段映射入库,vnpy 回测即可用。记住数据层(AlphaFeed)不替代交易层(vnpy Gateway),各司其职。

相关链接:


免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。