MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안 - 페이지 57

 

속도 제어 단축키는 Visualizer에서 작동하지 않습니다.



위협 획득. 분명히, 찾기 어려운 버그의 일종입니다.

 
동일한 입력 매개변수로 99-100%의 시뮬레이션 품질로 MT5의 다른 브로커와 실제 틱에 대한 고문을 테스트한 결과, 우주적 이익에서 손실에 이르기까지 완전히 다른 결과를 얻었습니다. 그 전에 그는 구체적으로 MT4를 떠났습니다. 그런 품질의 모델링을 달성하는 것이 더 어렵습니다. 귀찮게 해야 합니다. 그리고 결과는 무엇입니까? 고문은 실생활에서 어떻게 행동합니까? 누구든지 좋은 조언을 줄 수 있습니까?
 
ganri :
동일한 입력 매개변수로 99-100%의 시뮬레이션 품질로 MT5의 다른 브로커와 실제 틱에 대한 고문을 테스트한 결과, 우주적 이익에서 손실에 이르기까지 완전히 다른 결과를 얻었습니다. 그 전에 그는 구체적으로 MT4를 떠났습니다. 그런 품질의 모델링을 달성하는 것이 더 어렵습니다. 귀찮게 해야 합니다. 그리고 결과는 무엇입니까? 고문은 실생활에서 어떻게 행동합니까? 누구든지 좋은 조언을 줄 수 있습니까?

테스터+어드바이저는 매트입니다. 각 벡터에 숫자(이익)를 할당하는 함수(숫자 계열 - 따옴표).

따라서 (일반적으로) 다른 벡터 - 다른 이익. 그리고 이러한 이익은 어떤 규칙도 준수할 의무가 전혀 없습니다(예: 긍정적이어야 함).


다른 브로커는 다른 벡터(따옴표)입니다. 그것이 틱이든, 바이든 다른 무엇이든 여기에서는 중요하지 않습니다. 중요한 것은 벡터가 다르다는 것입니다.

 
fxsaber :

테스터+어드바이저는 매트입니다. 각 벡터에 숫자(이익)를 할당하는 함수(숫자 계열 - 따옴표).

따라서 (일반적으로) 다른 벡터 - 다른 이익. 그리고 이러한 이익은 어떤 규칙도 준수할 의무가 전혀 없습니다(예: 긍정적이어야 함).


다른 브로커는 다른 벡터(따옴표)입니다. 그것이 틱이든, 바이든 다른 무엇이든 여기에서는 중요하지 않습니다. 중요한 것은 벡터가 다르다는 것입니다.

제가 알기로는 이 상황에서 어드바이저 테스트 결과가 가장 좋은 브로커를 선택해서 작업하는 것이 필요합니다. 고맙습니다.

 

ME에서는 이러한 디버그 설정을 분리하는 것이 논리적입니다.

예를 들어 터미널의 EURUSD와 테스터의 EURUSD_Custom에서 디버그해야 합니다. 이제 그렇게 설정하지 마십시오.

아마도 테스터가 이와 같은 것을 입력할 수 있는 설정 텍스트 필드를 만드는 것이 합리적일 것입니다.

[Tester]
Period =M1
Optimization= 0
Model= 0
FromDate= 2019.07 . 22
ToDate= 2019.07 . 24
ForwardMode= 0
Deposit= 10000
Currency=USD
ProfitInPips= 0
Leverage= 100
ExecutionMode= 0
OptimizationCriterion= 6
Visual= 1

그러면 설정이 완전히 유연해집니다. GUI에 과부하가 걸리지 않습니다.

검색 문자열 : Uluchshenie 001.

 
하나의 에이전트만 포함됩니다. 한 번 만든 시각화 창은 닫히지 않습니다. 테스터에서 최적화가 선택되어 실행됩니다.
 2020.02 . 15 11 : 23 : 01.818 Tester  complete optimization started
2020.02 . 15 11 : 23 : 01.855 Core 1   agent still started in visual mode

Visualizer를 닫아도 빨간색 중지 버튼이 계속 켜져 있습니다. 아무 일도 일어나지 않습니다. 손으로 중지를 눌러야 합니다. 그러면 문제가 됩니다.

 2020.02 . 15 11 : 25 : 52.278 Tester  optimization finished, total passes 0
2020.02 . 15 11 : 25 : 52.278 Statistics      optimization done in 2 minutes 51 seconds
2020.02 . 15 11 : 25 : 52.279 Tester  stopped by user

그리고 제로 패스가 있는 opt 파일도 생성합니다.


아마도 여기에서 행동을 수정해야합니다.

검색 문자열 : Uluchshenie 002.
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안

fxsaber , 2020.02.11 01:58

오랫동안 나는 실제 진드기에 대한 테스터의 이상한 행동에 대한 이유를 찾고 있었습니다. 설립하다.
 const bool Init = EventSetTimer ( 1 );

void Func()
{
   static datetime PrevTime = 0 ;
  
   const datetime time = TimeTradeServer ();
  
   if (time < PrevTime)
     DebugBreak (); // Срабатывает
  
  PrevTime = time;
}

void OnTick ()
{
  Func();
}

void OnTimer ()
{
  Func();
}

서버 시간은 앞으로 실행된 다음 반환됩니다. 이것은 실제 거래 서버에서 발생하지만 사용자 정의 기호에 대한 재생을 만들었습니다.


우리는 시작합니다

 sinput datetime inDateFrom = D'2020.01.01' ;

void OnStart ()
{
   const string Name = " TEMP12345 " ;                                                           // Имя кастомного символа
   const string SymbOrig = "EURUSD" ;                                                           // Имя оригинального символа

   MqlTick Ticks[];
  
   const int Size = CopyTicksRange (SymbOrig, Ticks, COPY_TICKS_ALL , ( long )inDateFrom * 1000 ); // Считали EURUSD-тики.
    
   if ((Size > 0 ) && CustomSymbolCreate (Name, NULL , SymbOrig) && SymbolSelect (Name, true ))     // Создали символ на основе EURUSD.
  {
     CustomTicksReplace (Name, 0 , LONG_MAX , Ticks);                                             // Поместили в него историю EURUSD.        
    
     CustomRatesDelete (Name, D'2020.01.03 23:00' , D'2020.01.04 00:00' );                       // Удалили несколько баров.
  }
}


눈금 기록 이 있는 기호가 생성되지만 몇 개의 막대가 제거됩니다. 다음으로 이 모드에서 위의 디버그 어드바이저를 실행하십시오.

[Tester]
Symbol = TEMP12345
Period =M1
Optimization= 0
Model= 4
FromDate= 2020.01 . 01
ToDate= 2020.01 . 08
ForwardMode= 0
Deposit= 100000
Currency=USD
ProfitInPips= 1
Leverage= 100
ExecutionMode= 0
OptimizationCriterion= 6


중지.

두 번째 원으로 시간이 흘렀음을 알 수 있습니다.

검색 문자열 : Osibka 002.

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안

fxsaber , 2020.02.01 13:43

이러한 Expert Advisor조차도 핍 모드에서 가상보다 2배 이상 느립니다.

 input int inFakeRange = 0 ;
sinput int inOffset = 10000 ;

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnTick ()
{
   static long Ticket = - 1 ;
  
   if (Ticket == - 1 )
    Ticket = OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - inOffset * _Point , 0 , 0 , 0 );
}

왜 이런 일이 발생합니까? 전체 EA는 첫 번째 눈금에 BuyLimit을 배치합니다. 그리고 더 이상 아무것도!

검색 문자열 : Uluchshenie 003.
 
엄청난!
 2020.02 . 18 13 : 24 : 06.618 Core 1   pass 0 returned result 0 in 0 : 00 : 05.288 + history synchronization 0 : 00 : 03.098
 

눈금 크기를 1보다 작거나 같게 설정하는 것은 불가능합니다.

등록하고 다시 이동하면 값이 0이 됩니다. 1보다 큰 값의 경우 모든 것이 정상입니다.

검색 문자열 : Uluchshenie 004.