Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1395

 
Artyom Trishkin #:

Хочешь сказать, что он срабатывает разово только при запуске терминала? Нет. А как тогда?

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

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
 {
  long currChart = ChartNext(0);
  while(currChart >= 0)
   {
    ObjectsDeleteAll(currChart, "autotrade");
    currChart = ChartNext(currChart);
   }
 }
//+------------------------------------------------------------------+

И осмелюсь сказать, что работает успешно. Мне лениво искать где я об этом уже писал. Проще повторить.

Такой сервис

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
 {
  Print("Запуск произведён успешно");
 }
//+------------------------------------------------------------------+

Печатает однократно при запуске терминала. Так-что проверить не составляет труда.

 
Alexey Viktorov #:

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

И осмелюсь сказать, что работает успешно. Мне лениво искать где я об этом уже писал. Проще повторить.

Такой сервис

Печатает однократно при запуске терминала. Так-что проверить не составляет труда.

Хочешь сказать, что сервис отрабатывает ТОЛЬКО один раз при запуске терминала? Как и скрипт? Только запуск скрипта производится вручную или программно, а сервис - при загрузке терминала. Так что ли? И, хочешь сказать, что далее сервис больше не работает? Т.е., срабатывает только ОДИН раз?

 
JRandomTrader #:

Например, так.

Макросы глобальны.

можете пояснить где их надо прописывать?

в классе или советнике

 
Artyom Trishkin #:

Хочешь сказать, что сервис отрабатывает ТОЛЬКО один раз при запуске терминала? Как и скрипт? Только запуск скрипта производится вручную или программно, а сервис - при загрузке терминала. Так что ли? И, хочешь сказать, что далее сервис больше не работает? Т.е., срабатывает только ОДИН раз?

Артём, ну зачем мне чего-то тебе доказывать? Напиши одну строку и проверь.

 
Sergey Li #:

можете пояснить где их надо прописывать?

в классе или советнике

Они должны быть в каждом классе свои, или общие?

В разных советниках на основе этих классов их значения разные или одинаковые?

 
Alexey Viktorov #:

Артём, ну зачем мне чего-то тебе доказывать? Напиши одну строку и проверь.

Я просто спрашиваю потому, что сам не знаю. А проверять нет возможности.

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

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

Может таймер работает?

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

 
Artyom Trishkin #:

Я просто спрашиваю потому, что сам не знаю. А проверять нет возможности.

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

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

Может таймер работает?

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

Из документации:
Сервисы имеют единственный обработчик OnStart(), в котором вы можете организовать бесконечный цикл получения и обработки данных, например - создание и обновление пользовательских символов при помощи сетевых функций.
 
Sergey Gridnev #:
Из документации:
Сервисы имеют единственный обработчик OnStart(), в котором вы можете организовать бесконечный цикл получения и обработки данных, например - создание и обновление пользовательских символов при помощи сетевых функций.

Ясно. Спасибо. Что-то я обленился наверное раз не смог до документации добраться :)

Да, бесконечный цикл... Ну ладно...

 
Artyom Trishkin #:

Я просто спрашиваю потому, что сам не знаю. А проверять нет возможности.

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

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

Может таймер работает?

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

Цитата из документации

OnStart() является единственной функцией для обработки событий в скриптах и сервисах, другие события в эти программы не посылаются.

 
Artyom Trishkin #:

Хочешь сказать, что он срабатывает разово только при запуске терминала? Нет. А как тогда?

да OnStart() там только и пишешь что хочешь в цикле.