Как пропустить некоторые входные параметры, заданные в режиме оптимизации MT4 StrategyTester, если ограничения не были соблюдены? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 3 различных входных параметра: P1 [1..10], P2 [1..10] и P3 [3..10].Ограничения следующие: P1 < P2 < P3.

Некоторые потенциальные решения следует сразу отбрасывать, если ограничения не соблюдаются.Например, когда P1 = 2, P2 = 1 и P3 = 4.

Есть ли способ сделать это с помощью оптимизации MetaTrader?
(в конечном итоге с помощью функции OnTesterPass()?)

Я теряю много времени во время оптимизации из-за этого, и я хотел бы найти способ отменить или пропустить напрямую потенциальное решение, когда ограничения не соблюдаются.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 06 июня 2018
int OnInit(){
   if(P1<P2 && P2<P3){} // OK
   else{
      printf("%i %s - parameters SKIPPED, !(P1<P2<P3)",__LINE__,__FUNCTION__);
      return(INIT_FAILED);
   }
}

Это все.

Во время оптимизации printf() не вызывается.

Либо INIT_FAILED, либо INIT_PARAMTERS_INCORRECT останавливает оптимизацию определенного набора, и [MT4 Strategy Tester] переходит прямо к следующему набору параметров.

Вам не нужно OnTesterPass(), потому что он вызывается после завершения теста, OnInit()автоматически вызывается обработчиком событий сразу после ввода нового набора параметров оптимизации в такой тестовый прогон.

...