活动驱动条形图并不能解决你提到的时间条形图的所有问题。例如,您写道
The Subtle Intra-Bar Leakage: However, a more subtle form of data leakage can still occur within the very formation of that time bar. If a significant event transpires midway through a 1-minute bar (e.g., at 09:00:35), any features derived from that bar (such as its high price or a flag for the event) will inevitably incorporate this information by the bar's end.
如果您构建等量、等范围或其他基于刻度线的自定义条形图,无论如何您都会用单个标签标记这样的条形图,这样就会泄露(或者更准确地说,模糊)整个条形图的高价信息。
解决这个问题的唯一方法是在构建 "条形图 "时考虑到(您要使用的)特定功能。例如,如果高点或低点是主要特征,您就应该尝试 "之 "字形 "柱状图",并在柱状图外标注准确的时间。
实际上,使用恒定时间框架的方法,特别是将其限制为 M1 的方法,在 MT5 数据泄漏的情况下是有问题的。用结束时间标注 M1 条形图并不比用开始时间标注好多少。
对于那些有兴趣在 MT5 中本地构建自定义条形图(图表)的人,有一篇文章介绍了等量、等范围和 renko 条形图的 MQL5 实现。当然,您也可以在开放源代码中用结束时间标记条形图。
- www.mql5.com
活动驱动条形图并不能解决你提到的时间条形图的所有问题。例如,你写道
如果您构建了等量、等范围或其他基于刻度线的自定义条形图,无论如何您都会用单个标签标记这样的条形图,这样就会泄露(或者更准确地说,模糊)整个条形图的高价信息。
解决这个问题的唯一方法是在构建 "条形图 "时考虑到(您要使用的)特定功能。例如,如果高点或低点是主要特征,那么您应该尝试 "之 "字形 "柱形图",并在柱形图外标注准确的时间。
实际上,使用恒定时间框架的方法,特别是将其限制为 M1 的方法,在 MT5 数据泄漏的情况下是有问题的。用结束时间标记 M1 条形图并不比用开始时间标记好多少。
对于那些有兴趣在 MT5 中本地构建自定义条形图(图表)的人,有一篇文章介绍了等量、等范围和 renko 条形图的 MQL5 实现。当然,您也可以在开放源代码中用结束时间标记条形图。
活动驱动条形图旨在改进条形图中包含的统计属性信息,如减少异方差性和改进正态性。我提出的解决"微妙的柱状图内泄漏"问题的方法是使用柱状图的结束时间来标注柱状图,这样柱状图内发生的所有事件都能在时间戳中捕捉到。一个有用的例子是在训练模型时使用从时间戳中提取的特征,如傅立叶变换。如果使用 MetaTrader5 的惯例,即按周期开始时间标注条形图,那么就会给模型带来误导。对于某些模型来说,这种区别可能并不重要,但对于那些旨在利用市场周期性的模型来说,这种区别会产生巨大影响。
基于活动的条形图并不能解决你提到的时间条形图的所有问题。例如,你写道
如果您创建了相同的交易量、交易范围或其他基于刻度线的自定义条形图,那么无论如何您都会用一个标签来标记这样的条形图,而最高价格的信息会在整个条形图中泄露(或者更准确地说,模糊不清)。
解决这个问题的唯一方法是在创建 "条形图 "时考虑到(您将使用的)具体特征。 例如,如果高点或低点是主要特征,则应尝试创建 "人字形条形图",并在时间上准确标注价外值。
在 MT5 数据泄漏的情况下,恒定时间框架方法,尤其是对 M1 的限制,是有问题的。用结束时间标记 M1 条形图并不比用开始时间标记好多少。
对于那些有兴趣在 MT5 中创建本地自定义条形图(图表)的人,有一篇文章介绍了等量、等范围和 Renko 条形图的 MQL5 实现。当然,您也可以在开放源代码中用结束时间标记条形图。
当您说 "如果您创建相同成交量、范围的条形图或其他基于 tick 的自定义条形图,无论如何,您都将用单一标签标记这样的条形图,最高价格的信息将在整个条形图中泄露(或更准确地说,模糊)"时,您是什么意思?
新文章 MetaTrader 5 机器学习蓝图(第一部分):数据泄露与时间戳修正已发布:
数据窥探或数据泄露可能看似微不足道,但其对机器学习模型的影响可能是巨大的,甚至是毁灭性的。想象一下,你在备考时无意中 提前偷看了答案。你感觉自己的满分是应得的,但实际上这是在作弊。这正是我们在机器学习中使用 MetaTrader 5 的默认时间戳时所发生的情况 —— 数据泄露会意外破坏模型的完整性。
MetaTrader 5 的时间戳如何欺骗你

MetaTrader 5 将 18:55 开始的 5 分钟 K 线(即上图中倒数第二根 K 线)标记为:MetaTrader 5 通过在开始时打上时间戳,该 K 线的数据在 18:55:00 可用 —— 比实际收盘时间早了整整 5 分钟! 如果你的模型在训练时使用这个,那就像是在考试开始前 5 分钟给学生提供答案。为了解决这个问题,我们应该避免使用 MetaTrader 5 的预编译时间 K 线,而是使用 tick 数据来创建我们在模型中使用的柱。
作者:Patrick Murimi Njoroge