Подскажите как внедрить в советник время по которому он будет торговать.
допустим с 22 до 16 итд
Поздравляем вас - вы задали этот вопрос в 100500 раз и получаете приз зрительских симпатий!
extern string StartTimeOpen = "08:00"; extern string StopTimeOpen = "21:30"; // функция проверяет вхождение серверного времени в заданный диапазон // если есть вхождение есть, возвращает true, иначе false bool CheckForWorkTime(string tStart, string tStop) { if(TimeCurrent() >= StringToTime(tStart) && TimeCurrent() <= StrToTime(tStop)) return(true); return (false); }
**
Поздравляем вас - вы задали этот вопрос в 100500 раз и получаете приз зрительских симпатий!
**
cCпасибо)
Поздравляем вас - вы задали этот вопрос в 100500 раз и получаете приз зрительских симпатий!
**
Алексей! Смотрите, вы выложили код, который работает внутри одних суток, а вопрос звучал при переходе работы между сутками (с)" с 22 до 16 "
Алексей! Смотрите, вы выложили код, который работает внутри одних суток, а вопрос звучал при переходе работы между сутками (с)" с 22 до 16 "
![Только "Полезные функции от KimIV". (Yuriy Tokman) - MQL4 форум - Страница 9 Только "Полезные функции от KimIV". (Yuriy Tokman) - MQL4 форум - Страница 9](https://c.mql5.com/36/9/tolko-poleznie-funkcii-ot-kimiv__2.png)
- www.mql5.com
bool CСyTrade::WorkTime() { datetime dt=TimeCurrent(); datetime Time_Start= StrToTime(pTimeBeg); datetime Time_Stop = StrToTime(pTimeEnd); bool codreturn=false; if(((( dt>=Time_Start && dt<=StrToTime("23:59:59")) || (dt>=StrToTime("00:00:00") && dt<Time_Stop)) && Time_Start>Time_Stop) || (((dt>=Time_Start) && (dt<=Time_Stop) && Time_Start<Time_Stop))) { codreturn=true; } return(codreturn); }
но так будет более красивей
Функция isTradeTimeInt(). Данная функция возвращает флаг разрешения торговли по времени. Возвращаемое значение - истина или ложь. Функция isTradeTimeInt() по принципу распознавания временного интервала аналогична функции isTradeTimeString(), то есть время начала торговли может быть как больше (временной отрезок внутри суток) времени окончания, так и меньше (временной отрезок в разных сутках). Функция isTradeTimeInt() принимает следующие необязательные параметры: hb - Число, задаёт часы времени начала торговли. Значение по умолчанию - 0. mb - Число, задаёт минуты времени начала торговли. Значение по умолчанию - 0. he - Число, задаёт часы времени окончания торговли. Значение по умолчанию - 0. me - Число, задаёт минуты времени окончания торговли. Значение по умолчанию - 0. //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. 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); }
bool time_check(string start,string end) { int h_start=string_hour(start); int h_end=string_hour(end); int m_start=string_minute(start); int m_end=string_minute(end); int s_start=string_seconds(start); int s_end=string_seconds(end); datetime dtm_start=0,dtm_end=0; if(h_end<h_start && Hour()>=0 && Hour()<h_start) { //если у нас время начала больше (фактически с прошлого дня), то надо это учесть dtm_start=iTime(NULL,PERIOD_D1,1)+h_start*3600+m_start*60+s_start; dtm_end=iTime(NULL,PERIOD_D1,0)+h_end*3600+m_end*60+s_end; } if(h_end<h_start && Hour()>=h_start && Hour()>0) { //если у нас время начала больше (фактически с прошлого дня), то надо это учесть dtm_start=iTime(NULL,PERIOD_D1,0)+h_start*3600+m_start*60+s_start; dtm_end=iTime(NULL,PERIOD_D1,0)+h_end*3600+m_end*60+24*3600+s_end; } if(h_end>=h_start) { //если у нас время начала больше (фактически с прошлого дня), то надо это учесть dtm_start=iTime(NULL,PERIOD_D1,0)+h_start*3600+m_start*60+s_start; dtm_end=iTime(NULL,PERIOD_D1,0)+h_end*3600+m_end*60+s_end; } if(TimeCurrent()>=dtm_start && TimeCurrent()<=dtm_end) return (true); return (false); }
start, end задается время в любом формате
ЧЧ-ЧЧ
ЧЧ:ММ-ЧЧ:ММ
ЧЧ:ММ:СС-ЧЧ:ММ:СС
ЧЧ - часы
ММ - минуты
СС - секунды
на комментарии не обращайте внимания)
Вот допустим я хочу сделать выключение (включение) определенного часа в сутках. Что тогда делать?)
На примере хотя бы 5 часов.
extern int 0h = true; extern int 1h = true; extern int 2h = false; extern int 3h = false; extern int 4h = true; extern int 5h = false; //...........и так то 24h
Вот допустим я хочу сделать выключение (включение) определенного часа в сутках. Что тогда делать?)
На примере хотя бы 5 часов.
Для начала, имена переменных не могут называться с цифры )) Можно поставить в начале подчеркивание
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите как внедрить в советник время по которому он будет торговать.
допустим с 22 до 16 итд