28个!!!货币对,1个专家。另一个圣杯,但这个我认为没有人展示过。+ 试用账户 - 页 11

 
 
这是正确的,封面是一样的。
 
MetaQuotes:
没有来源和证明的图片游行......


2罗什

在您的EA第5页中,您检查了所有t/fs的买入和卖出不匹配。你把没有这种不匹配解释为确认在测试器中不可能展望未来。当时我仍然觉得这种联系很奇怪。在我看来,应该测试的不是收盘价的行为,而是较高T/F的高点和低点的行为。而在上面提到的MQ的不公平指责之后,我决定投入一些时间来做这件事。但这已经太晚了。

下面是专家顾问的代码,它在一分钟的图表上自行生成一小时或一天的当前高点和低点。然后在每一个刻度上将其与从H1或D1获得的一小时或一天的最高点和最低点进行比较,如果有差异,就将其发送到日志和文件。

 
//+------------------------------------------------------------------+
//|                                           Simple Prospection.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2007, Yurixx"
#property link      ""
double curHi,curLo,HiH1,LoH1;
int    mm,hh,dd,curM1,curH1,curD1,kk,nn,handle;
string str,mHi,mLo,hHi,hLo;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  handle = FileOpen("FU.csv",FILE_CSV|FILE_WRITE," ");
  if(handle<1) { Print("File FU.csv not found, Error:", GetLastError());
                 return(false);   }
  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;
  nn=0;//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {  
//----
  mm = TimeMinute(TimeCurrent());
  hh = TimeHour(TimeCurrent());
  dd = TimeDay(TimeCurrent());
  if (mm!=curM1)
  {  if (hh!=curH1)
     {  if (dd!=curD1)
        {  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)>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 (HiH1!=curHi||LoH1!=curLo)
  {  Print(str,mHi,hHi,mLo,hLo);
     FileWrite(handle,TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),curHi,HiH1,curLo,LoH1);
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{  Print("Работа закончена");
   FileClose(handle);
//---- done
   return(0);
}

这是一段日志,是在2007.07.10至2007.07.14期间在欧元兑美元M1上运行该EA获得的。然而,当与每小时的数据相比较时,情况并没有好转。我想得到一个确认,看看未来的可能性,或者确保没有这种可能性。然而,它变成了完全不同的东西。

从图片中可以看出,测试者打印在日志中的时间和专家顾问显示的时间偶尔会有差异。除此以外,还有一些令人难以理解的挫折。时间2007.07.13 00:58,2007.07.12 00:58,2007.07.13 00:02,2007.07.13 00:04,2007.07.13 00:06以及2007.07.13 00:07。而每次专家顾问都会输出2007.07.12 23:58:59。

也许,在这些时刻,相关的高位和低位数据的差异正是由这些计时故障造成的。

此外,我建议注意测试打印到文件,这是在init()函数中。这个打印结果表明,秒针在测试器中不工作。因此,秒模式的TimeToStr()和TimeSeconds()函数不起作用。也许,它本来就是这样的,但为什么测试员和专家顾问都打印出带秒的数据呢?

我甚至没有提出High和Low数据之间的差异问题,因为在这个晦涩的时间里,绝对不清楚这些数据来自哪里。

还有一件事。当从2007.07.09 到2007.07.14而不是从2007.07.10 到2007.07.14进行测试时,我遇到了异常的情况,如高低余额的数据完全缺失,即变量HiH1和LoH1总是有零值。

可能是我在什么地方犯了错误?

 
你好,Yurixx。
我运行了你的专家顾问,没有改变代码中的任何内容。以下是它输出的文件的所有数据:
日期 时间 curHi HiH1 curLo LoH1<br/ translate="no"> 2007.07.12 23:58:00 0 58 23 12
2007.07.13 00:58:00 0 58 0 13
2007.07.13 00:02:00 0 2 0 13
以下是日志:
2007.08.13 09:54:51 2007.07.13 22:59 Simple Prospection EURUSD,M1: 工作完成
2007.08.13 09:54:48 2007.07.10 00:00 Simple Prospection EURUSD,M1: 测试周期1分钟
2007.08.13 09:54:48 Simple Prospection 开始测试
2007.08.13 09:54:45 Simple Prospection: 载入成功
从2007.07.10到2007年的测试中没有一个错误。07.14. 诚然,然后我想起我有一个上周的测试特殊构建。从8月1日开始的通常的208构建(现在由LebeUpdate更新了一个术语)也没有错误:
2007.08.13 10:13:04 2007.07.13 22:59 Simple Prospection EURUSD,M1: 工作完成
2007.08.13 10:13:04 2007.07.10 00:00 Simple Prospection EURUSD,M1: 测试时间为1分钟
2007.08.13 10:13:04 Simple Prospection 开始测试
问题是,在测试之前,我已经从历史中心下载了错过的数据(我已经有几个月没有启动这个终端了),然后重新计算了所有的时间段--我在历史中心第二次按了 "下载",在这种情况下,它建议自动重新计算所有的T/F,不需要周期 转换器(以防人们不知道这个功能)。


但在这之前,有错误输出到日志中:

2007.08.13 10:08:19 1999.05.26 02:01 Simple Prospection GBPUSD,M1: 工作完成 2007.08.13 10:08:18 1999.01.04 09:31 Simple Prospection GBPUSD,M1: 1999.01. 04 09:31:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:30 Simple Prospection GBPUSD, M1: 1999.01. 04 09:30:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:29 Simple Prospection GBPUSD, M1: 1999.01. 04 09:29:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:28 Simple Prospection GBPUSD, M1: 1999.01. 04 09:28:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:27 Simple Prospection GBPUSD, M1: 1999.01. 04 09:27:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:26 Simple Prospection GBPUSD, M1: 1999.01. 04 09:26:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:25 Simple Prospection GBPUSD, M1: 1999.01. 04 09:25:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:24 Simple Prospection GBPUSD, M1: 1999.01. 04 09:24:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:23 Simple Prospection GBPUSD, M1: 1999.01. 04 09:23:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:22 Simple Prospection GBPUSD, M1: 1999.01. 04 09:22:00, curHi=1.6718, HiH1=1.6718, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:21 Simple Prospection GBPUSD, M1: 1999.01. 04 09:21:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:20 Simple Prospection GBPUSD, M1: 1999.01. 04 09:20:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:19 Simple Prospection GBPUSD, M1: 1999.01. 04 09:19:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:18 Simple Prospection GBPUSD, M1: 1999.01. 04 09:18:00, curHi=1.6702, HiH1=1.6702, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:17 Simple Prospection GBPUSD, M1: 1999.01. 04 09:17:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:16 Simple Prospection GBPUSD, M1: 1999.01. 04 09:16:00, curHi=1.6701, HiH1=1.6701, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:15 Simple Prospection GBPUSD, M1: 1999.01. 04 09:15:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1。6684 2007.08.13 10:08:18 1999.01.04 09:14 Simple Prospection GBPUSD, M1: 1999.01. 04 09:14:00, curHi=1.6687, HiH1=1.6687, curLo=1.6682, LoH1=1。6686 2007.08.13 10:08:18 1999.01.04 09:13 Simple Prospection GBPUSD, M1: 1999.01. 04 09:13:00, curHi=1.6682, HiH1=1.6697, curLo=1.6682, LoH1=1。6597 2007.08.13 10:08:15 1999.01.04 09:13 Simple Prospection GBPUSD,M1: Testing period 1 minute 2007.08.13 10:08:15 Simple Prospection started for testing






















我下载了欧元兑美元的该数据,但开始测试英镑兑美元,该数据没有被抽出并重新 计算过。这就是不一致的原因。
尝试做同样的事情--加载数据并自动同步,或使用周期转换脚本。

我们会研究秒钟的事情,谢谢。
 

嗨,Rosh !

谢谢你的答复。根据我的理解,你认为来自不同功能的High和Low数据不匹配是由于报价流的质量造成的。因此,在不同的功能上,蜡烛图的形状是不同的,因此可能有1-2-3个点的不同。这是很有可能的。

我一直在使用MQ演示服务器的数据进行测试。我不是实时写的,但我每周下载一次所有的数据,在周末。 事实上,我认为烛台是在所有的TF上绘制的,至少在服务器上,由服务器软件对所有的TF同步绘制,基于一个报价流,因此这种差异是不可能的。如果不是这样,那就很遗憾了,我们将不得不以某种方式考虑到这一点......。在我看来,将数据、同步化等结合起来使一切看起来很好,是错误的做法。你的服务器和经纪人的服务器都是按照他们的要求来传递数据的。而你必须根据这些数据进行交易,而不是根据一段时间后的数据。 对于测试过程来说,这一点尤其重要。每个人都知道grails的 问题--测试器中的空间和真实交易机器人中的损失。它是从哪里来的?MQ坚持认为,展望未来是不可能的,而打钩建模对这一过程是相当合适的。人们必须假定情况就是如此。因此,事实上,问题在于数据?MQ不能解决这个问题,数据并不依赖于它。那么你需要让测试器在任何数据上都能正确工作,而不仅仅是梳理整齐的数据。

但我的帖子不是关于不同的T/F的数据差异,而是关于随着时间推移的混乱。而你发帖的事实并不能消除这个问题。相反,关于你的帖子,我想问以下问题。

在我的日志中,测试者和EA的时间数据都包含了秒。在你的测试中,测试器中的数据根本不包含秒数,而你的EA中的数据只包含0秒。 这让我产生了疑问:你是在什么模式下进行的测试。我想说明的是--这个EA 用于 在 "所有刻度 "模式下 的测试。而我所遇到的错误只能从这个模式中重现。因此,如果你一直在其他模式下测试,请重复测试,这只需要一秒钟。

原则上说,在哪一对和哪一个日期范围内进行测试是完全没有区别的。而在M1以外的TF上,专家顾问将无法工作。然而,为了能够比较我们的结果,我要求你在欧元兑美元上做一个测试,在2007.07.10 和2007.07.14之间的范围内,以及在另一个测试中,在2007.07.09 和2007.07.14之间的范围内。

我预先感谢你。

 
Yurixx:

嗨,Rosh !

在我的日志中,测试者和EA的时间数据都包含秒。在你这里,测试者的数据根本不包含任何秒数,而EA的数据只包含0秒。这就引出了一个问题:你用什么模式进行测试?我想说明的是--这个EA 用于 在 "所有刻度 "模式下 的测试。而我所遇到的错误只能从这个模式中重现。因此,如果你一直在其他模式下测试,请重复测试,这只需要一秒钟。

原则上说,在哪一对和哪一个日期范围内进行测试根本不重要。而在M1以外的TF上,专家顾问将无法工作。然而,为了能够比较我们的结果,我要求你在欧元兑美元上做一个测试,在2007.07.10 和2007.07.14之间的范围内,以及在另一个测试中,在2007.07.09 和2007.07.14之间的范围内。

预先感谢你。


的确,现在查了一下,发现我没有秒。我认为这与以下事实有关:在第一次测试中,我没有自动加载 GBPUSD 的1小时和1天的数据 (我根本没有在终端中打开图表),但我现在第二次尝试检查,没有错误 - 我在第一次测试运行 中加载了必要的数据。

也就是说,第一次没有英镑兑美元的H1和D1时段的数据,因此在建模时出现了错误。
 
我按照你的要求做了 "在2007.07.10 至2007.07.14范围内的欧元兑美元的测试,以及在另一个测试中,在2007.07.09 至2007.07.14范围内的测试",没有区别。
 
Rosh:

我们会研究秒的事情,谢谢你。


秒的错误已被修复(在编译器中)。纠正后的版本将很快推出。
 
Rosh:
秒的错误已被修复(在编译器中)。
,更正后的版本将很快推出。
我们能否希望在修正后的版本中,测试器grail77 将不再工作?
 
granit77:
罗什
秒的错误已被修复(在编译器中)。纠正后的版本将很快推出。
我们是否可以希望,在修正后的测试器中,grail77将不再工作?

我明天会检查的。