Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен приватный мониторинг счета? В Сигналах есть такая возможность!
Artyom Kuraev
663
Artyom Kuraev 2015.06.20 20:58 

Здравствуйте!

Не могу найти ответ на элементарный вопрос: можно ли из пользовательской функции завершить работу скрипта?

Например, чтобы каждый раз в коде не писать

   if(OneBarD1<0)
     {
      MessageBox("Бар не нйден! \n Работа скрипта прекращена.");
      return;
     }

создать функцию, к которой можно было бы обратиться при выполнении некоторого условия:

if(OneBarD1<0) fMesReturn("Бар не нйден! \n Работа скрипта прекращена.");

// и за скобками основного кода:
fMesReturn(string Text)
{
  MessageBox(Text);
  ?????????
}

Если такое возможно реализовать, то что должно быть на месте знаков вопросов? И какой тип тогда должен быть у этой функции?

Vitalie Postolache
11069
Vitalie Postolache 2015.06.20 21:14  
Скрипт и так сам завершает работу и выгружается, если его не зацикливать.
Artyom Kuraev
663
Artyom Kuraev 2015.06.20 21:24  
evillive:
Скрипт и так сам завершает работу и выгружается, если его не зацикливать.
Скрипт завершает работу после выполнения всего кода, а это проверка исходных данных скрипта, чтобы при некорректных входящих данных либо в случае, например, если нужный бар не найден, выйти из скрипта "досрочно".
Vitalie Postolache
11069
Vitalie Postolache 2015.06.20 22:26  

Тогда можно проверять корректность входных данных в OnInit() и возвращать INIT_PARAMETERS_INCORRECT или INIT_FAILED

Artyom Kuraev
663
Artyom Kuraev 2015.06.21 18:33  
evillive:

Тогда можно проверять корректность входных данных в OnInit() и возвращать INIT_PARAMETERS_INCORRECT или INIT_FAILED


Благодарю за подсказки, но о какой функции OnInit в скрипте идет речь?

Скрипт — программа, предназначенная для одноразового выполнения каких-либо действий. В отличие от экспертов, скрипты не обрабатывают никаких событий, кроме события запуска (для этого в скрипте должна быть функция-обработчик OnStart). Скрипты хранятся в директории каталог_терминала\MQL4\Scripts

Ihor Herasko
8448
Ihor Herasko 2015.06.21 20:05  
delfik71091:

Благодарю за подсказки, но о какой функции OnInit в скрипте идет речь?

Скрипт— программа, предназначенная для одноразового выполнения каких-либодействий. В отличие от экспертов, скрипты не обрабатывают никакихсобытий, кроме события запуска (для этого в скрипте должна бытьфункция-обработчик OnStart). Скрипты хранятся в директории каталог_терминала\MQL4\Scripts


У скрипта, также как и у советника, можно использовать функции OnInit и OnDeinit. Порядок их вызова аналогичен порядку вызова в советнике.Это легко проверяется таким примером (прошу прощения за оформление, но код снова не вставляется, как нужно):

int OnInit()
{
   Print(__FUNCTION__);
      
   return(INIT_SUCCEEDED);
}

void OnStart()
{
   Print(__FUNCTION__);
}

void OnDeinit(const int reason)
{
   Print(__FUNCTION__);   
}
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий