По времени

 
Ребят помогите.Кто может написать  кусок кода для мт4.Для того что  бы советник можно было тестировать например не за весь день, а с 12 до 15 часов.Я поискал в базе не нашел.Кто сможет написать спасибо...
 
bcs2424:
Ребят помогите.Кто может написать  кусок кода для мт4.Для того что  бы советник можно было тестировать например не за весь день, а с 12 до 15 часов.Я поискал в базе не нашел.Кто сможет написать спасибо...
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   string TCurrent=""; TCurrent=TimeToStr(TimeCurrent(),TIME_MINUTES);
   if(TCurrent>="12:00" && TCurrent<="15:00")
     {
      // исполняемый код 
     }
  }
 

Спасибо!

 
Lilita Bogachkova:

а давно к строкам можно >= и  <= применять?

 
Andrey Barinov:

а давно к строкам можно >= и  <= применять?

Вопрос в сервисдеск, но года два использую.
 
Andrey Barinov:

а давно к строкам можно >= и  <= применять?

Ага, дама погорячилась.

Вот проверенный рабочий код из моего советника

extern string    StartTimeOpen   = "12:00";
extern string    StopTimeOpen    = "15:00";

// функция проверяет вхождение серверного времени в заданный диапазон
// если вхождение есть, возвращает true, иначе false 
bool CheckForWorkTime(string startT, string stopT)
{
    if (TimeCurrent() > StringToTime(startT) && TimeCurrent() < StrToTime(stopT))
        return(true);
    return (false);
}

void OnTick()
{
    if(!CheckForWorkTime(StartTimeOpen, StopTimeOpen))
        return;
}

 

***

 
Alexey Volchanskiy:

Ага, дама погорячилась.

Вот проверенный рабочий код из моего советника

 

***

В чем погорячилась? Код который представила рабочий.
 
Сногсшибательно!
 
Alexey Volchanskiy:

Ага, дама погорячилась.

Вот проверенный рабочий код из моего советника

 

***


Как Ваш код обрабатывает ситуацию 

extern string    StartTimeOpen   = "23:00";
extern string    StopTimeOpen    = "03:00";

 ?

 
Alexey Volchanskiy:

Вы под отладчиком пройдитесь пожалуйста.

** 

TimeToStr

TIME_MINUTES получает результат в форме " hh:mm " ,

 
Andrey Barinov:

Как Ваш код обрабатывает ситуацию 

 ?

А что смущает?

extern string    StartTimeOpen   = "02:00";
extern string    StopTimeOpen    = "23:00";
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   int n = 0; 
   string TCurrent=""; TCurrent = TimeToStr(D'2016.10.01 12:00:00',TIME_MINUTES); 
   if(TCurrent>="12" && TCurrent<="15") 
   {
      n++; // заходит, но так сравнивать время некорректно
   }
   bool result = CheckForWorkTime(StartTimeOpen, StopTimeOpen);
}

// функция проверяет вхождение серверного времени в заданный диапазон
// если есть вхождение есть, возвращает true, иначе false 
bool CheckForWorkTime(string startT, string stopT)
{
    string TCurrent = TimeToStr(D'2016.10.01 12:00:00'); // так как сегодня суббота, эмулируем время сервера TimeCurrent()
    datetime dt1 = StringToTime(startT);
    datetime dt2 = StringToTime(stopT);
    //if (TimeCurrent() > StringToTime(startT) && TimeCurrent() < StrToTime(stopT))
    if (TCurrent > StringToTime(startT) && TCurrent < StrToTime(stopT))
        return(true);
    return (false);
}

 

**

Причина обращения: