Всем привет. Столкнулся с простой (наверное, лузерской) проблемой.
Имеем внешние параметры:
В OnTick():
Функция time выглядит так:
Проблема в том, что эта функция в тестере стратегий всегда возвращает false. Иногда, на долю секунды Коммент печатает true.
Ставлю на демо-график - вроде все нормально, изменяю настройки времени, когда надо true, когда условия не выполняются, то false.
Как сделать, чтобы в тестере стратегий это тоже заработало?
Благодарствую заранее
А Вы в отладке сделайте остановку на строке
TimeCurrent(mqldt); bool l = time(mqldt.hour,mqldt.min); Comment(l);
и добавьте наблюдение для mqldt.sec. Посмотрите с каким шагом идут секунды.
А после этого запустите отладку в режиме "Каждый тик на основе реальных тиков" ...
попробуйте мою
string CloseHours=DoubleToString(CloseHour,0); string CloseMinutes=DoubleToString(CloseMinute,0); string OpenHours=DoubleToString(OpenHour,0); string OpenMinutes=DoubleToString(OpenMinute,0); // торговать. Если удовлетворяет условиям if(StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+CloseHours+":"+CloseMinutes)>StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+OpenHours+":"+OpenMinutes)) { if(TimeCurrent()<StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+CloseHours+":"+CloseMinutes) && TimeCurrent()>=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+OpenHours+":"+OpenMinutes)) // TradingTime=true; } if(StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+CloseHours+":"+CloseMinutes)<StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+OpenHours+":"+OpenMinutes)) { if(TimeCurrent()<StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+CloseHours+":"+CloseMinutes) || TimeCurrent()>=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+OpenHours+":"+OpenMinutes)) // TradingTime=true; }
параметры:
input string periods4="====== Time Trade options========================================"; input int OpenHour=0; input int OpenMinute=0; input int CloseHour=23; input int CloseMinute=59;
попробуйте мою
вызов:
параметры:
Вопрос был (и это отражено в названии темы) по MQL5.
Вопрос был (и это отражено в названии темы) по MQL5.
сути не меняет, просто в мт5 у меня более продвинутая функция -
вытащил функцию работы по времени
А Вы в отладке сделайте остановку на строке
и добавьте наблюдение для mqldt.sec.
А после этого запустите отладку в режиме "Каждый тик на основе реальных тиков" ...
В функцию залазит все правильно. Сама функция не правильная. Надо как-то время засовывать в одну переменную, а не раздельно часы и минуты. С МТ5 я не сильно дружу пока еще...
попробуйте мою
параметры:
Спасибо, сейчас посмотрим
В функцию залазит все правильно. Сама функция не правильная. Надо как-то время засовывать в одну переменную, а не раздельно часы и минуты. С МТ5 я не сильно дружу пока еще...
Приведите время к секундам:
long time_sec=mqldt.hour*3600+mqldt.min*60+mqldt.sec;
и также к секундам приведите временной промежуток (от ... до). Останется просто сравнить время приведённое к секундам.
Приведите время к секундам:
и также к секундам приведите временной промежуток (от ... до). Останется просто сравнить время приведённое к секундам.
Благодарю за ответ. Задача решена. Функция by Vladislav Andruschenko отлично работает)
попробуйте мою
Вредно такой дорогой код писать.
Вредно такой дорогой код писать.
он был написан в далеком 2010 году. потом перенесен в мт5 в 2012
о дорогвизне кода речи не шло.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет. Столкнулся с простой (наверное, лузерской) проблемой.
Имеем внешние параметры:
В OnTick():
Функция time выглядит так:
Проблема в том, что эта функция в тестере стратегий всегда возвращает false. Иногда, на долю секунды Коммент печатает true.
Ставлю на демо-график - вроде все нормально, изменяю настройки времени, когда надо true, когда условия не выполняются, то false.
Как сделать, чтобы в тестере стратегий это тоже заработало?
Благодарствую заранее