Скачать MetaTrader 5

Временной интервал торговли советника

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь написать торгового робота? Загляни в Справочник MQL5!
Николай
21
Николай 2011.04.06 06:41 

Всем доброго времени суток!

Нужно задать интервал времени в который советник будет торговать. Подскажите как это можно сделать?

Victor Nikolaev
Модератор
14523
Victor Nikolaev 2011.04.06 07:01  
Nokolay80:

Всем доброго времени суток!

Нужно задать интервал времени в который советник будет торговать. Подскажите как это можно сделать?


Вариантов множество.

1. От часа утра до часа вечера

2. От часа вечера до часа утра.

3. Вариант 1 и 2 в минутах

4. Прочие варианты

При необходимости можно функции добавить

Левитин Сергей В.
5160
Левитин Сергей В. 2011.04.06 07:40  

Вот набрасал, проверьте

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);
}
Михаил
1025
Михаил 2011.04.06 08:33  

у "Кимива" есть функция

//+------------------------------------------------------------------+
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    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);
} 
Николай
21
Николай 2011.04.06 09:03  
А можно подробнее описать куда это вставлять и в каком виде? Как не пробовал не получается, не силен в mql4.
Виктор
Модератор
6559
Виктор 2011.04.06 10:53  
Перенесено.

Nokolay80:
Нужно установить очень простой Time filter чтобы советник торговал с ... до ... часов. И ткнуть носом куда и что писать =). Заранее благодарен.

vah:
if (Hour()>20 || Hour<2) return(0);//совнетник будет работать с 2 до 20 часов, вставте эту строку после start() {
Nokolay80:
Выдает ошибку '<' Left parenthesis expected . Попробовал по логике дописать скобки if (Hour()>20 || Hour()<2) return(0);. Вообще перестал ордера открывать.

vah:
да вы верно исправили, и я ошибся при таком условии с 2 до 21, но условие тоько что проверил у меня работает
vah:
если хотите выложите код вам вставят условие

goldtrader:

Чтобы работал с 2 до 20 часов надо так:

if (Hour()>=2 && Hour()<20) return(0);


vah:
Да.я ошибся опять=)
Виктор
Модератор
6559
Виктор 2011.04.06 10:56  
Николай, не плодите темы, дублирование запрещено.
Виктор
Модератор
6559
Виктор 2011.04.06 12:04  
Nokolay80:
А можно подробнее описать куда это вставлять и в каком виде? Как не пробовал не получается, не силен в mql4.
Саму функцию Кима надо разместить в самом конце кода, за пределами функции start().
При вызове она возвращает true, если согласно указанным в ее вызове параметрам торговля разрешена.
В первой строке специальной функции start() советника можно поместить следующую строку для разрешения торговли, например, между 22-30 и 23-35 серверного времени:
if(!isTradeTimeInt(22, 30, 23, 35)) return;
Николай
21
Николай 2011.04.06 17:22  

Теперь все работает. Всем спасибо за помощь.

sergiu
5
sergiu 2011.08.11 16:46  
а как добавить чтобы сова не торговала в friday
Andrei Bucur
158
Andrei Bucur 2011.11.25 09:21  

Этот код не срабатывает при тестировании советника, а в этом и заключается смысл необходимости временного интервала, потому что в реальном времени можно и самому включать и выключать советник. Очень важно чтоб такая функция работала при оптимизации советника.

Если у кого то это получилось сделать, поделитесь пожалуйста, очень надо!

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий