ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VeighNa Elite Trader 行情数据过滤配置指南:基于 EliteCtaTemplate 剔除非交易时段垃圾K线

VeighNa Elite Trader 行情数据过滤配置指南:基于 EliteCtaTemplate 剔除非交易时段垃圾K线 VeighNa Elite Trader 行情数据过滤配置指南基于 EliteCtaTemplate 剔除非交易时段垃圾K线【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpyVeighNa Elite Trader菁英版的 CTA 策略模块内置了专业策略模板EliteCtaTemplate除支持多进程运行与理论目标维护外还提供了一套行情数据过滤机制通过filter_setting.json配置合约的合法交易时段让引擎自动拦截非交易时段收到的合成K线避免垃圾数据污染策略指标计算。本文将围绕该过滤功能完整讲解两种配置方式、JSON 格式规范、跨日与休盘等关键注意事项并结合策略代码给出过滤效果的实测方法帮助你在实盘中获得干净、可信的K线数据流。过滤功能的背景为什么要过滤合成K线在 CTA 实盘交易中策略收到的K线通常是由行情引擎基于 tick 合成而来。交易所正常交易时段之外如集合竞价前后、夜盘结束后的零星撮合、数据源异常推送等行情通道仍可能推送出少量非交易时段的 tick进而被合成引擎拼装成垃圾K线。这些K线一旦进入策略的on_history回调就会参与均线、波动率等技术指标的计算导致指标数值失真进而影响开平仓信号质量甚至造成回测与实盘表现不一致。针对这一问题EliteCtaTemplate内置了对垃圾数据的过滤配置支持只要按照约定的 JSON 格式配置各合约允许推送进策略的K线时间段模板就会在将合成K线推入策略之前进行时段校验非交易时段的K线将被直接拦截确保策略指标始终基于有效行情计算。该能力在 CTA趋势策略文档 中亦有说明EliteCtaTemplate针对回测和实盘不一致的问题内置了基于策略的理论目标维护策略运行的方案同时提供了对非交易时段垃圾数据的过滤配置支持。配置过滤信息过滤配置的核心是一个名为filter_setting.json的 JSON 文件其内容为合约代码 → 允许交易的时间段列表的映射。VeighNa Elite Trader 提供官方生成与手动编辑两种配置途径。方式一使用官方提供文件在 VeighNa Elite Trader 主界面点击【帮助】→【更新Tick过滤】即可自动生成最新的过滤配置文件filter_setting.json。官方文件基于内置的合约交易时段模板生成覆盖面广、格式规范适合交易品种较多、希望快速起步的场景。使用官方文件时请注意仅供参考不构成交易保障filter_setting.json文件仅供参考若与实际交易时段有出入例如交易所对合约交易时段进行调整VeighNa 官方概不负责。上线前务必自行核对文件中每个合约的时段是否与当前交易所规则一致文件位置filter_setting.json生成之后会放置在 VeighNa Elite Trader 运行目录通常是用户目录下的.vntrader文件夹中。策略运行时会从该目录读取过滤配置。方式二手动编辑文件如果交易的品种较少可以跳过官方生成直接手动创建一个filter_setting.json文件自行填入允许推送进策略的K线时间段。文件格式如下{ IF: [ [9:30:00, 11:29:00], [13:00:00, 14:59:00] ], rb: [ [9:00:00, 10:14:00], [10:30:00, 11:29:00], [13:30:00, 14:59:00], [21:00:00, 22:59:00] ], au: [ [9:00:00, 10:14:00], [10:30:00, 11:29:00], [13:30:00, 14:59:00], [21:00:00, 23:59:59], [00:00:00, 2:29:00] ] }结构说明顶层键合约代码示例中使用了IF沪深300股指期货、rb螺纹钢期货、au黄金期货实际使用时填写你交易的合约代码即可值为二维数组每个元素是一个二元数组[开始时间, 结束时间]代表该合约一个合法交易时间段。一个合约可配置多个时间段如日盘加夜盘时间格式HH:MM:SS采用 24 小时制例如早盘开盘9:30:00、收盘11:29:00。配置完成后将该文件放置到 VeighNa Elite Trader 运行目录下的.vntrader文件夹中即可生效与官方生成的文件放置位置一致。配置注意事项三个关键点K线时间语义VeighNa 的K线datetime是K线的开始时间而不是结束时间。因此过滤时段应理解为允许包含哪些开始时间的K线在填写时段的开始/结束边界时要与自己的K线合成频率对齐避免因边界理解错误把正常K线误过滤掉商品期货休盘时段若交易商品期货请不要忘记 10:15 到 10:30 的休盘时间。从上文的rb、au配置可以看到早盘被拆成了9:00-10:14与10:30-11:29两段中间的 10:15-10:30 休盘期不在合法时段内跨日交易时段拆分若合约的交易时间涉及到跨日夜盘延续到次日凌晨如黄金期货夜盘持续到次日 2:30请把夜盘的交易时间拆分成开始时间至23:59:59和00:00:00至结束时间两段。au的配置即为标准示例夜盘写为[21:00:00, 23:59:59]和[00:00:00, 2:29:00]两段而不是直接写成跨日的[21:00:00, 2:29:00]。过滤机制的联动OptionBarGenerator 的交易时段过滤行情数据过滤并不局限于EliteCtaTemplate一条链路。在期权策略模块中K线生成器OptionBarGenerator同样集成了基于配置品种和时段的过滤能力只支持期货和期货期权基于配置的品种和时段自动过滤非交易时段的数据确保K线质量详见 期权策略文档 中的功能特性说明。两者配合使用时需要注意联动逻辑OptionBarGenerator通过持续接收 tick 数据更新内部状态当检测到分钟变化时生成当前分钟的K线截面并通过回调函数返回。如果指定了时间戳监控合约dt_symbol用于控制K线生成节奏则只有当该合约的时间戳发生分钟变化时才会触发K线截面的生成更进一步如果指定了时间戳监控合约并且配置了合约过滤信息则只有当该合约的时间戳发生分钟变化且处于有效交易时段内时才会触发K线截面的生成。也就是说配置好filter_setting.json后期权策略的K线生成节奏同样会受到合法交易时段的约束从数据源头进一步杜绝垃圾K线进入策略。过滤效果测试验证策略内部是否收到非交易时段K线配置完成后建议在实盘启动前先验证过滤是否真正生效。最简单的方法是借助on_history回调——它是EliteCtaTemplate策略接收合成K线的统一入口回调入参为历史数据管理器HistoryManager的实例hm关于回调函数与HistoryManager的完整说明可参考 CTA趋势策略文档。在策略的on_history函数中添加如下打印语句观察策略内部是否收到了非交易时段的K线def on_history(self, hm: HistoryManager) - None: K线推送 # 判断实盘trading状态只有策略启动之后才进行输出 if self.trading: self.write_log(f{self.strategy_name}_{self.vt_symbol}{hm.datetime[-1]})测试要点通过self.trading判断实盘状态只有策略启动on_start被调用、trading变为True之后才输出日志避免初始化阶段的历史回放数据刷屏hm.datetime[-1]取的是HistoryManager缓存中最新一根合成K线的开始时间datetime字段语义与过滤时段一致均为K线开始时间据此可以直接判断该K线的开始时间是否落在filter_setting.json配置的合法时段内若过滤生效非交易时段如 10:15-10:30 休盘期、收盘后的零星行情不会再有日志输出若仍能在这些时段看到日志则需要回头检查filter_setting.json的时段填写是否准确、文件是否放置在了正确的.vntrader目录下。最佳实践小结无论使用官方生成还是手动编辑上线前都务必对照交易所最新交易时段逐合约核对filter_setting.json尤其是交易所调整交易时段后时段边界统一以K线开始时间为准商品期货务必拆出 10:15-10:30 休盘段跨日合约务必按23:59:59/00:00:00拆分配置完成后先通过on_history日志实测过滤效果再让策略进入正常交易流程可有效规避垃圾数据对指标与信号的影响改善回测与实盘的一致性。相关参考文档CTA趋势策略EliteCtaTemplate模板与on_history/HistoryManager用法、期权策略OptionBarGenerator时间戳监控与时段过滤联动、行情数据过滤原始文档。【免费下载链接】vnpy基于Python的开源量化交易平台开发框架项目地址: https://gitcode.com/vnpy/vnpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表