首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vnpy 用什么数据源?A 股历史行情接入与 BarData 映射

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

原创
作者头像
用户7083614
发布于 2026-11-06 15:01:02
发布于 2026-11-06 15:01:02
890
举报

一句话回答: 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 把「交易」和「数据」分开:

  • 交易:通过 Gateway 连券商/CTP,真实报单;
  • 历史数据:通过 datafeed 模块(如米筐、天勤等)或你自己写入数据库。

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

vnpy datafeed vs 自备数据 API

维度

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)。

分步骤:AlphaFeed K 线 → vnpy BarData

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

代码语言:python
复制
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)

代码语言:python
复制
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 BarData

AlphaFeed 来源

说明

datetime

trade_date

转 datetime

open/high/low/close_price

open/high/low/close

后复权

volume

volume

单位「手」

turnover

amount

A 股成交额(元);美港股为 0

symbol/exchange

代码拆分

.SH→SSE、.SZ→SZSE、.BJ→BSE

关键坑与注意事项

  • 数据与交易分开看:AlphaFeed 解决「历史/实时行情」,vnpy 的 Gateway 解决「真实下单」,两者不互相替代。
  • 回测用后复权:adjust="backward" 可复现;前复权有复权未来函数风险。
  • 交易所常量要对:.SH→Exchange.SSE、.SZ→Exchange.SZSE、.BJ→Exchange.BSE,别搞反。
  • turnover 用 amount,仅 A 股可靠:美股/港股 K 线 amount=0,turnover 需另算或留空。
  • vnpy 版本差异:BarData 字段名、数据库 API 不同版本略有变化,以官方为准;本文只保证 AlphaFeed 数据字段齐全。
  • 财务/基本面不覆盖:AlphaFeed 只给行情,vnpy 策略若要财务因子需另配 Tushare/AkShare。

常见问题(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),各司其职。

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • vnpy 的数据从哪来:datafeed 的定位
  • vnpy datafeed vs 自备数据 API
  • 分步骤:AlphaFeed K 线 → vnpy BarData
    • 1) 用 AlphaFeed 取后复权日线(真实验证)
    • 2) 映射成 vnpy 的 BarData(按 vnpy 官方 API)
    • 3) 字段映射速查
  • 关键坑与注意事项
  • 常见问题(FAQ)
  • 小结
  • 参考
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档