Все уже давно доработано-переработано
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 30.04.2009 | //| Описание : Возвращает флаг разрешения торговли по времени. | //+----------------------------------------------------------------------------+ //| Параметры: | //| hb - часы времени начала торговли | //| mb - минуты времени начала торговли | //| he - часы времени окончания торговли | //| me - минуты времени окончания торговли | //+----------------------------------------------------------------------------+ bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) { datetime db, de; // Время начала и окончания работы int hc; // Часы текущего времени торгового сервера db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb); de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me); hc=TimeHour(TimeCurrent()); if (db>=de) { if (hc>=he) de+=24*60*60; else db-=24*60*60; } if (TimeCurrent()>=db && TimeCurrent()<=de) return(True); else return(False); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 29.04.2009 | //| Описание : Возвращает флаг разрешения торговли по времени. | //+----------------------------------------------------------------------------+ //| Параметры: | //| TimeBegin - время начала торговли (ЧЧ:ММ) | //| TimeEnd - время окончания торговли (ЧЧ:ММ) | //+----------------------------------------------------------------------------+ bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") { datetime dtBegin, dtEnd; // Время начала и окончания работы int hc, he; // Часы текущего времени и окончания работы dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeBegin); dtEnd =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeEnd); hc =TimeHour(TimeCurrent()); he =TimeHour(dtEnd); if (dtBegin>=dtEnd) { if (hc>=he) dtEnd+=24*60*60; else dtBegin-=24*60*60; } if (TimeCurrent()>=dtBegin && TimeCurrent()<=dtEnd) return(True); else return(False); }
Спасибо за помощь, всё получилось.
Только например при временном от 23.30 до 2.30, фелс возвращается при 02.00. То есть минуты часа окончания в таком варианте не работают.
P.S. Я говорю про функцию bool isTradeTimeInt
Альтернативные функции еще какие-то есть? А то при 23.30 до 2.30 минуты окончания не учитываются...
Исправь строчку
if (hc>=he) de+=24*60*60; else db-=24*60*60;
на
if (hc>he) de+=24*60*60; else db-=24*60*60;
Спасибо Roger, теперь всё работает.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, уважаемые форумчане.
Помогите доработать функцию временного канала, на данный имеется код.
Проблема только при временном канале до 00.00, например при 23.30 по 2.30. То есть при (Тек. час, тек. минута, -1, 30, 2, 30)
Заранее спасибо за ответ.