Пользовательский индикатор. Функция паузы. Зависает терминал

 

Здравствуйте. При попытке реализовать паузу в пользовательском индикаторе по мотивам статьи:"Спать или не спать?"  терминал жёстко зависает. Этот же код без директивы  #property indicator_chart_window, после компиляции в эксперт работает нормально. Почему?

 

#property indicator_chart_window

int init()
  {
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start()
  {
   bool AlertSignal = false;
   Alert ("Текущая цена" + Bid);   
   int _time_waiting=0;
   AlertSignal = true;
   if (AlertSignal == true)
   _time_waiting = TimeLocal() + 20; // окончание паузы через 20 секунд от текущего локального времени
   while ( TimeLocal() < _time_waiting )
         { 
          Comment("пауза");
         }
  return(0);
 }
 
sHD:

Здравствуйте. При попытке реализовать паузу в пользовательском индикаторе по мотивам статьи:"Спать или не спать?"  терминал жёстко зависает. Этот же код без директивы  #property indicator_chart_window, после компиляции в эксперт работает нормально. Почему?

 

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

Возможно, проблема в функции TimeLocal().

А на экране появляется слово "пауза"?

Вообще, замедлять работу индикатора неправильно. Индикатор должен отрабатывать быстро.

PS.

Я на четвертом форуме бываю редко, чаще на пятом. 

 
В индикаторе? Пауза? А что ви таки хотели?
 
А зачем в индикаторе

Sleep() ?

 
sHD:

Здравствуйте. При попытке реализовать паузу в пользовательском индикаторе по мотивам статьи:"Спать или не спать?"  терминал жёстко зависает. Этот же код без директивы  #property indicator_chart_window, после компиляции в эксперт работает нормально. Почему?

В справке написано, что индикаторы работают в интерфейсном потоке терминала. Вы этим кодом остановили интерфейс терминала.
 
BeerGod:
А зачем в индикаторе

Sleep() ?


Sleep работает только на Demo или Real. В тестере просто пропускается.
 
А подскажите пожалуйста... Пытаюсь написать свой первый индюк (мультик). Все вроде бы хорошо работает, но бывает наступают моменты и он перестает рисовать. Свечи пошли дальше, а индюк остается на месте. Потом вызываю свойства индюка -> OK -> дорисовывает недостающий фрагмент. В чем может быть причина?
 

Если уж очень хочется затормозить индикатор, то лучше для этого использовать функцию SleepEx (библиотека Kernel32). Так хотя бы проц не будет нагружаться бессмысленной работой.

 
Meat:

Если уж очень хочется затормозить индикатор, то лучше для этого использовать функцию SleepEx (библиотека Kernel32). Так по крайней мере проц не будет нагружаться бессмысленной работой.

Один хрен терминал повиснет. Нельзя в индюке, т.е. вообще. Есть только одно исключение, но даю 99% это не оно.
 
TheXpert:
Один хрен терминал повиснет. Нельзя в индюке, т.е. вообще. Есть только одно исключение, но даю 99% это не оно.
Ну он повиснет только на время паузы - это понятное дело. Возможно человеку это зачем-то надо. Эксперты и скрипты ведь продолжают работать в это время
 
Meat:
Ну он повиснет только на время паузы - это понятное дело. Возможно человеку это зачем-то надо. Эксперты и скрипты ведь продолжают работать в это время

Не-а, не продолжают. Очередь сообщений общая и сидит в основном потоке (который висит), поэтому сообщения о приходе нового тика до скриптов и экспертов не дойдут.