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

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

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

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

Victor Nikolaev
Модератор
13940
Victor Nikolaev  
Nokolay80:

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

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


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

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

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

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

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

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

Figar0
5201
Figar0  

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

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);
}
Михаил
1026
Михаил  

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

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

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:
Да.я ошибся опять=)
Виктор
Модератор
6448
Виктор  
Николай, не плодите темы, дублирование запрещено.
Виктор
Модератор
6448
Виктор  
Nokolay80:
А можно подробнее описать куда это вставлять и в каком виде? Как не пробовал не получается, не силен в mql4.
Саму функцию Кима надо разместить в самом конце кода, за пределами функции start().
При вызове она возвращает true, если согласно указанным в ее вызове параметрам торговля разрешена.
В первой строке специальной функции start() советника можно поместить следующую строку для разрешения торговли, например, между 22-30 и 23-35 серверного времени:
if(!isTradeTimeInt(22, 30, 23, 35)) return;
Николай
29
Николай  

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

sergiu
5
sergiu  
а как добавить чтобы сова не торговала в friday
Andrei Bucur
142
Andrei Bucur  

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

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

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