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

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

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

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

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

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

1 ответ

Решение
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() автоматически вызывается Event-handler сразу после ввода нового набора параметров оптимизации в такой тестовый прогон.

Другие вопросы по тегам