временной интервал работы советника

 

Пытаюсь понять как сделать чтобы в собетник анализировал график не по каждому тику.

Перебрал кучу советников остановился на этом SMC Autotrader Momentum2.mq4 т.к. более или менее понял его но не могу понять как сделать к примеру чтобы он анализировал график через каждые 40 мин

т.е. принцип - открывает сделку запускается что-то типа таймера 40мин , проходит 40 мин снова анализирует график для заурытия или открытия сделки. Я конечно не уверен что это вообще возможно если возможно то подскажите как или дайте ссылочку где можно посмотреть про такое)

Файлы:
 
extern int interval =40;
int PrevTime=0;
 
int start()
{ 
  if (TimeCurent()-PrevTime>interval*60) 
  {
     PrevTime=TimeCurent();
 
     .
     .
     .
  }
 
Всё просто. Сохраняешь время последнего анализа в переменной. Потом считаешь разницу между текущим временем и переменной. Если больше 40 мин.,
то анализируешь и опять сохраняешь время анализа в переменной.
Сделать можно так:

datetime last_analysis=0;

int start()
{
if(TimeCurrent()-last_analysis>=40*60)
{
last_analysis=TimeCurrent();
//тут проводим анализ рынка
}
//.............
}

Для большей надежности лучше сохранять last_analysis в глобальных переменных (https://docs.mql4.com/ru/globals).
 

ктонибудь может этот код туда впаять в советник а то я пытался ничего не получилось, я только не понял до конца я говорил про то что если например я советника запускаю на реальном счету то он будет через каждые 40 мин выполнять операции которые в нём прописаны ну так же как если он по тикам анализирует сейчас: короче объясню по подробнее) я его запускаю он открывает сделку в зависимости от 26 средней т.е. если 26 средняя смотрит вверх то он покупает и держит сделку до тех пор пока либо она не зкроется (сл или тп) либо 26 средняя не поменяет направление . объясняю с чем я столкнулся: советник анализирует каждый тик и если к примеру флет то средняя может колебаться то ввех то вниз и открываются беспорядочно сделки. Вот если к нему припаять чтобы он только через каждые 40мин анализаровал график открывая сделку если предидущая закрылась то иакой проблемы бы небыло и советник показывл бы +

Файлы:
 
mikerman:

ктонибудь может этот код туда впаять в советник а то я пытался ничего не получилось, я только не понял до конца я говорил про то что если например я советника запускаю на реальном счету то он будет через каждые 40 мин выполнять операции которые в нём прописаны ну так же как если он по тикам анализирует сейчас: короче объясню по подробнее) я его запускаю он открывает сделку в зависимости от 26 средней т.е. если 26 средняя смотрит вверх то он покупает и держит сделку до тех пор пока либо она не зкроется (сл или тп) либо 26 средняя не поменяет направление . объясняю с чем я столкнулся: советник анализирует каждый тик и если к примеру флет то средняя может колебаться то ввех то вниз и открываются беспорядочно сделки. Вот если к нему припаять чтобы он только через каждые 40мин анализаровал график открывая сделку если предидущая закрылась то иакой проблемы бы небыло и советник показывл бы +


или просто чтобы он открывал новую сделку только после закрытия предидущей
 
Наверное так -если по времени

Обрати внимание -это заглушка - не работает далее до конца НИКОГДА ;)
if(0 == 1) // This is used to turn the trailing stop on & off
Файлы:
 
total = OrdersTotal();
//----
 if(total > 0)
  {  
   for(cnt = 0; cnt < total; cnt++)
   {
    if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue; //---- искать только в "активные"
    if(Symbol()!= OrderSymbol()) continue; //---- только своя валюта
    if((OrderType() == OP_BUY || OrderType() == OP_SELL)) // посчитаем текущие результаты
       return(0); // выйти если есть активный открытый
   }
 }

Этот кусок для выхода если есть открытые ордера по данной валютной паре

если хочешь использовать только его -то откомментируй
if ((PrevTime==0)&&(Time[0]-PrevTime)<interval*60) return(0); // by time
а так удачи!
Файлы:
Причина обращения: