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. 유전자 최적화를 위한 Expert Advisor를 출시했습니다. 다양한 조합으로

 
Slava :

당신은 차례로 내가 번식하려고 시도한 진드기로 시도합니다. 서버 MetaQuotes-데모

재생산. 이 입력 범위로


결과는 서로 50 이상 차이가 나지 않아야 합니다.


오름차순으로 정렬한 다음 맨 위 행과 맨 아래 행을 비교합니다.


위협 여기에서 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에서 문제를 재현했습니다.

예, 정기적으로. 구절에 어떤 진드기가 있는지 흥미로워져 조언자에게 몇 줄을 추가했습니다.

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

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부터 최적화가 진행되었습니다. 결과는 첫 번째 진드기가 다른 날짜에서 왔다는 것을 분명히 보여줍니다. 그리고 이 날짜는 다릅니다.


협박 추가 확인했습니다. 각 망상 패스에 기록된 틱은 변경되지 않습니다. 첫 번째 틱은 마지막 틱과 같습니다. 일반적으로 GA 패스는 이상한 틱 시퀀스를 따릅니다.

 
fxsaber :

일반적으로 GA 패스는 이상한 틱 시퀀스를 따릅니다.

전체 열거 모드에서 재현됩니다. 문제는 모든 최적화 모드 에 영향을 미칩니다.

 
fxsaber :

예, 정기적으로. 구절에 어떤 진드기가 있는지 흥미로워져 조언자에게 몇 줄을 추가했습니다.


그런 다음 두 개의 파일을 가져와 스크립트를 통해 비교했습니다.


결과.


2019.06.01부터 최적화가 진행되었습니다. 결과는 첫 번째 진드기가 다른 날짜에서 왔다는 것을 분명히 보여줍니다. 그리고 이 날짜는 다릅니다.

이전 최적화가 "중지" 버튼에서 일찍 종료된 경우에만 효과가 나타납니까? 아니면 정상 종료시에도?
 
Slava :
이전 최적화가 "중지" 버튼에서 일찍 종료된 경우에만 효과가 나타납니까? 아니면 정상 종료시에도?

중지를 클릭하기 전에 로그와 최적화 테이블에서 잘못된 패스가 이미 계산되었음을 알 수 있습니다. 그런 다음 중지를 누릅니다. 계속해도 소용이 없습니다.

질문을 잘못 이해했습니다.

예, 원칙적으로 이전 최적화에서 한 번 이상 중지를 클릭해야 합니다. 그러나 잘못된 Optimization이 발생하는 즉시 다음 항목도 모두 오류가 됩니다(저는 이미 시간 간격을 변경하지 않습니다).


아마도 누군가가 재생에 참여할 것입니다. 그것이 당신을 위해 작동하지 않는 것이 이상하지만 깨끗한 터미널에서 빠르게 재생산됩니다.


위협 에이전트 측에서 최대 로그 수와 함께 일종의 클로즈 베타를 하는 것이 좋을 것입니다. 그런 다음 내 컴퓨터의 로그가 문제를 현지화했을 수 있습니다.

사유: