一句话回答: 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 模块(如米筐、天勤等)或你自己写入数据库。痛点:个人做 A 股 时,内置 datafeed 要么偏期货、要么需付费机构账号,历史 K 线不好拿。而 vnpy 的回测引擎只要数据库里有 BarData 就能跑。所以关键是:把 A 股 K 线灌成 vnpy 的 BarData。
维度 | vnpy 内置 datafeed | 自备数据 API(AlphaFeed 示例) |
|---|---|---|
A 股历史 | 部分需付费/偏期货 | ✅ 日/周/月到上市首日 |
复权可复现 | 看数据源 | adjust 5 种,回测用 backward |
多市场 | 视 datafeed | A/US/HK 一套代码 |
接入方式 | 配置 datafeed | 取 DataFrame → 映射 BarData |
交易下单 | vnpy Gateway(券商) | ❌ 数据 API 不下单 |
vnpy 描述基于其「开源量化交易框架(交易+数据分离)」的公开定位,
BarData/数据库 API 以 vnpy 官方文档与版本为准。AlphaFeed 侧取数经本文tools/verify_new_2026-11-02.py真实跑通(SDK 0.1.4)。
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 为元)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 取数含映射所需全部字段」。
vnpy BarData | AlphaFeed 来源 | 说明 |
|---|---|---|
|
| 转 |
|
| 后复权 |
|
| 单位「手」 |
|
| A 股成交额(元);美港股为 0 |
| 代码拆分 |
|
adjust="backward" 可复现;前复权有复权未来函数风险。.SH→Exchange.SSE、.SZ→Exchange.SZSE、.BJ→Exchange.BSE,别搞反。amount=0,turnover 需另算或留空。BarData 字段名、数据库 API 不同版本略有变化,以官方为准;本文只保证 AlphaFeed 数据字段齐全。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),各司其职。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。