Ограниченное время работы индикатора. - страница 2

 

Не получается(

Не понимаю в каком месте и что надо вставлять, вы можете на примере того индикатора вставить код в нужные места?

Насколько я помню, там и это { } играет важную роль, чтобы блоки шли друг за другом и правильно.

 
Andrey Sayapin #:

Не получается(

Не понимаю в каком месте и что надо вставлять, вы можете на примере того индикатора вставить код в нужные места?

Насколько я помню, там и это { } играет важную роль, чтобы блоки шли друг за другом и правильно.

Покажите, как делаете. Для вставки кода используйте кнопку </>.

 

Вот так сделал, но даже если поставить дату вчера, пока окно с индикатором не обновишь или не перезайдёшь, индикатор будет работать(

Файлы:
 
Andrey Sayapin #:

Вот так сделал, но даже если поставить дату вчера, пока окно с индикатором не обновишь или не перезайдёшь, индикатор будет работать(

Ограничение поставьте в OnInit(), в Вашей версии индикатора это функция init, устаревшее название. Тогда индикатор будет производить проверку в момент присоединения к графику. Только нужно вернуть значение INIT_FAILED. В этом случае индикатор выгрузится. 

В функции OnCalculate(), то бишь start, тоже можно оставить проверку. Но сообщение нужно выдавать только один раз (объявить статическую переменную, которая бы за этим следила). И да, в этом случае индикатор не выгрузится, будет продолжать висеть на графике, но за то не будет выполнять свой функционал.

По поводу MessageBox в справке написано:

Примечание

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

При работе в тестере стратегий функция MessageBox() не выполняется.

Поэтому замените ее на Print, Alert или Comment.

 

Охх, я честно вообще не понял что и где надо менять и как(

Вы можете в том индикаторе вставить нужное?

 
Andrey Sayapin #:

Охх, я честно вообще не понял что и где надо менять и как(

Вы можете в том индикаторе вставить нужное?

Вместо функции init вставьте обработчик OnInit():

int OnInit()
{
   if (TimeCurrent() > StringToTime(DATE) && DATE != "")
   {
      Alert("Trial period is over " + DATE);
      return INIT_FAILED;
   }


   SetIndexBuffer(0,MABuffer);
   SetIndexBuffer(1,bl1Buffer);
   SetIndexBuffer(2,bl2Buffer);
   SetIndexBuffer(3,sl2Buffer);
   SetIndexBuffer(4,sl1Buffer);
   SetIndexBuffer(5,zliBuffer);
   
        
   IndicatorShortName("blink ("+Length+")");
   return INIT_SUCCEEDED;
}

А из функции start уберите все ограничения. Так делать нельзя. Там нужно сделать чуть сложнее.

 

А так допустимо?

1 и 101 строчки

Файлы:
Krasilka.mq4  11 kb
 
Andrey Sayapin #:

А так допустимо?

1 и 101 строчки

Можно и так. Но тогда в OnDeinit нужно удалить комментарий:

int deinit() 
{ 
   Comment("");
   return(0); 
}
Причина обращения: