28个!!!货币对,1个专家。另一个圣杯,但这个我认为没有人展示过。+ 试用账户 - 页 12 1...5678910111213 新评论 Yurixx 2007.08.13 23:11 #111 Rosh: 我已经按照你的要求测试了 "欧元兑美元在2007.07.10 至2007.07.14的范围内,以及分别在2007.07.09 至2007.07.14的范围内",没有任何区别。 我也不得不更新到最新版本。:-)的确,时间上的问题已经消失了,这很好。然而,事实证明,故事并没有就此结束。 我在同一时期运行了该EA--在M1和H1/D1的高低点之间没有区别。注意 - 我在我正常的、未受伤害的数据上进行了测试。 没有同步,等等。所以这不可能是差异的原因。 然后我决定在另一个间歇期试试,以防万一(嗯,我的坏脾气)。而事实证明,这还没有结束。 试试从2007.08.06 到2007.08.11 的区间,这实际上是最后一个星期。而且不是与D1比较,而是与H1比较。在专家顾问的文本中,有4个运算符应该被注释掉,还有4个运算符应该被取消注释。这并不是说刺探未来的可能性已经被证明,不是。但这个故障是存在的。 既然看来每周 没有问题并不能保证完全没有问题,也许我们应该在更长的时间间隔内进行测试,例如一年或六个月? Rashid Umarov 2007.08.14 10:41 #112 我已经审查了你的 "简单反省 "EA的代码。不幸的是,它并不是完美无缺的,所以我把它修理了一下。 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (start) { curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curM1 = TimeMinute(TimeCurrent()); curH1 = TimeHour(TimeCurrent()); curD1 = TimeDay(TimeCurrent()); start=false; } mm = TimeMinute(TimeCurrent()); hh = TimeHour(TimeCurrent()); dd = TimeDay(TimeCurrent()); if (mm!=curM1) { if (hh!=curH1) { if (dd!=curD1) { Print("Новые сутки наступили"); curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curD1=dd; } //curHi=NormalizeDouble(Bid,Digits); //curLo=NormalizeDouble(Bid,Digits); curH1=hh; } curM1=mm; } if (NormalizeDouble(Bid,Digits)==0) Print(TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)," Bid=",Bid); if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); //HiH1 = iHigh(NULL,PERIOD_H1,0); //LoH1 = iLow(NULL,PERIOD_H1,0); HiH1 = iHigh(NULL,PERIOD_D1,0); LoH1 = iLow(NULL,PERIOD_D1,0); HiH1 = NormalizeDouble(HiH1,Digits); LoH1 = NormalizeDouble(LoH1,Digits); str = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); mHi = ", curHi=" + DoubleToStr(curHi,Digits); mLo = ", curLo=" + DoubleToStr(curLo,Digits); hHi = ", HiH1=" + DoubleToStr(HiH1, Digits); hLo = ", LoH1=" + DoubleToStr(LoH1, Digits); if (curLo==0) Print("Curlo=",curLo); if (curHi==0) Print("curHi=",curHi); if (HiH1!=curHi||LoH1!=curLo) { //Print(str,mHi,hHi,mLo,hLo); if (handle>0) FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1); } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { Print("Работа закончена"); if (handle>0) {FileWrite(handle,"записано ",TimeToStr(TimeLocal())); FileClose(handle); } //---- done return(0); } 新的一天的事实在你的代码中被固定得太晚了,实际上是在第二天,而模拟的正确性检查在测试开始后就开始了。为了排除这种不对称性,我引入了一个布尔变量start,用它将所有的测试值固定在测试的开始。 if (start) { curHi=NormalizeDouble(Bid,Digits); curLo=NormalizeDouble(Bid,Digits); curM1 = TimeMinute(TimeCurrent()); curH1 = TimeHour(TimeCurrent()); curD1 = TimeDay(TimeCurrent()); start=false; } 正如你所看到的,它只起一次作用,不再影响EA。 接下来,一切都按照你的算法发生。 如果你不做初级初始化,那么检查字符串 if (curLo==0) Print("Curlo=",curLo); if (curHi==0) Print("curHi=",curHi); 将给出curLo=0的值,而curHi不等于零。解释很简单:两个变量curLo和curHi最初都等于0,因为它们是未初始化的。在第一次打勾时,条件是 if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); 被触发,并且curHi已经与0不同,因为当前的Bid大于0。同时,当前的Bid不能小于零(curLo没有被初始化,因此是零),因此条件是 if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); 不能以任何方式改变CurLo。自己运行我的专家顾问版本,检查错误文件Fu.xls将只包含一行--测试器中最后一次模拟报价的时间。 完整的代码附在帖子后面,最好下载,因为它不适合在帖子里。 附加的文件: simplegprospectionpfixed.mq4 5 kb Yurixx 2007.08.14 11:23 #113 当然,感谢Rosh 的修改,但我认为这没有必要。 也许你没有注意到,在我的代码中,在函数init()中,有以下块。 curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; 由于执行了这个区块,在EA开始执行时没有一个条件不能满足。 if (mm!=curM1) { if (hh!=curH1) { if (dd!=curD1) 因此,无论EA在历史的哪个位置开始,都是新的一分钟,新的一小时,或新的一天。而上述区块的第一对运算符解释了为什么你说:"解释起来很简单:两个变量curLo和curHi最初都等于0,因为它们是未初始化的。由于第一个勾股价大于零,但小于1000,两个相应的条件语句必然被触发,变量curLo和curHi得到与你在if(开始)块{...}中分配给它们的初始值相同。 你的版本也一样好用,但它不会以任何方式影响算法。因此,这种改变对错误的存在或不存在没有影响。 再次注意我之前的帖子。问题不是在过渡到新的一天,也不是在EA的开始,而是在测试t/f H1时发生的。这个问题在这个区间只发生过一次,即2007年8月10日,从17:00到17:03持续了3分钟。在这段时间内,产生了28次M1和H1的高值分歧。我正在给你看适当的图片。 如果这对你来说不难,请在我要求的那个区间内运行EA(你修正的代码)。只是纠正评论的使用。现在在你的代码中,它与t/f D1进行比较,在这种模式下没有错误。我需要它来与H1进行比较。 Yurixx 2007.08.14 12:23 #114 我改变了一些代码,以保持在特别病态情况下的正确性(我在2007.01.01的M1上只有一个蜡烛,H1和D1也是如此)。我从2007.01.01到2007.08.11进行了测试,D1有4个错误的案例,H1有2个。所有的错误都发生在过渡到一个较高的TF上的新蜡烛。那些想自己看的人。 它没有给我们展望未来的可能性。至少在我检查的窥视变体中是如此。 附加的文件: future-2h.mq4 4 kb Rashid Umarov 2007.08.14 12:58 #115 Yurixx: 当然,感谢Rosh 的修改,但我认为这没有必要。 也许你没有注意到,在我的代码中的init()函数中,有以下块。 curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; 如果这对你来说不难,在我要求的时间间隔内运行EA(你修正的代码)。只是纠正评论的使用。现在在你的代码中,它与t/f D1进行比较,在这种模式下没有错误。我需要它来与H1进行比较。 你最好自己把代码贴出来。如果你注意到了,在H1上测试我的代码时,值不会被初始化。 if (Period()>PERIOD_M1) { Print("Период тестирования не соответствует задаче"); return(-1); } Print("Период тестирования ",Period()," минут"); FileWrite(handle,"Date","Time","curHi","HiH1","curLo","LoH1"); nn=D'2007.07.12 23:58:59'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); nn=D'2007.07.13 00:58:59'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); nn=D'2007.07.13 00:02:00'; FileWrite(handle,TimeToStr(nn,TIME_DATE|TIME_SECONDS), TimeSeconds(nn),TimeMinute(nn),TimeHour(nn),TimeDay(nn)); curHi=0.0; curLo=1000.0; curD1=-1; curH1=-1; curM1=-1; 也就是说,它将与我写的一模一样。如果你很难把代码摆出来,让我不去猜测它的内容,那么你自己应该明白,除了练习心灵感应,我还有其他事情要做。 Yurixx 2007.08.14 14:20 #116 真的,我不明白你为什么会感到恼火。 正如我在上一页发布EA与结果时写的那样,它的目的是为了测试 专属 在M1上。同时,它将自己产生的高点和低点与较高的t/f的高点和低点进行比较,这可能是H1或D1,取决于此。 在start()程序的文本中如何安排注释。 坦率地说,我认为init() 程序中的return(-1); 将停止EA的工作,因此将有可能只在M1上启动它。然而,现在,由于你的帖子,我确信它可以在任何TF上运行。 这个EA背后的想法是试图从较低的t/f(特别是M1)到较高的t/f(特别是H1或D1)刺探未来。.因此,它只应该在M1上运行。对H1的测试可能显示什么,我甚至不知道。 我在你的帖子之前发布了EA代码。 这个代码可以直接用于比较M1数据和H1数据。在EA的文本中,明确指出了需要做出的(基本)改变,以便将M1数据与D1数据进行比较。所以在这里,我也不知道你有什么不高兴的。 最后一件事。你的代码和我的一样适合于测试人员的运行。这只是一个完成任务的问题。 如果你有其他事情要做,我就不打扰你了。我并不是以个人请求的方式对你说话,而是作为MQ的代表,就可能发现测试器中的一些故障而对你说话。 Rashid Umarov 2007.08.14 14:30 #117 Yurixx: 真的,我不明白你为什么会感到恼火。 正如我在上一页发布EA与结果时写的那样,它的目的是为了测试 专属 在M1上。同时,它将自己产生的高点和低点与较高的T/F的高点和低点进行比较,这可能是H1或D1,取决于此。 在start()程序的文本中如何安排注释。 坦率地说,我认为init() 程序中的return(-1); 将停止EA的工作,因此将有可能只在M1上启动它。然而,现在,由于你的帖子,我确信它可以在任何TF上运行。 这个EA背后的想法是试图从较低的t/f(特别是M1)到较高的t/f(特别是H1或D1)刺探未来。.因此,它只应该在M1上运行。对H1的测试可能显示什么,我甚至不知道。 我在你的帖子之前发布了EA代码。 这个代码可以直接用于比较M1数据和H1数据。在EA的文本中,明确指出了需要做出的(基本)改变,以便将M1数据与D1数据进行比较。所以在这里,我也不知道你有什么不高兴的。 最后一件事。你的代码和我的一样适合于测试人员的运行。这只是一个完成任务的问题。 如果你有其他事情要做,我就不打扰你了。我并不是以个人请求的方式对你说话,而是作为MQ的代表,就可能发现测试器中的一些故障而对你说话。 我不明白我应该用什么时间框架来执行这个测试。我在三个时间框架上运行了它,没有干预代码。 2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily: 工作完成了 2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily: 2007.08.10 23:59:59, curHi=1.3693, HiH1=1.3702, curLo=1.3693, LoH1=1.3689 2007.08.14 16:29:02 2007.08.03 23:59 EURUSD,日线:2007.08.03 23:59:59, curHi=1.3773, HiH1=1.3787, curLo=1.3773, LoH1=1.3772 2007.08.14 16:29:02 2007.07.27 23:59 EURUSD,日线:2007.07.27 23:59:59, curHi=1.3635, HiH1=1.3641, curLo=1.3635, LoH1=1.3627 2007.08.14 16:29:02 2007.07.20 23:59:59 欧元兑美元,日线:2007.07.20 23:59:59, curHi=1.3826, HiH1=1.3827, curLo=1.3826, LoH1=1.3821 2007.08.14 16:29:01 2007.07.16 23:59:59 欧元兑美元,日线:2007.07.16 23:59:59, curHi=1.3772, HiH1=1.3773, curLo=1.3772, LoH1=1.3772 2007.08.14 16:29:01 2007.07.13 23:59:59 欧元兑美元,日线:2007.07.13 23:59:59, curHi=1.3782, HiH1=1.3787, curLo=1.3782, LoH1=1.3780 2007.08.14 16:29:01 2007.07.06 23:59:59 欧元兑美元,日线:2007.07.06 23:59:59, curHi=1.3625, HiH1=1.3630, curLo=1.3625, LoH1=1.3623 2007.08.14 16:29:01 2007.07.02 00:00 EURUSD,Daily: 测试周期不合适 2007.08.14 16:29:01 future-2h开始测试 2007.08.14 16:28:34 2007.08.10 22:59 future-2h EURUSD,H1: 工作完成了 2007.08.14 16:28:32 2007.07.02 00:00 future-2h EURUSD,H1: 测试周期不合适 2007.08.14 16:28:32 future-2h开始测试 2007.08.14 16:28:22 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成了 2007.08.14 16:28:19 2007.07.02 00:00 future-2h EURUSD,M1: 测试周期为1分钟 2007.08.14 16:28:19 future-2h开始测试 2007.08.14 16:24:28 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成了 2007.08.14 16:24:28 2007.08.06 00:00 future-2h EURUSD,M1: 测试周期为1分钟 Rashid Umarov 2007.08.14 14:34 #118 现在改变 if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); HiH1 = iHigh(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 LoH1 = iLow(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 //HiH1 = iHigh(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 //LoH1 = iLow(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 到 else if (hh!=curH1) { //curHi=NormalizeDouble(Bid,Digits); // Закомментировать при тесте D1 //curLo=NormalizeDouble(Bid,Digits); // Закомментировать при тесте D1 curH1=hh; curM1=mm; } else if (mm!=curM1) curM1=mm; if (NormalizeDouble(Bid,Digits)>curHi) curHi=NormalizeDouble(Bid,Digits); if (NormalizeDouble(Bid,Digits)<curLo) curLo=NormalizeDouble(Bid,Digits); //HiH1 = iHigh(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 //LoH1 = iLow(NULL,PERIOD_H1,0); // Закомментировать при тесте D1 HiH1 = iHigh(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 LoH1 = iLow(NULL,PERIOD_D1,0); // Раскомментировать при тесте D1 并在 2007.07.01至2007.08.11同一时间区间的三个时段 再次测试: <br/ translate="no"> 2007.08.14 16:32:03 2007.08.10 23:59 future-2h EURUSD,Daily: Work Finished 2007.08.14 16:32:03 2007.07.27 23:59 future-2h EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3753, HiH1=1.3753, curLo=1。3627, LoH1=1.3626 2007.08.14 16:32:01 2007.07.02 00:00 future-2h EURUSD,Daily: 测试周期不合适 2007.08.14 16:32:01 future-2h 开始进行测试 2007.08.14 16:31:56 2007.08.10 22:59 future-2h EURUSD,H1: 工作完成 2007.08.14 16:31:54 2007.07.02 00:00 future-2h EURUSD,H1: 测试期不符合任务 2007.08.14 16:31:54 future-2h开始测试 2007.2007.08.14 16:31:48 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成 2007.08.14 16:31:46 2007.07.02 00:00 future-2h EURUSD,M1: 测试期1分钟 2007.08.14 16:31:46 future-2h 开始测试 它说的是什么?我必须再次分析代码 中是否存在错误。 Yurixx 2007.08.14 18:19 #119 我明白了。你所做的一切都是正确的。而这个EA必须只在M1上运行。我想我写得很清楚。 专家顾问在M1上运行,它将测试M1时期的高低数据与H1或D1时期的重合度。如果可以窥视未来,那么高级的T/F数据会让你在M1上达到这些高点和低点之前知道高和低。就这样了。 你的D1测试结果与我的一致,在D1的这个区间我也没有得到任何错误。但H1测试并没有证实我得到的和早些时候发布的内容。没有必要对代码进行分析。正如你所看到的,它证实了测试器的正常运行。 如果你认为这已经足够了,你可以到此为止。 如果你想确定这不是偶然的,不是因为周期太小,那么就在更长的周期上运行同样的两个测试。例如,一年多来,或自2007年初以来。 PS 为了以防万一,我再重复一遍。测试 仅在M1期间. 只有在所有刻度线模式下. 谢谢你的参与。 Rashid Umarov 2007.08.14 19:45 #120 谢谢你提供的测试EA,有时你很难想出自己的方法,因为有这么多的测试选项,你不一定知道该测试什么。而烦人的是...你知道,你更经常地对自己的人感到厌烦,因为你期望他们能理解。你无意中变得更强硬,在你原谅别人的地方,你会对你的人感到沮丧。我很抱歉。 这些测试确实有助于改进MetaTrader 4测试器。特别是源代码。 1...5678910111213 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我已经按照你的要求测试了 "欧元兑美元在2007.07.10 至2007.07.14的范围内,以及分别在2007.07.09 至2007.07.14的范围内",没有任何区别。
我也不得不更新到最新版本。:-)的确,时间上的问题已经消失了,这很好。然而,事实证明,故事并没有就此结束。
我在同一时期运行了该EA--在M1和H1/D1的高低点之间没有区别。注意 - 我在我正常的、未受伤害的数据上进行了测试。 没有同步,等等。所以这不可能是差异的原因。
然后我决定在另一个间歇期试试,以防万一(嗯,我的坏脾气)。而事实证明,这还没有结束。
试试从2007.08.06 到2007.08.11 的区间,这实际上是最后一个星期。而且不是与D1比较,而是与H1比较。在专家顾问的文本中,有4个运算符应该被注释掉,还有4个运算符应该被取消注释。这并不是说刺探未来的可能性已经被证明,不是。但这个故障是存在的。
既然看来每周 没有问题并不能保证完全没有问题,也许我们应该在更长的时间间隔内进行测试,例如一年或六个月?
新的一天的事实在你的代码中被固定得太晚了,实际上是在第二天,而模拟的正确性检查在测试开始后就开始了。为了排除这种不对称性,我引入了一个布尔变量start,用它将所有的测试值固定在测试的开始。
正如你所看到的,它只起一次作用,不再影响EA。 接下来,一切都按照你的算法发生。 如果你不做初级初始化,那么检查字符串
将给出curLo=0的值,而curHi不等于零。解释很简单:两个变量curLo和curHi最初都等于0,因为它们是未初始化的。在第一次打勾时,条件是
被触发,并且curHi已经与0不同,因为当前的Bid大于0。同时,当前的Bid不能小于零(curLo没有被初始化,因此是零),因此条件是
不能以任何方式改变CurLo。自己运行我的专家顾问版本,检查错误文件Fu.xls将只包含一行--测试器中最后一次模拟报价的时间。
完整的代码附在帖子后面,最好下载,因为它不适合在帖子里。
当然,感谢Rosh 的修改,但我认为这没有必要。
也许你没有注意到,在我的代码中,在函数init()中,有以下块。
由于执行了这个区块,在EA开始执行时没有一个条件不能满足。
因此,无论EA在历史的哪个位置开始,都是新的一分钟,新的一小时,或新的一天。而上述区块的第一对运算符解释了为什么你说:"解释起来很简单:两个变量curLo和curHi最初都等于0,因为它们是未初始化的。由于第一个勾股价大于零,但小于1000,两个相应的条件语句必然被触发,变量curLo和curHi得到与你在if(开始)块{...}中分配给它们的初始值相同。
你的版本也一样好用,但它不会以任何方式影响算法。因此,这种改变对错误的存在或不存在没有影响。
再次注意我之前的帖子。问题不是在过渡到新的一天,也不是在EA的开始,而是在测试t/f H1时发生的。这个问题在这个区间只发生过一次,即2007年8月10日,从17:00到17:03持续了3分钟。在这段时间内,产生了28次M1和H1的高值分歧。我正在给你看适当的图片。
如果这对你来说不难,请在我要求的那个区间内运行EA(你修正的代码)。只是纠正评论的使用。现在在你的代码中,它与t/f D1进行比较,在这种模式下没有错误。我需要它来与H1进行比较。
我改变了一些代码,以保持在特别病态情况下的正确性(我在2007.01.01的M1上只有一个蜡烛,H1和D1也是如此)。我从2007.01.01到2007.08.11进行了测试,D1有4个错误的案例,H1有2个。所有的错误都发生在过渡到一个较高的TF上的新蜡烛。那些想自己看的人。
它没有给我们展望未来的可能性。至少在我检查的窥视变体中是如此。
当然,感谢Rosh 的修改,但我认为这没有必要。
也许你没有注意到,在我的代码中的init()函数中,有以下块。
如果这对你来说不难,在我要求的时间间隔内运行EA(你修正的代码)。只是纠正评论的使用。现在在你的代码中,它与t/f D1进行比较,在这种模式下没有错误。我需要它来与H1进行比较。
你最好自己把代码贴出来。如果你注意到了,在H1上测试我的代码时,值不会被初始化。
也就是说,它将与我写的一模一样。如果你很难把代码摆出来,让我不去猜测它的内容,那么你自己应该明白,除了练习心灵感应,我还有其他事情要做。
真的,我不明白你为什么会感到恼火。
正如我在上一页发布EA与结果时写的那样,它的目的是为了测试 专属 在M1上。同时,它将自己产生的高点和低点与较高的t/f的高点和低点进行比较,这可能是H1或D1,取决于此。 在start()程序的文本中如何安排注释。
坦率地说,我认为init() 程序中的return(-1); 将停止EA的工作,因此将有可能只在M1上启动它。然而,现在,由于你的帖子,我确信它可以在任何TF上运行。 这个EA背后的想法是试图从较低的t/f(特别是M1)到较高的t/f(特别是H1或D1)刺探未来。.因此,它只应该在M1上运行。对H1的测试可能显示什么,我甚至不知道。
我在你的帖子之前发布了EA代码。 这个代码可以直接用于比较M1数据和H1数据。在EA的文本中,明确指出了需要做出的(基本)改变,以便将M1数据与D1数据进行比较。所以在这里,我也不知道你有什么不高兴的。
最后一件事。你的代码和我的一样适合于测试人员的运行。这只是一个完成任务的问题。
如果你有其他事情要做,我就不打扰你了。我并不是以个人请求的方式对你说话,而是作为MQ的代表,就可能发现测试器中的一些故障而对你说话。
真的,我不明白你为什么会感到恼火。
正如我在上一页发布EA与结果时写的那样,它的目的是为了测试 专属 在M1上。同时,它将自己产生的高点和低点与较高的T/F的高点和低点进行比较,这可能是H1或D1,取决于此。 在start()程序的文本中如何安排注释。
坦率地说,我认为init() 程序中的return(-1); 将停止EA的工作,因此将有可能只在M1上启动它。然而,现在,由于你的帖子,我确信它可以在任何TF上运行。 这个EA背后的想法是试图从较低的t/f(特别是M1)到较高的t/f(特别是H1或D1)刺探未来。.因此,它只应该在M1上运行。对H1的测试可能显示什么,我甚至不知道。
我在你的帖子之前发布了EA代码。 这个代码可以直接用于比较M1数据和H1数据。在EA的文本中,明确指出了需要做出的(基本)改变,以便将M1数据与D1数据进行比较。所以在这里,我也不知道你有什么不高兴的。
最后一件事。你的代码和我的一样适合于测试人员的运行。这只是一个完成任务的问题。
如果你有其他事情要做,我就不打扰你了。我并不是以个人请求的方式对你说话,而是作为MQ的代表,就可能发现测试器中的一些故障而对你说话。
2007.08.14 16:29:03 2007.08.10 23:59 future-2h EURUSD,Daily: 2007.08.10 23:59:59, curHi=1.3693, HiH1=1.3702, curLo=1.3693, LoH1=1.3689
2007.08.14 16:29:02 2007.08.03 23:59 EURUSD,日线:2007.08.03 23:59:59, curHi=1.3773, HiH1=1.3787, curLo=1.3773, LoH1=1.3772
2007.08.14 16:29:02 2007.07.27 23:59 EURUSD,日线:2007.07.27 23:59:59, curHi=1.3635, HiH1=1.3641, curLo=1.3635, LoH1=1.3627
2007.08.14 16:29:02 2007.07.20 23:59:59 欧元兑美元,日线:2007.07.20 23:59:59, curHi=1.3826, HiH1=1.3827, curLo=1.3826, LoH1=1.3821
2007.08.14 16:29:01 2007.07.16 23:59:59 欧元兑美元,日线:2007.07.16 23:59:59, curHi=1.3772, HiH1=1.3773, curLo=1.3772, LoH1=1.3772
2007.08.14 16:29:01 2007.07.13 23:59:59 欧元兑美元,日线:2007.07.13 23:59:59, curHi=1.3782, HiH1=1.3787, curLo=1.3782, LoH1=1.3780
2007.08.14 16:29:01 2007.07.06 23:59:59 欧元兑美元,日线:2007.07.06 23:59:59, curHi=1.3625, HiH1=1.3630, curLo=1.3625, LoH1=1.3623
2007.08.14 16:29:01 2007.07.02 00:00 EURUSD,Daily: 测试周期不合适
2007.08.14 16:29:01 future-2h开始测试
2007.08.14 16:28:34 2007.08.10 22:59 future-2h EURUSD,H1: 工作完成了
2007.08.14 16:28:32 2007.07.02 00:00 future-2h EURUSD,H1: 测试周期不合适
2007.08.14 16:28:32 future-2h开始测试
2007.08.14 16:28:22 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成了
2007.08.14 16:28:19 2007.07.02 00:00 future-2h EURUSD,M1: 测试周期为1分钟
2007.08.14 16:28:19 future-2h开始测试
2007.08.14 16:24:28 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成了
2007.08.14 16:24:28 2007.08.06 00:00 future-2h EURUSD,M1: 测试周期为1分钟
到
并在 2007.07.01至2007.08.11同一时间区间的三个时段 再次测试:
2007.08.14 16:32:03 2007.08.10 23:59 future-2h EURUSD,Daily: Work Finished
2007.08.14 16:32:03 2007.07.27 23:59 future-2h EURUSD,Daily: 2007.07.27 23:59:59, curHi=1.3753, HiH1=1.3753, curLo=1。3627, LoH1=1.3626
2007.08.14 16:32:01 2007.07.02 00:00 future-2h EURUSD,Daily: 测试周期不合适
2007.08.14 16:32:01 future-2h 开始进行测试
2007.08.14 16:31:56 2007.08.10 22:59 future-2h EURUSD,H1: 工作完成
2007.08.14 16:31:54 2007.07.02 00:00 future-2h EURUSD,H1: 测试期不符合任务
2007.08.14 16:31:54 future-2h开始测试
2007.2007.08.14 16:31:48 2007.08.10 22:59 future-2h EURUSD,M1: 工作完成
2007.08.14 16:31:46 2007.07.02 00:00 future-2h EURUSD,M1: 测试期1分钟
2007.08.14 16:31:46 future-2h 开始测试
我明白了。你所做的一切都是正确的。而这个EA必须只在M1上运行。我想我写得很清楚。 专家顾问在M1上运行,它将测试M1时期的高低数据与H1或D1时期的重合度。如果可以窥视未来,那么高级的T/F数据会让你在M1上达到这些高点和低点之前知道高和低。就这样了。
你的D1测试结果与我的一致,在D1的这个区间我也没有得到任何错误。但H1测试并没有证实我得到的和早些时候发布的内容。没有必要对代码进行分析。正如你所看到的,它证实了测试器的正常运行。
如果你认为这已经足够了,你可以到此为止。 如果你想确定这不是偶然的,不是因为周期太小,那么就在更长的周期上运行同样的两个测试。例如,一年多来,或自2007年初以来。
PS
为了以防万一,我再重复一遍。测试 仅在M1期间. 只有在所有刻度线模式下.
谢谢你的参与。
这些测试确实有助于改进MetaTrader 4测试器。特别是源代码。