Как пропустить некоторые входные параметры, заданные в режиме оптимизации 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 сразу после ввода нового набора параметров оптимизации в такой тестовый прогон.