MetaTrader 5策略测试器:缺陷,缺陷,改进建议 - 页 62

 
fxsaber:

1.将档案 解压到空的终端文件夹中。


2.运行脚本fxsaber\CreateSymbol.ex5


几秒钟后,将出现自定义符号的图表。


2. 打开测试器(CTRL+R),选择有标记的设置。



3.在出现的测试器窗口中点击开始。



4.当第一个优化结果可用时,按 "停止"。


5.在测试仪设置中把间隔的开始日期改为2019.11.01,然后按开始。


6.优化结果中的谵妄值(从来源 可以看出,它们之间的差异不能超过50)。


反复进行这些步骤。100%重现了这个问题。谁来试试,让我知道。

我会努力的。

你反过来用我试图重现的蜱虫进行尝试。MetaQuotes-演示服务器

1.从终端对话框中创建了一个基于CHFJPY的自定义符号(只改变了名称)。

2.将几年来的CHFJPY点数导出为csv文件

3.将这些点位导入CHFJPY.custom中

4.运行你的专家顾问进行遗传优化。在不同的组合中

 
Slava:

你反过来用我试图重现的蜱虫进行尝试。MetaQuotes-演示服务器

转载。有了这个范围的输入。


结果彼此之间的差异不应超过50。


按升序排序,然后比较最高和最低的线。


SZZ从这里开始 重复步骤3-6。 用同样的日期。

 

在MQ-Demo上尝试了原始的CHFJPY。玩过了!

  1. 设置时间间隔和开始的GA。
  2. 当所有代理的头几个结果出来时,我按下停止键。
  3. 如果我没有得到任何结果,我就转到第1步,改变时间框架(仅开始日期)。
三次尝试,这就是结果。

2020.02.21 08:38:14.104 Core 5  genetic pass (0, 252) returned result 965118462.000000 in 0:00:01.114
2020.02.21 08:38:14.114 Core 2  genetic pass (0, 111) returned result 686545176.000000 in 0:00:00.999
2020.02.21 08:38:14.114 Core 2  genetic pass (0, 112) returned result 686545168.000000 in 0:00:01.011
2020.02.21 08:38:14.332 Core 4  genetic pass (0, 76) returned result 1953417341.000000 in 0:00:01.342
2020.02.21 08:38:14.332 Core 8  genetic pass (0, 181) returned result 2212155593.000000 in 0:00:01.419
2020.02.21 08:38:14.395 Core 3  genetic pass (0, 146) returned result 1326263652.000000 in 0:00:01.154
2020.02.21 08:38:14.871 Core 1  genetic pass (0, 2) returned result 1143628048.000000 in 0:00:01.324
 
fxsaber:

在MQ-Demo上尝试了原始的CHFJPY。玩过了!

  1. 设置时间间隔和开始的GA。
  2. 当所有代理的头几个结果出来后,我按下停止键。
  3. 如果我没有得到任何结果,我就转到第1步,改变时间框架(只有开始日期)。
三次尝试,这就是结果。

做着同样的事情。它不会繁殖。

让我们来看看测试员的日志吧!

 
Slava:

做着同样的事情。这不是在玩。

把测试员的日志给我!

附上所有的日志。

附加的文件:
TesterLogs.zip  56 kb
 
fxsaber:

我已经附上了所有的日志。

你在一个普通的外汇CHFJPY上再现了这个问题,甚至没有一个自定义的。
 
Slava:
你在一个普通的外汇CHFJPY上再现了这个问题,甚至没有一个自定义的。

是的,在一个普通的。对那里的通行证中的刻度线感到好奇,所以我在EA中添加了一些线条。

// Критерий оптимизации - сумма входных параметров + сумма нецелых частей секунды каждого тика (в миллисекундах).

input int inFakeRange1 = 0;
input int inFakeRange2 = 0;
input int inFakeRange3 = 0;
input int inFakeRange4 = 0;
input int inFakeRange5 = 0;

long Sum = inFakeRange1 + inFakeRange2 + inFakeRange3 + inFakeRange4 + inFakeRange5;

MqlTick Ticks[1000];
int Count = 0;

void OnTick()
{
  MqlTick Tick;

  if (SymbolInfoTick(_Symbol, Tick))
  {
    Sum += Tick.time_msc % 1000;
    
    if (MQLInfoInteger(MQL_TESTER) && (Count < ArraySize(Ticks))) // Запоминаем тики
      Ticks[Count++] = Tick;
  }
}

double OnTester()
{
  FrameAdd(__FILE__, Count, Sum, Ticks); // Отправляем тики через фрейм
  
  return((double)Sum);
}

void OnTesterPass( void )
{
  ulong Pass;
  string Name;
  long id;
  double Value;  

  MqlTick Ticks2[];
  
  while (FrameNext(Pass, Name, id, Value, Ticks2)) // Принимаем фрейм-тики
  {
    FileSave(__FILE__ + "\\" + (string)Pass + ".bin", Ticks2); // Сохраняем на диск
    
    Print((string)Pass + " - " + (string)Value);
  }
}


然后我拿了两个文件,用脚本进行比较。

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

void OnStart()
{
  MqlTick Ticks1[];
  MqlTick Ticks2[];
  
  const int Size = (int)MathMin(FileLoad("88021.bin", Ticks1), FileLoad("11921.bin", Ticks2)); // Считали тики из файлов.
  
  int Count = 0;
  
  for (int i = 0; (i < Size) && (Count < 10); i++)
    if (_R(Ticks1[i]) != Ticks2[i]) // Если тики отличаются, выводим их значения.
    {
      Print(i);
      
      ArrayPrint(Ticks1, _Digits, NULL, i, 1);
      ArrayPrint(Ticks2, _Digits, NULL, i, 1);
      
      Print("------------");
      
      Count++;
    }
}


结果。

0
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
1
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
2
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
3
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
4
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
5
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
6
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
7
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
8
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000
------------
9
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.08.28 23:27:03 108.10400 108.12500 0.0000        0 1567034823177     134       0.00000
                 [time]     [bid]     [ask] [last] [volume]    [time_msc] [flags] [volume_real]
[0] 2019.10.11 21:21:11 108.71800 108.74100 0.0000        0 1570828871198       4       0.00000


从2019.06.01开始进行优化。在结果中可以清楚地看到,第一个刻度是来自不同的日期。而这些日期是彼此不同的。


ZS做了一个额外的检查。每个谵妄期的记录点不会改变:第一个点等于最后一个点。一般来说,GA通行证遵循一些奇怪的顺序。

 
fxsaber:

一般来说,GA通行证遵循一些奇怪的勾选序列。

以完全的蛮力模式重现。这个问题影响到所有的优化模式

 
fxsaber:

是的,在一个普通的。对那里的通行证中的刻度线感到好奇,所以我在EA中添加了一些线条。


然后我拿了两个文件,通过脚本进行比较。


结果。


从2019.06.01开始进行优化。在结果中可以清楚地看到,第一个刻度是来自不同的日期。而这些日期是彼此不同的。

是否只有在从 "停止 "按钮提前完成之前的优化时才会出现这种效果?还是也有正常的终止?
 
Slava:
是否只有在从 "停止 "按钮提前完成前一个优化时才会出现这种效果?还是也有正常的终止?

在按下 "停止 "键之前,我在日志和优化表中看到,错误的通行证已经被计算在内。然后我按下停止键,因为继续下去没有任何意义。

你误解了这个问题。

是的,作为一项规则,你应该在前一个优化中至少按一次停止。但只要你打出一个错误的优化,接下来所有的优化也会变得错误(我不再改变时间间隔了)。


也许有人会连接到重播。奇怪的是,它对你不起作用,但对我来说,在一个干净的终端上却能快速播放。


ZS 如果能有某种封闭式测试,并在代理方有最大限度的记录,那就更好了。那么我机器上的日志可能已经把问题定位了。