Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1478

 
MakarFX:
Да

Спасибо за помощь. Если я не ошибаюсь, не смотря на то что void OnTick() обрабатывает каждый тик, если применить внутри нее   TimeSeconds(), то  void OnTick() будет обрабатывать не каждый тик, а только начало каждой минутной свечи, и за счет этого будет экономится время исполнения всего кода. 

Скажи а если вместо TimeSeconds() написать в условии if(Minute() != x), а в конце  x= Minute(), то будет такой же эффект как и от   TimeSeconds()?

Спасибо

 
ANDREY:

Спасибо за помощь. Если я не ошибаюсь, не смотря на то что void OnTick() обрабатывает каждый тик, если применить внутри нее   TimeSeconds(), то  void OnTick() будет обрабатывать не каждый тик, а только начало каждой минутной свечи, и за счет этого будет экономится время исполнения всего кода. 

Скажи а если вместо TimeSeconds() написать в условии if(Minute() != x), а в конце  x= Minute(), то будет такой же эффект как и от   TimeSeconds()?

Спасибо

bool FlagNewBar=false,
     FlagBegin=true;

void OnTick()

FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }


   if(FlagNewBar || FlagBegin)
     {
      FlagBegin=false;
.......

)

Лучше так, таймер у Вас и вне сессий будет молотить. А так только на новой свече.

А зачем так, ведь легче сетку отложек поставить от первого экстремума? У вас по сути то же самое. Первый условие поиск экстремума, а потом, если движение вниз, то через 30 пунктов ордера.

Флагбегин нужен для отработки сразу, после накидывания на график. Если не нужно, то убрать флагбегин.

 
Valeriy Yastremskiy:

Лучше так, таймер у Вас и вне сессий будет молотить. А так только на новой свече.

А зачем так, ведь легче сетку отложек поставить от первого экстремума? У вас по сути то же самое. Первый условие поиск экстремума, а потом, если движение вниз, то через 30 пунктов ордера.

Флагбегин нужен для отработки сразу, после накидывания на график. Если не нужно, то убрать флагбегин.

У меня от локального минимума открывается ордер через 30 п. вверх , то есть БИД минус МИНИМУМ >= 30 п.
Спасибо за участие. Сейчас начну вникать в Ваши советы....

 
Valeriy Yastremskiy:

Лучше так, таймер у Вас и вне сессий будет молотить. А так только на новой свече.

А зачем так, ведь легче сетку отложек поставить от первого экстремума? У вас по сути то же самое. Первый условие поиск экстремума, а потом, если движение вниз, то через 30 пунктов ордера.

Флагбегин нужен для отработки сразу, после накидывания на график. Если не нужно, то убрать флагбегин.

Появился локальный минимум ... и я поставил от него вверх допустим 10 отложек на расстоянии 30,32,34...пунктов от локального минимума. А потом локальный минимум обновился до того как цена дошла до первой отложки, и мне придется выставлять все отложки заново. Как мне кажется установка и переустановка отложек занимает очень много времени. А  я пытаюсь его экономить.

 
Valeriy Yastremskiy:

Лучше так, таймер у Вас и вне сессий будет молотить. А так только на новой свече.

А зачем так, ведь легче сетку отложек поставить от первого экстремума? У вас по сути то же самое. Первый условие поиск экстремума, а потом, если движение вниз, то через 30 пунктов ордера.

Флагбегин нужен для отработки сразу, после накидывания на график. Если не нужно, то убрать флагбегин.

Я был бы рад если бы таймер у меня молотил. Но как выяснилось на тестере МТ4 таймер не работает.

 
ANDREY:

Спасибо за помощь. Если я не ошибаюсь, не смотря на то что void OnTick() обрабатывает каждый тик, если применить внутри нее   TimeSeconds(), то  void OnTick() будет обрабатывать не каждый тик, а только начало каждой минутной свечи, и за счет этого будет экономится время исполнения всего кода. 

Скажи а если вместо TimeSeconds() написать в условии if(Minute() != x), а в конце  x= Minute(), то будет такой же эффект как и от   TimeSeconds()?

Спасибо

      if(TimeMinute(TimeCurrent())!=x)
         x=TimeMinute(TimeCurrent();
 
Valeriy Yastremskiy:

Лучше так,

Подскажи, пожалуйста, зачем нужен "FlagNewBar"?

Разве так не тоже самое

   if(BarTime!=Time[0])
     {
      ........
      BarTime=Time[0];
     }
 

MakarFX:

if(TimeMinute(TimeCurrent())!=x)
         x=TimeMinute(TimeCurrent();


Я так и не понял использование в данном случае именно функции TimeSeconds() или  TimeMinute () - это принципиально и обязательно? Ведь можно получить тот же самый результат что с этими функциями при помощи одной функции  Minute()

  if (Minute() != х)
{

действие
х= Minute() ;

}

Спасибо.

 
ANDREY:

Я так и не понял использование в данном случае именно функции TimeSeconds() или  TimeMinute () - это принципиально и обязательно? Ведь можно получить тот же самый результат что с этими функциями при помощи одной функции  Minute()

  if (Minute() != х)
{

действие
х= Minute() ;

}

Спасибо.

Не принципиально. Как тебе удобнее
 
MakarFX:

Подскажи, пожалуйста, зачем нужен "FlagNewBar"?

Разве так не тоже самое

Привычка с бейсика. Спокойней с ним) Можно и без него.) И если условие в несколько мест вставлять, то запись короче.

Зы. Если логика ветвленная и гистерезисная, то без флагов никак. И их принтовать удобно)