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

 
2314. 거래 모드당 수수료 비율이 올바르게 계산되지 않았습니다. + GUI를 통해(파일을 통해, 가능) 소수점 둘째 자리 이상으로 설정하지 마십시오.
 

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

전문가 자문: 검증

fxsaber , 2020.02.06 17:20

추신: 불행히도 MT5-Tester 자체는 Expert Advisors의 소스 코드 외부에서 사용자 정의 최적화 기준(선택 아님) 설정을 허용하지 않습니다. 이에 대한 아키텍처 장애물은 없지만.

이제 최적의 선택 기준 에 따라 최적화 결과에서 패스를 선택할 수 있습니다.

하지만 EX5만 있다면 자신만의 최적화 기준을 설정하는 것은 불가능합니다. 내 관점에서 이러한 최적화 기준은 OnTester와 TesterStatistics 기능의 데이터만 사용할 수 있는 Expert Advisor 형식으로 설정할 수 있습니다. 아마도 이것은 개발자의 계획에 있지 않습니다. 따라서 성우만 가능합니다.

 

영어에서 러시아어로 기계 번역된 것에 대해 유감스럽게 생각하지만 버그를 보고하기 위해 이 스레드만 찾았습니다.

편집기에서 디버그 시각적 테스트를 실행하고 중단점을 누르고 Ctrl+F 키보드 단축키를 누를 때 Metatrader 5 플랫폼에 문제가 있는 것으로 보입니다.

기록 데이터를 디버깅하는 동안 ctrl+f를 누를 때 표시기(모두, 활성화됨) 다시 그리기/1 막대 이동)

놀다:

  1. 오픈 메타트레이더 5
  2. EMA 5 및 EMA 10(내장) 추가
  3. Strategytester를 Daily, Simulation: ticks 또는 Real ticks로 설정합니다(둘 다 동일한 문제를 유발함).
  4. 편집기 메타트레이더 5 열기
  5. 포함된 ExpertMACD.mqh 열기
  6. Expert.mqh의 651행에 중단점 설정
  7. CTRL + F5로 시작하여 기록 데이터에서 실행
  8. 완전히 닫힌 양초 위로 마우스를 가져갑니다(최소 1-2일 전).
  9. 중단점에 도달하면 비주얼 테스터를 활성화하고 Ctrl + F를 누릅니다.
  10. 시각적 테스트 창에서 CTRL + F를 누르고 십자선을 얻는 즉시 모든 표시기가 왼쪽으로 1바 이동합니다.
  11. 중단점에서 계속하면 모든 표시기가 오른쪽으로 1바 이동합니다.
  12. 8~11단계를 반복할 수 있으며 항상 동일하게 수행합니다.

문제는 EA가 실제로 해야 할 일을 하고 있는지 확인할 때 막대가 EA가 보는 것과 오프셋되면 불가능하다는 것입니다.

내장된 EA 예제와 내장된 지표의 경우처럼 지표에서는 문제가 되지 않습니다.


이 YouTube 비디오는 약 0:25에서 문제를 보여줍니다. Ctrl+F를 누릅니다.

https://youtu.be/_fyCv3Zla9A

 
fxsaber :

이제 최적의 선택 기준 에 따라 최적화 결과에서 패스를 선택할 수 있습니다.

하지만 EX5만 있다면 자신만의 최적화 기준을 설정하는 것은 불가능합니다. 내 관점에서 이러한 최적화 기준은 OnTester와 TesterStatistics 기능의 데이터만 사용할 수 있는 Expert Advisor 형식으로 설정할 수 있습니다. 아마도 이것은 개발자의 계획에 있지 않습니다. 따라서 성우만 가능합니다.

이제서야 이해하셨나요? 잘못된 거래 전략 모델이 있으면 최적화가 도움이 되지 않습니다.

저것들. 수학적 모델링 또는 기계 학습은 작업에 달려 있지 않습니다. 블랙박스에 무엇이 들어 있는지 정확히 알아야 합니다.

 
Petros Shatakhtsyan :

이제서야 이해하셨나요?

어떻게 그런 비논리적인 질문이 나오는지 이해가 되지 않습니다.

잘못된 거래 전략 모델이 있다면 최적화가 도움이 되지 않습니다.

물론 누군가가 나쁘다면 그는 좋지 않습니다. 그것이 바로 위의 제안처럼 들립니다.

저것들. 수학적 모델링이나 기계 학습은 작업에 달려 있지 않습니다. 블랙박스에 무엇이 들어 있는지 정확히 알아야 합니다.

이 문장은 작업에 관한 것입니다. 그리고 그것은 어떤 목적을 위해 당신이 뭔가를 알아야 합니다. 일반적으로 대답은 자신과의 대화에서 찢어진 조각처럼 보이지 않는 것이 좋습니다.

 
fxsaber :

성배가 없습니다.

있다.

 
Алексей Тарабанов :

있다.

Graality assertion (테스터 모드 수정 전)은 코드로 확인되었습니다.

 

일부 최신 빌드에서는 tst 파일 가져오기 가 완료되지 않았습니다. 설정 탭이 tst에 등록된 파일로 업데이트되지 않았습니다.

이전에는 가져오기를 하고 설정에서 결과를 얻은 값을 즉시 확인할 수 있습니다. 지금은 아닙니다. 복귀가 가능한가요?

 
오랫동안 나는 실제 진드기에 대한 테스터의 이상한 행동에 대한 이유를 찾고 있었습니다. 설립하다.
 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


중지.

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

 
fxsaber :

일부 최신 빌드에서는 tst 파일 가져오기가 완료되지 않았습니다. 설정 탭이 tst에 등록된 파일로 업데이트되지 않았습니다.

이전에는 가져오기를 하고 설정에서 결과를 얻은 값을 즉시 확인할 수 있습니다. 지금은 아닙니다. 복귀가 가능한가요?

예, 수정하겠습니다.