Хорошая билиотека.
Alert(ses.CheckTime(StringToTime("2019.01.17 17:15")));
Можно так
Alert(ses.CheckTime(D'2019.01.17 17:15'));
Вот только как оптимизировать советника? Не понимаю, зачем городить огород.
Вот то-то и оно)
Появилась идея. Если надо оптимизировать, сделать в окне свойств переменные int, в ините собрать их в строку и отправить в класс. Дело за малым.
Дело в том, что весь мир делится на две категории людей, тех кто любит пенку в молоке и тех, кто ее ненавидит предпочитает строковые переменные и тех кто предпочитает возможности оптимизации, примирение между этими категориями невозможно.
Появилась идея. Если надо оптимизировать, сделать в окне свойств переменные int, в ините собрать их в строку и отправить в класс. Дело за малым.
Дело в том, что весь мир делится на две категории людей, тех кто любит пенку в молоке и тех, кто ее ненавидит предпочитает строковые переменные и тех кто предпочитает возможности оптимизации, примирение между этими категориями невозможно.
Да я все понимаю, даже приветствую. Чем больше кода в кодобазе, тем лучше. Но стоило ли тратить силы и время на такую задачу. Библиотеки, классы... Не знаю...
Я пользуюсь всего одной своей функцией. Тут два варианта:
input bool TimeAllow = false; // Ограничивать работу советника по времени input int OpenHour = 22; // Час начала торговли input int OpenMinute = 0; // Минута начала торговли input int CloseHour = 7; // Час завершения торговли input int CloseMinute = 0; // Минута завершения торговли // вызов только с часами if(TimeAllow && !IsTimeAllow(OpenHour,CloseHour)) return; // вызов с часами и минутами if(TimeAllow && !IsTimeAllow(OpenHour,OpenMinute,CloseHour,CloseMinute)) return; //+——————————————————————————————————————————————————————————————————+ //| Возвращает true, если текущее серверное время больше времени | //| начала торговли советника и меньше времени завершения торговли | //+——————————————————————————————————————————————————————————————————+ bool IsTimeAllow(int openHour,int openMinute,int closeHour,int closeMinute) { MqlDateTime dt; TimeToStruct(TimeCurrent(),dt); int openTimeCode=StrToInteger("1"+IntegerToString(openHour,2,'0')+IntegerToString(openMinute,2,'0')); int closeTimeCode=StrToInteger("1"+IntegerToString(closeHour,2,'0')+IntegerToString(closeMinute,2,'0')); int currentTimeCode=StrToInteger("1"+IntegerToString(dt.hour,2,'0')+IntegerToString(dt.min,2,'0')); return(currentTimeCode>openTimeCode && currentTimeCode<=closeTimeCode); } //+——————————————————————————————————————————————————————————————————+ //| Возвращает true, если текущее серверное время больше времени | //| начала торговли советника и меньше времени завершения торговли | //+——————————————————————————————————————————————————————————————————+ bool IsTimeAllow(int openHour,int closeHour) { datetime dtHour=TimeHour(TimeCurrent()); return((openHour < closeHour && dtHour >= openHour && dtHour < closeHour) || (openHour>closeHour && ((dtHour>=openHour && openHour<=23) || (dtHour<closeHour && closeHour>=0)))); }
Да я все понимаю, даже приветствую. Чем больше кода в кодобазе, тем лучше. Но стоило ли тратить силы и время на такую задачу. Библиотеки, классы... Не знаю...
Я пользуюсь всего одной своей функцией. Тут два варианта:
Если внимательно рассмотреть, то в этом классе все еще проще делается. Основной код - подготовка разных данных для предоставления вариантов пользователю.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
CTimeSession:
Универсальный класс для проверки разрешенного для торговли времени
Автор: Dmitry Fedoseev