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 把「交易」和「数据」分开:

  • 交易:通过 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),各司其职。

参考

相关推荐
日日大王学编程40 分钟前
deerflow-memory-design-blog
python·langchain·开源
砚底藏山河1 小时前
量化回测可复现流水线CI化
java·python·ci/cd·金融
磁场转动100万匹1 小时前
道路巡检系统检测案例:YOLOv5 + Flask + PyQt 全栈实现
python·yolo
前端精髓2 小时前
动态选择工具
python·langchain
weixin199701080163 小时前
官方授权通道和灰色爬虫,做数据服务该选哪条路(附 python 源码)
c++·爬虫·python
Ryan-Zhong3 小时前
数字人口播视频 API 实战:Python 跑通模板合成、异步轮询与批量出片
开发语言·python·音视频
quantdash_cc3 小时前
个人开发者用 QuantDash 读取港股行情:00700.HK 的 Python 函数封装与校验实践
python·数据分析·pandas·量化交易·股票数据·quantdash
fengci.3 小时前
CTF2困难部分
开发语言·网络·python·安全·php