оптимизация советника, досрочное принудительное завершение теста

 

добрый день,

Я оптимизирую советник написанный на MQL4, на датах с 2008 по 2012 год. У меня есть критерий в программе, после которого результат прогона считается провальным. В одном случае это условие наступает в 2008 году, но советник дальше работает до 2012 года, что занимает дополнительное время при оптимизации. Как досрочно завершить выполнение прогона теста? Свойства советника, параметры оптимизации не решают задачу, так как критерий завершения частный и не приведен в списке. Какую команду нужно вызывать в программе, чтобы принудительно досрочно завершить прогон теста?

Спасибо.

 

в функцию start добавтье:

bool fail=false;

int start()
{
if(fail) return(0);

……
……

// в том месте, где поняли, что все плохо:
if(все плохо) fail=true;


}
 
alsu:

в функцию start добавтье:


да, согласен, это ускорит исполнение программы, но тики все равно будут генерироваться. Есть ли другой способ типа deinit() и все?
 
adilbek:

да, согласен, это ускорит исполнение программы, но тики все равно будут генерироваться. Есть ли другой способ типа deinit() и все?

deinit это просто функция, ее вызов к завершению работы не приведет.

Можно попытаться программно нажать кнопку Стоп, но тогда накроется вся оптимизация, а это вам не нужно, я так понимаю.

Так ведь пустой прогон по тикам даже за 5 лет - это всего несколько секунд, много ли теряем?

 
alsu:

deinit это просто функция, ее вызов к завершению работы не приведет.

Можно попытаться программно нажать кнопку Стоп, но тогда накроется вся оптимизация, а это вам не нужно, я так понимаю.

Так ведь пустой прогон по тикам даже за 5 лет - это всего несколько секунд, много ли теряем?



да, оптимизацию завершать всю не нужно, только текущий прогон. У меня в коде до return( 0 ) перед проверкой статистику собирает, пробегается по всем открытым сделкам и пишет логи. Убрал это все за return и прогон быстрее стал исполняться в 5 раз. Спасибо за совет.
 

Долго не мог додумать и найти для MT5 как остановить оптимизацию при не верных параметрах. Решил написать, мож кому пригодится.


int OnInit(){

 if(условие не верно) return(INIT_FAILED);

}
 
добрый день. все просто.
функция описана в справке, заглядывайте в нее почаще и возможно будет меньше таких вопросов. в тестере работает и заканчивает текущий прогон.

с уважением.