Скачать MetaTrader 5

По времени

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

Спасибо!

Andrey Barinov
39238
Andrey Barinov 2016.10.01 10:02  
Lilita Bogachkova:

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

Lilita Bogachkova
1280
Lilita Bogachkova 2016.10.01 10:14  
Andrey Barinov:

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

Вопрос в сервисдеск, но года два использую.
Alexey Volchanskiy
16622
Alexey Volchanskiy 2016.10.01 10:17  
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;
}

 

***

Lilita Bogachkova
1280
Lilita Bogachkova 2016.10.01 10:22  
Alexey Volchanskiy:

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

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

 

***

В чем погорячилась? Код который представила рабочий.
Dmitry Fedoseev
42872
Dmitry Fedoseev 2016.10.01 10:28  
Сногсшибательно!
Andrey Barinov
39238
Andrey Barinov 2016.10.01 11:02  
Alexey Volchanskiy:

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

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

 

***


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

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

 ?

Lilita Bogachkova
1280
Lilita Bogachkova 2016.10.01 11:10  
Alexey Volchanskiy:

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

** 

TimeToStr

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

Alexey Volchanskiy
16622
Alexey Volchanskiy 2016.10.01 11:21  
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);
}

 

**

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий