VeighNa DataManager 历史数据管理模块使用指南:下载、导入、查看、导出与更新全流程解析
VeighNa DataManager 历史数据管理模块使用指南下载、导入、查看、导出与更新全流程解析【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/gh_mirrors/vn/vnpyDataManager 是 VeighNavnpy生态中负责历史数据管理的核心功能模块用户通过其图形界面即可一站式完成数据下载、数据查看、数据导入和数据导出等任务。本文以官方社区文档为主体结合当前仓库中数据库抽象层、数据服务接口与真实启动脚本的源码实现系统讲解 DataManager 的加载启动、五类数据操作流程以及底层工作原理帮助读者在实际回测与实盘场景中高效地构建和维护本地历史数据库。功能简介DataManager 是 VeighNa 用于历史数据管理的功能模块其核心价值在于让用户无需编写代码仅通过 UI 界面操作即可完成以下四类任务数据下载从已配置的数据服务如 RQData、迅投研等或已连接的交易接口如 IB 盈透证券拉取历史行情数据查看浏览本地数据库中已存储的合约数据概况与逐条明细数据导入将外部 CSV 格式数据文件快速写入 VeighNa 数据库数据导出将数据库中的指定合约数据导出为本地 CSV 文件。从版本演进看DataManager 在早期版本中内置于主项目后续已剥离为独立的vnpy_datamanager插件项目参见 CHANGELOG.md 中将数据管理模块剥离到 vnpy_datamanager 项目中的记录。因此使用前需要确保已通过pip install vnpy_datamanager安装该插件。加载启动DataManager 的加载方式与 VeighNa 其他应用模块一致分为 VeighNa Station 图形化加载与脚本加载两种。VeighNa Station 加载启动登录 VeighNa Station 后点击【交易】按钮在弹出的配置对话框中的【应用模块】栏勾选【DataManager】即可完成加载。脚本加载在自定义启动脚本中需要完成两步操作顶部导入应用类以及创建main_engine对象后注册应用。参考当前仓库中的真实启动脚本 examples/veighna_trader/run.pyfrom vnpy_datamanager import DataManagerApp # 写在创建main_engine对象后 main_engine.add_app(DataManagerApp)在仓库的示例脚本中DataManagerApp与CtaStrategyApp、CtaBacktesterApp一同被注册进MainEngine这也是社区文档推荐的组合方式——先由 DataManager 准备数据再由 CTA 回测与实盘模块消费数据。启动模块启动 VeighNa Trader 后在菜单栏中点击【功能】-【数据管理】或者点击左侧按钮栏的 DataManager 图标即可进入历史数据管理 UI 界面。界面主区域以数据频率周期- 合约的树形结构展示数据库中已有的数据概况每个合约行提供【查看】【导出】【删除】等操作按钮右上角则提供【下载数据】【更新数据】等全局操作入口。下载数据DataManager 提供了一键下载历史数据的功能。点击右上角【下载数据】按钮会弹出下载历史数据窗口需要填写以下四个字段代码代码格式为合约品种如IF888、rb2105交易所合约交易的交易所点击窗口右侧箭头按钮可选择 VeighNa 支持的交易所列表周期可选MINUTE1 分钟 K 线、HOUR1 小时 K 线、DAILY日 K 线、WEEKLY周 K 线、TICK一个 Tick开始日期格式为yy/mm/dd如2018/2/25。填写完成后点击下方【下载】按钮启动下载程序。下载成功后会提示下载完成注意下载完成后的历史数据会保存在本地数据库中后续回测或实盘时可以直接使用无需每次都重复下载。从源码层面看上述周期选项对应 vnpy/trader/constant.py 中的Interval枚举MINUTE 1m、HOUR 1h、DAILY d、WEEKLY w、TICK tick。交易所选项则对应同文件中的Exchange枚举vnpy/trader/constant.py覆盖了 CFFEX、SHFE、CZCE、DCE、INE、GFEX、SSE、SZSE 等国内交易所以及 SMART、NYSE、NASDAQ、CME、ICE、HKFE 等海外市场。数据来源数据服务期货、股票、期权以 RQData 为例RQData 提供国内期货、股票以及期权的历史数据。在使用前需要保证数据服务已经正确配置配置方法详见 docs/community/info/datafeed.md 的全局配置部分。数据服务的配置通过 VeighNa 全局配置vt_setting.json完成相关字段以datafeed为前缀参见 vnpy/trader/setting.py 中的默认值与 vnpy/trader/datafeed.py 的加载逻辑datafeed.name数据服务接口名称为全称的小写英文字母例如rqdatadatafeed.username数据服务用户名datafeed.password数据服务密码若为 token 方式授权则填写在 password 字段中。当datafeed.name为空时vnpy/trader/datafeed.py 会直接使用BaseDatafeed基类此时调用查询接口会输出没有正确配置数据服务的提示并返回空列表。配置正确后get_datafeed()会按vnpy_{datafeed_name}的命名规则动态导入对应的数据服务驱动模块如vnpy_rqdata。数据来源IB外盘期货、股票、现货等Interactive Brokers 盈透证券IB提供丰富的外盘市场历史数据下载覆盖股票、期货、期权、现货等品种。下载前需要先启动 IB TWS 交易软件并在 VeighNa Trader 主界面连接好 IB 接口同时订阅所需合约的行情。需要留意的是IB 属于交易接口而非独立数据服务其历史数据下载能力依赖接口的history_data支持参见 vnpy/trader/object.py 中ContractData.history_data字段的定义。导入数据如果已经从其他渠道获取到了 CSV 格式的数据文件可以通过 DataManager 的数据导入功能将其快速导入 VeighNa 数据库。点击右上角的【导入数据】按钮弹出导入对话框后按以下步骤操作选择文件点击顶部的【选择文件】按钮弹出窗口选择要导入的 CSV 文件路径配置合约信息代码与交易所格式详见上文下载数据部分的介绍请注意导入的合约代码symbol和交易所exchange两个字段组合起来才能构成在 CTA 回测等模块中使用的本地代码vt_symbol例如合约代码为IF2003、交易所选择CFFEX中金所则在 CtaBacktester 中回测要使用的本地代码应为IF2003.CFFEX可以对时间戳时区进行选择配置表头信息可查看 CSV 文件的表头信息并将对应的表头字符串输入到表头信息中对于 CSV 文件中不存在的字段如股票数据没有【持仓量】字段请留空即可配置格式信息采用 Python 内置库datetime模块的时间格式定义来解析时间戳字符串默认时间格式为%Y-%m-%d %H:%M:%S对应的是2017-1-3 0:00:00如果时间戳是2017-1-3 0:00那么时间格式应该是%Y-%m-%d %H:%M。填写完毕后点击【确定】按钮开始从 CSV 文件导入数据到数据库。导入过程中界面会处于半卡住状态CSV 文件越大数据量越多卡住的时间也会越长。成功载入后会弹出窗口显示载入成功。从底层实现看导入过程最终调用的是数据库抽象层的写入接口。当前仓库中定义了标准化的BaseDatabase抽象基类vnpy/trader/database.py其核心接口包括save_bar_data(bars, stream)批量保存 K 线数据save_tick_data(ticks, stream)批量保存 Tick 数据load_bar_data(...)/load_tick_data(...)按合约、周期与时间范围读取数据delete_bar_data(...)/delete_tick_data(...)删除指定合约数据get_bar_overview()/get_tick_overview()返回数据库中已有数据的汇总概况。导入的每一行 CSV 数据会被构造成BarDatavnpy/trader/object.py或TickDatavnpy/trader/object.py对象其中symbol与exchange会通过__post_init__自动拼装出vt_symbol字段格式为symbol.exchange如IF2003.CFFEX这正是 CTA 回测等模块引用数据的唯一标识。查看数据目前 VeighNa Trader 中获取数据的方式一共有三种通过数据服务或者交易接口下载从 CSV 文件导入使用 DataRecorder 模块录制可参考 examples/data_recorder/data_recorder.py 中基于 CTP 接口自动录制 Tick 与分钟 K 线的完整示例。不管采用何种方法获取数据点击左上角的【刷新】按钮即可看到当前数据库中已有数据的统计情况Tick 数据除外。刷新过程中界面可能会有偶尔的卡顿通常数据越多卡顿的时间也会越长。该统计信息在源码中对应BarOverview与TickOverview两个数据类vnpy/trader/database.py分别记录合约的symbol、exchange、interval、数据条数count以及起始时间start、结束时间end。点击【查看】按钮会弹出选择数据区间的对话框选择好要显示的数据范围后点击【确定】按钮即可在右侧表格中看到每个时间点上的具体数据字段开盘价、最高价、最低价、收盘价、成交量、持仓量等。在数据库已有数据的前提下点击表格最左侧【数据】列下数据频率前的小箭头可以展开或收起该数据频率下的合约信息显示。若表格右侧区域显示不完整可拖动界面底端的横向滚动条进行调整。导出数据如果想导出数据库中的数据到本地 CSV 文件可选择要导出的合约点击该合约所在行右侧的【导出】按钮随后弹出选择数据区间对话框选择要导出的数据区间范围点击【确定】后再次弹出对话框选择输出文件的位置选择好导出文件要放置的目录填写完 CSV 文件名之后点击【保存】按钮即可完成 CSV 文件的导出。导出操作在底层对应数据库抽象层的load_bar_data/load_tick_data读取接口导出内容与数据库中存储的字段保持一致便于数据在不同环境或不同数据库之间迁移。删除数据若想删除特定合约数据可选择要删除的合约点击该合约行数据右侧的【删除】按钮在弹出的对话框中点击【OK】按钮即可删除该合约数据并弹出删除成功窗口。此时再点击【刷新】按钮图形界面上已经没有该合约的信息了。底层对应BaseDatabase.delete_bar_data(symbol, exchange, interval)与delete_tick_data(symbol, exchange)接口vnpy/trader/database.py。删除为不可恢复操作执行前请务必确认不再需要该合约的历史数据。更新数据在用户配置了数据服务或者交易接口已连接提供充足的历史数据的情况下点击右上角的【更新数据】按钮即可基于图形界面上显示的所有合约数据执行一键自动下载更新。点击【更新数据】按钮后会弹出更新进度的信息提示对话框此时 DataManager 会自动从数据库中已有数据的结束日期开始下载截止到当前最新日期的数据并更新到数据库中。如果更新的数据量较少更新任务可能瞬间完成此时没有观察到更新对话框也是正常的。更新完成后点击左上角【刷新】按钮即可看到该合约数据已更新至当前最新日期。从 CHANGELOG 记录看该批量更新功能在历史版本中曾修复过缺失 output 函数的问题参见 CHANGELOG.md 中修复 vnpy_datamanager 中批量数据更新时缺失 output 函数的问题当前实现会通过 output 回调将每个合约的更新进度与结果实时输出到进度对话框方便用户掌握更新状态。数据范围注意事项请注意虽然界面上显示了数据库中已有数据的开始和结束时间但并不代表数据库中储存了从开始时间到结束时间之间所有的数据。如果依赖于交易接口提供的历史数据一旦开始时间和结束时间之间的时间跨度超过接口所能提供的数据范围就可能导致数据之间出现缺失的情况。因此建议更新数据之后点击【查看】按钮检查一下该合约数据是否连续确认没有缺口后再用于回测或实盘分析。数据存储与底层原理DataManager 的所有操作最终都落到 VeighNa 的数据库抽象层。当前仓库定义了标准化的BaseDatabase抽象基类与get_database()工厂函数vnpy/trader/database.py其工作流程为从全局配置中读取database.name按vnpy_{database_name}的命名规则动态导入对应数据库驱动模块如vnpy_mysql、vnpy_mongodb若驱动未安装则回退使用默认的vnpy_sqlite输出找不到数据库驱动使用默认的SQLite数据库提示。数据库相关全局配置字段见 vnpy/trader/setting.pydatabase.timezone数据库存储使用的时区默认取本机时区database.name数据库类型默认sqlitedatabase.database数据库名或文件路径默认database.dbdatabase.host/database.port/database.user/database.password服务型数据库的连接信息。各类数据库SQLite、MySQL、PostgreSQL、MongoDB、InfluxDB、DolphinDB、Arctic、LevelDB的字段说明与配置示例详见 docs/community/info/database.md。SQLite 作为默认数据库无需额外安装与配置数据存储在一个单一磁盘文件上适合入门用户需要服务型数据库时注意 VeighNa 不会主动为关系型数据库创建数据库需提前手动执行create database 数据库名;。小结DataManager 是 VeighNa 数据链路的枢纽下载 / 导入负责写入查看 / 导出负责读取与校验删除负责清理更新负责增量维护。它上承数据服务与交易接口datafeed.*配置下接数据库抽象层database.*配置为 CTA 回测、实盘策略等上层模块持续供给经过校验的历史数据。建议用户按下载或导入- 刷新确认概况 - 查看抽查连续性 - 定期更新的流程维护本地数据库以保障策略回测结果的可靠性与实盘运行的稳定性。【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/gh_mirrors/vn/vnpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →