同一专家的结果完全不同

 

我对从metatrader的回溯测试器得到的结果感到非常、非常困惑。我希望其他人也有类似的经历,并且可能知道是什么原因导致了我的情况。

我开发的一个专家在回测中取得了很好的结果,在优化和向前走的优化运行中也有很大的变化。然后突然间,在我没有有意识地做出重大改变的情况下,结果变得平庸/微不足道。然后今天,结果又突然变得非常好。

我现在有完全相同的专家、完全相同的日期、完全相同的设置文件的回测报告,但结果完全不同。我已经尽力确保数据是相同的(从昨天下载的历史数据中重建,我今天得到的结果仍然与当时非常不同)。

我发现唯一可能不同的是传播。就我所知,MT4假设整个回测运行中的点差与现在的点差相同。该系统的一个相当奇怪的 "功能",但并不能解释我的观察结果,因为今天点差很窄,结果很平庸,而昨天点差稍宽,结果却好得令人难以置信。

在这些经历之后,我处于这样的境地:我不确定我是否能依赖从软件中获得的信息,而且迫切需要一个解释,我可以用它来避免在未来被误导(一种方式或其他)。

以下是使用同一专家、同一时期(2011/1/1至2011/7/26)和相同设置进行回测的平庸结果和令人难以置信的好结果的图表。这些交易通常开放数小时或更长时间,并且不使用止盈或止损(所有进场和出场仅基于指标的状态)。两次运行中的交易数量分别为211和173。第二张图中有亏损,但利润系数非常高。


 
Elroch:


我现在有完全相同的专家、完全相同的日期、完全相同的设置文件的回测报告,但结果完全不同。我已经尽力确保数据是相同的(从昨天下载的历史数据中重建,我今天得到的结果仍然与当时非常不同)。


再次下载你的数据,断开你的终端(我是用一个无效的账号 登录的),删除你的历史数据和已经存储在终端的数据,导入你的数据,我猜是M1? 使用周期转换器制作你需要的其他周期并导入它们 . . . 检查你有你想运行的日期周期所需的数据 . . . 运行你的EA。
 
谢谢,但我已经不止一次按照你的建议从10年下载的1分钟数据中建立数据,多次重启软件,存储准确的EA和设置,在后来的运行中仍然得到完全不同的结果。我仍然感到困惑。
 

Elroch:

我开发的一个专家在回测中取得了很好的结果,在优化和向前走的优化运行中也有很大的变化。

然后突然间,在我没有有意识地做出大的改变的情况下,结果变得平庸/微不足道。

然后今天又突然间,结果又变得极好。

测试员使用的是目前的价差。你的EA对这些变化高度敏感。
 
WHRoeder:
测试员使用的是目前的价差。你的EA对这些变化高度敏感。

正如我提到的,我发现了这一点,但是,由于我今天在运行中得到了平庸的结果,点差为1.2点,这并不是解释。
 

如果你的进场和出场真的只是基于指标值,你的交易量适中,并且平均每笔交易都能赚取不错的点数,那么剩下的选择就不多了。

a) 破坏历史文件

b) 包括类似随机性的东西

c) 依赖于一些全局变量(这在两次测试中被改变了)。

d) 某些经纪商的设置可能已经改变,(不太可能)。

为什么不在每个tick 模式下运行测试?这将告诉你数据的质量。

 

每次测试运行时,策略测试器 创建的psudo tick是否相同,EA使用的指标是否为最新的条形图的每个tick创建值,就像他们在实际交易中一样?

 

谢谢你有趣的观点,zzueg。

(a) 一个损坏的历史文件似乎不可能解释同一EA的回测结果序列:即从上周五开始的一段时间内,平庸的结果、极好的结果、平庸的结果和类似的极好的结果,在此期间,我已经重新安装了metatrader,从下载的所谓高质量1分钟数据中重建了所有数据,等等。

(b) 任何由随机效应(包括坏数据)引起的解释的问题是,很难看到为什么它应该使交易持续地大为改善。

(c) 几天来,我认为这可能是我的代码中一些意外的变化。但是今天当我得到令人难以置信的好结果时,我立即保存了一份专家(源文件和ex4)和设置文件的副本。但在后来的运行中,完全相同的专家和设置给出了平庸的结果。

(d) 是的,除了点差之外,不确定经纪人是否有什么相关的东西。当然,这些都是回测,而不是实盘交易,数据主要是从下载的10年的1分钟数据中构建的。

(e) 专家在条形图开盘时进场和出场,根本不使用止损或盈利目标(无论如何在研究的版本中),我的理解是,唯一能影响结果的数值是5分钟及以上图表中条形图的开盘价、最高价、最低价和收盘价(实际上,甚至收盘价也不相关:有几个相同指标的变体被使用,这些刚好使用(H+L)/2作为数据点,而进入和退出发生在条形的开口处,所以开口数据和价差也很重要。一笔交易是开仓还是平仓,取决于先前条形上的指标值,而不是当前条形。

......但为了全面起见,我用 "所有刻度 "做了一次运行。结果与之前的结果几乎相同,只有一个微小的差别,那就是最后一笔交易是在最后1分钟条形图而不是最后5分钟条形图上关闭。


SDC,我不能确定产生的每一个刻度 是否都是一样的,但请记住我在上面(e)中回应zueg的观点。
 

我的意思不是说在每一个tick 模式下结果都会改变,我感兴趣的是报告的不匹配的图表错误的数量。

历史上的差距是非常不可能的,因为它们不能解释基于指标的策略的这种差异。

我也遇到过类似的问题,只是数据被破坏,因为我的终端总是离线,所以我再也没有遇到过这样的事情。

关于全局变量,我的意思是:你的代码中是否有类似GlobalVariableGet()的东西,这种变量不限于测试环境。

最后,我想问问大家:日志中有什么错误吗?

@SDC,是的,每次运行都会产生相同的伪刻度线。根据我的经验,准确率在90%左右,但仍然是一样的。

 

再次感谢您的观察。我现在遇到了一个有趣的情况,两个安装的metatrader给出了两套极其不同的结果(即使我把EA和设置从一个直接复制到另一个,并在两个上运行策略测试器。这将指向数据,但由于所讨论的原因,仍很难看出它能解释它。我在想,有什么最好的办法可以看到可能存在的差异。

我刚刚检查了分别安装在metatrader上的两次运行日志,其中没有任何错误。

我的代码中没有类似GlobalVariableGet()的东西。该EA在4个不同的时间框架上使用5份单一的自定义指标,其中一份的参数与其他的不同。

 

我已经找到了可能是关键的证据,但我不太明白它的意义。

在结果平平的安装上,我注销了与真钱经纪商账户的连接,并再次登录到同一经纪商的练习账户上。这样做后(没有其他原因),策略测试器 给出了与另一份metatrader(在同一练习经纪商账户上运行)类似的惊人结果。顺便说一下,该经纪商是Oanda。

我不确定metatrader客户端在不同账户之间切换时是如何处理历史数据的,但是所有的旧数据都来自同一个下载的1分钟数据,而不是来自经纪商,这让我很难理解这里发生了什么(在连接到实践账户的回测运行中,年初的交易要比连接到真实账户时好很多)。