Ограничение работы Индикаторов по времени???!?!?!?!?

Forex Trader
114538
Мне нужно, чтобы скомпилированные ИНДИКАТОРЫ (EX4) переставали работать после истечения срока, ну типа как Демо версия. Или может можно сделать привязку к конфигурации компа или привязку к Логину/ Номеру счета ???!! Как можно это сделать?? Фрагмент кода может кто-нибудь показать??! Пожалуйста!
Forex Trader
114538
Примерно так, третью защиту по номеру счета ищи на форуме.
/*Первая защита
   if (!IsTesting()) 
      {
      Comment("Версия только для бэктеста!!!");
      return;
      }
*/
//   Первая защита


/*Вторая защита
   if ( (TimeMonth(CurTime())>4)  &&  (TimeYear(CurTime())>=2006)   ) 
      {
      Print("Время советника истекло");
      return(0);
      }
*/
//Вотрая защита
Forex Trader
114538
Для бектеста защита не подходит, а по времени - то, что нужно! Спасибо! Кстати так и знал, что ответите именно Вы, Rosh! Проблема только в том, что я с Mql совсем не дружу. Можете на примере индикатора показать, что где прописывать? Пожалуста, очень нужно!
//+------------------------------------------------------------------+
//|                                                   Aroon Horn.mq4         |
//|                                                                                   |
//|                                                                                   |
//+------------------------------------------------------------------+
#property copyright 
#property link      

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

extern int Aroon_Period=10;

double Buffer1[];
double Buffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(0,Buffer1);
   SetIndexLabel(0,"Aroon Up");
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,"Aroon Down");

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//---- TODO: add your code here
   double HighestBar,LowestBar,aroonUp,aroonDn;
   for(int shift=Bars-Aroon_Period;shift>=0;shift--){
      HighestBar = Highest(NULL,0,MODE_HIGH,Aroon_Period-1,shift);
      LowestBar = Lowest(NULL,0,MODE_LOW,Aroon_Period-1,shift);
      
      aroonUp = 100 - ((HighestBar - shift) / Aroon_Period) * 100;
      aroonDn = 100 - ((LowestBar - shift) / Aroon_Period) * 100;  
      
      if(aroonUp == 0) { aroonUp = 0.0000001; }
      if(aroonDn == 0) { aroonDn = 0.0000001; }

      Buffer1[shift]=aroonUp;
      Buffer2[shift]=aroonDn;
      
      }
      
//----
   return(0);
  }
//+------------------------------------------------------------------+

Forex Trader
114538
//+------------------------------------------------------------------+
//|                                                   Aroon Horn.mq4         |
//|                                                                                   |
//|                                                                                   |
//+------------------------------------------------------------------+
#property copyright 
#property link      

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

extern int Aroon_Period=10;

double Buffer1[];
double Buffer2[];
int CorrectNumber=*****;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(0,Buffer1);
   SetIndexLabel(0,"Aroon Up");
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,"Aroon Down");

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
/*Первая защита
   if (IsTesting()) 
      {
      Comment("Бэктест не работает!!!");
      return;
      }
*/
//   Первая защита


/*Вторая защита
   if ( (TimeMonth(CurTime())>4)  &&  (TimeYear(CurTime())>=2006)   ) 
      {
      Print("Время советника истекло");
      return(0);
      }
*/
//Вторая защита
//Третья защита
   if(AccountNumber()!=CorrectNumber)  return(0);
//Третья защита
//---- TODO: add your code here
   double HighestBar,LowestBar,aroonUp,aroonDn;
   for(int shift=Bars-Aroon_Period;shift>=0;shift--){
      HighestBar = Highest(NULL,0,MODE_HIGH,Aroon_Period-1,shift);
      LowestBar = Lowest(NULL,0,MODE_LOW,Aroon_Period-1,shift);
      
      aroonUp = 100 - ((HighestBar - shift) / Aroon_Period) * 100;
      aroonDn = 100 - ((LowestBar - shift) / Aroon_Period) * 100;  
      
      if(aroonUp == 0) { aroonUp = 0.0000001; }
      if(aroonDn == 0) { aroonDn = 0.0000001; }

      Buffer1[shift]=aroonUp;
      Buffer2[shift]=aroonDn;
      
      }
      
//----
   return(0);
  }
//+------------------------------------------------------------------+

Forex Trader
114538
Огромное Спасибо!!! Все работает!! :) Еще вопрос! а можно залочить индикатор/ эксперт под конкретную валютную пару или тикер??
Denis Chaplinskiy
153
Forex Trader:
Примерно так, третью защиту по номеру счета ищи на форуме.
/*Вторая защита
   if ( (TimeMonth(CurTime())>4)  &&  (TimeYear(CurTime())>=2006)   ) 
      {
      Print("Время советника истекло");
      return(0);
      }
*/
//Вотрая защита
Добрый день!
Как совместить этот код 
 if(AccountNumber()!=000000 )
     {
       Alert ("Приобретите лицензию!!!");
       Sleep(500);
       Comment(" Индикатор активен! ");
       return(0);
     }
и ваш код. задача нужно одновременно привязка к счету и чтобы индикатор перестал работать в определенную дату и время. как это сделать правильно? нужно четкое время дата..и чтобы индикатор перестал работать.спасибо
Sergei Vladimirov
8952
if(AccountNumber() != ... || TimeCurrent() >= D'01.01.2016')
{
   static bool bAlerted = false;

   if(bAlerted == false)
   {
      Alert("Уведомление об окончании триала");
      bAlerted = true;
   }

   return(0)
}
Вставить в самое начало OnCalculate().
Kos Mos
60
Kos Mos  
Sergei Vladimirov:
Вставить в самое начало OnCalculate().

Привет! А можешь в готовом коде показать куда ты эту строчку поставишь?! Пожалуйста!

FXwin
811
FXwin  
bool alertsOn = true;

int start() {
//---------------------------------------------------------------------------------------------------------------+
//  false индикатор работает только на демо счете, если true работает на реальном счете
//  if(IsDemo() == false) { Comment("Only DEMO-account... forex-time@mail.ru");
//  if(alertsOn) Alert("Only DEMO-account... forex-time@mail.ru"); alertsOn=false; return(0);
//   }
//  привязка индикатора к конкретному торговому счету
  if(AccountNumber() != 555777) { Comment("Invalid account... forex-time@mail.ru");
  if(alertsOn) Alert("Invalid account... forex-time@mail.ru"); alertsOn=false; return(0);
   }
//  ограничение работы индикатора по времени (год/месяц/день/время)
  if(TimeCurrent() > StrToTime("2018.12.31 22:00")) { Comment("Time is over, trade STOP... forex-time@mail.ru");
  if(alertsOn) Alert("Time is over, trade STOP... forex-time@mail.ru"); alertsOn=false; return(0);
   }
//---------------------------------------------------------------------------------------------------------------+  


Kos Mos
60
Kos Mos  
FXwin:


Огромное спасибо! Более чем подробно!

Yaroslav Varankin
27400
Здравствуйте а как быть с мт5 как там сделать ограничение работы по времени?