Всем доброго времени суток!
Нужно задать интервал времени в который советник будет торговать. Подскажите как это можно сделать?
Вариантов множество.
1. От часа утра до часа вечера
2. От часа вечера до часа утра.
3. Вариант 1 и 2 в минутах
4. Прочие варианты
При необходимости можно функции добавить
Вот набрасал, проверьте
bool TimeFilter(int starthour, int endhour) { int current_hour = TimeHour(TimeCurrent()); bool trade_hours=false; if (StartHour>=EndHour) { if (current_hour >= starthour || current_hour < endhour) trade_hours=true; } else if (StartHour<EndHour) { if (current_hour >= starthour && current_hour < endhour) trade_hours=true; } return(trade_hours); }
у "Кимива" есть функция
//+------------------------------------------------------------------+ //| Описание : Возвращает флаг разрешения торговли по времени. | //+----------------------------------------------------------------------------+ //| Параметры: | //| 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); }
Нужно установить очень простой Time filter чтобы советник торговал с ... до ... часов. И ткнуть носом куда и что писать =). Заранее благодарен.
if (Hour()>20 || Hour<2) return(0);//совнетник будет работать с 2 до 20 часов, вставте эту строку после start() {
Выдает ошибку '<' Left parenthesis expected . Попробовал по логике дописать скобки if (Hour()>20 || Hour()<2) return(0);. Вообще перестал ордера открывать.
да вы верно исправили, и я ошибся при таком условии с 2 до 21, но условие тоько что проверил у меня работает
если хотите выложите код вам вставят условие
Чтобы работал с 2 до 20 часов надо так:
Да.я ошибся опять=)
А можно подробнее описать куда это вставлять и в каком виде? Как не пробовал не получается, не силен в mql4.
При вызове она возвращает true, если согласно указанным в ее вызове параметрам торговля разрешена.
В первой строке специальной функции start() советника можно поместить следующую строку для разрешения торговли, например, между 22-30 и 23-35 серверного времени:
if(!isTradeTimeInt(22, 30, 23, 35)) return;
Теперь все работает. Всем спасибо за помощь.
Этот код не срабатывает при тестировании советника, а в этом и заключается смысл необходимости временного интервала, потому что в реальном времени можно и самому включать и выключать советник. Очень важно чтоб такая функция работала при оптимизации советника.
Если у кого то это получилось сделать, поделитесь пожалуйста, очень надо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени суток!
Нужно задать интервал времени в который советник будет торговать. Подскажите как это можно сделать?