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

 

Друзья, подскажите, возможно ли обучить тестер? 

Цель - выкинуть мусор из общего скопа результатов работы, и как следствие - сокращение времени работы оптимизатора.

Простой пример:

Оптимизируем 2 стандартных параметра перевода в безубыток: 

  1. BULevel (когда переводим в БУ)
  2. BUPoint (сам уровень БУ)

В коде совы запуск функции делаем так:

if(BULevel!=0 && BULevel >= BUPoint) BU(); 

И в итоге один хрен получаем, что оптимизатор перебирал все параметры в диапазоне, в том числе и те, когда BULevel >= BUPoint возвращает ЛОЖЬ.

Он просто игнорит условия вызова функции. Видимо, для тестера это нужно делать иначе, но как?

Прошу подсказать кто сталкивался. 

Заранее благодарен!

 
Проверяйте условия в OnInite и при необходимости прерывайте заранее
 
https://www.mql5.com/ru/forum/106115
Простой способ прерывания отдельного прогона во время оптимизации НЕ РАБОТАЕТ
Простой способ прерывания отдельного прогона во время оптимизации НЕ РАБОТАЕТ
  • 2007.12.09
  • www.mql5.com
Цитата из справки: Оптимизация — эта вкладка позволяет управлять ограничениями во время оптимизации...
 
Rashid Umarov:
Проверяйте условия в OnInite и при необходимости прерывайте заранее
В MT5 через ExpertRemove не получается прерывание прохода.
 
fxsaber:
В MT5 через ExpertRemove не получается прерывание прохода.

А через ошибку инита? В МТ4 получается.
 
Vitalie Postolache:
А через ошибку инита? В МТ4 получается.
Не пробовал, но хочется обрубать MT5-проход не только в OnInit.
 
Rashid Umarov:
Проверяйте условия в OnInite и при необходимости прерывайте заранее


Я правильно понял? :

int OnInit()
   {
      if (BULevel < BUPoint) return(INIT_PARAMETERS_INCORRECT); else return(0);
   }

Такой вариант компилит без ошибок, но тестер пишет ошибку инициализации. Что не так???

 
Vitaliy Hudyakov:


Я правильно понял? :

Такой вариант компилит без ошибок, но тестер пишет ошибку инициализации. Что не так???


Всё так. Это и есть ошибка инициализации, вызванная заданным условием. Но в случае когда условие = false всё же рекомендую возвращать (INIT_SUCCEEDED) вместо 0.