Как программно остановить советника

 
Уважаемые программисты подскажите пожалуйста как в коде предусмотреть остановку советника на N часов? Спасибо.
 
ostamail:
Уважаемые программисты подскажите пожалуйста как в коде предусмотреть остановку советника на N часов? Спасибо.


Sleep

 
ostamail:
Уважаемые программисты подскажите пожалуйста как в коде предусмотреть остановку советника на N часов? Спасибо.

Я вам уже давал ответ, хватить флудить по форуму

 
Vitaly Muzichenko:

Я вам уже давал ответ, хватить флудить по форуму

мне там не понятно Sleep то что нужно

 
ostamail:

мне там не понятно Sleep то что нужно

Sleep не будет работать правильно

 
Vitaly Muzichenko:

Sleep не будет работать правильно


если вопрос стоит как "Как остановить на N часов"

то лучше так:


Запоминаем последнее время TimeCurrent()

Надо остановить на N часов 

//перед OnTick
int TimeCurrentLast=0;


//в OnTick в начале:
if(TimeCurrent()<TimeCurrentLast+N*60*60)
{
return;
}

// выполняем остальной код

// Там где надо остановить советника
TimeCurrentLast=TimeCurrent();
 
Если остановить навсегда, то ExpertRemove()
 
Vladislav Andruschenko:


если вопрос стоит как "Как остановить на N часов"

то лучше так:


Запоминаем последнее время TimeCurrent()

Надо остановить на N часов 

 сможете сделать прямо в коде?



if((Lot>Max2) && (x<5) && (Bid<=(x+0.005)) )  {stoploss=0; takeprofit=Ask+DeltaPr1;BuyTP=Green;};

         if((Lot>Max2) && (y<5) &&  (Bid<=(y-0.005))) {stoploss=0; takeprofit=Ask+DeltaPr1;BuyTP=Green;};

                               

                    if (Lot>Max1)  ОСТАНОВКА ЗДЕСЬ на n часов при выполнении условия 

                            

                                  OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,takeprofit,0,0,0,BuyTP);

                                BuyTP=Blue;

                                  

                                  

 
Vladislav Andruschenko:


если вопрос стоит как "Как остановить на N часов"

то лучше так:


Запоминаем последнее время TimeCurrent()

Надо остановить на N часов 

не понятно

 
ostamail:

не понятно

Тут помогут

 
//+------------------------------------------------------------------+
//|                                          StopTradingByNhours.mq4 |
//|                                                 Elvira Akhsanova |
//|                           https://www.mql5.com/ru/users/elyabest |
//+------------------------------------------------------------------+
#property copyright "Elvira Akhsanova"
#property link      "https://www.mql5.com/ru/users/elyabest"
#property version   "1.00"
#property strict

input int   StopForNunitsOfTime=1;
input bool  PrintInfo=true;

int unitoftime=3600;//3600 units for 1 hour
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(){return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime resumetime=TimeLocal()+StopForNunitsOfTime*unitoftime;
   static bool stop;
   static int counter=0;
   if(resumetime>TimeLocal()){stop=true;} else stop=false;
   if(!stop)
     {//instructions when time limit is removed: 
      counter++;
      if(counter==5)resumetime=TimeLocal()+StopForNunitsOfTime*unitoftime;//when counter reaches 5 (on 5th tick after time limit has been removed, it will lock itself for N hours again)
      if(PrintInfo)Print("Expert resumed, counter =",counter," local time: ",TimeLocal());
     }
   else
     {//Expert Advisor instructions during time limited period:
      counter=0;
      if(PrintInfo)Print("Expert stopped, local time: ",TimeLocal()," Expert Advisor will resume on ",resumetime);
     }
  }
Для иллюстрации работы кода встроен счетчик, который срабатывает на каждом тике и, достигнув отметки 5, блокирует работу советника на StopForNunitsOfTime * unitoftime где unitoftime равен 3600 для часа и StopForNunitsOfTime количество часов.