Проблема с определением момента закрытия последнего бара

 
Доброго всем дня! При написании советника столкнулся с проблемой определения момента закрытия текущего бара. По закрытию бара нужно двигать стоп-лосс. Двигать по каждому тику-дело не мудреное, но накладное (для сесрвера:)) В хелпе ничего об этом не нашел. На форуме по ключевым словам находится все, но не то, что нужно. Прошу оказать посильную помощь, если есть идеи на этот счет. :))
 

Закрытие бара равнозначно открытию следующего?

Тогда вот:

datetime Time[]

Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Данные типа datetime представляют собой время в секундах, прошедшее с 00:00 1 января 1970 года.
Индексация элементов таймсерий производится задом наперед, от последнего к первому. Текущий бар, самый последний в массиве, имеет индекс 0.

 
Owner:
Доброго всем дня! При написании советника столкнулся с проблемой определения момента закрытия текущего бара. По закрытию бара нужно двигать стоп-лосс. Двигать по каждому тику-дело не мудреное, но накладное (для сесрвера:)) В хелпе ничего об этом не нашел. На форуме по ключевым словам находится все, но не то, что нужно. Прошу оказать посильную помощь, если есть идеи на этот счет. :))

Посмотрите задачу 27 здесь https://book.mql4.com/ru/variables/arrays

 

Спасибо большое, примеры и ссылки великолепные. С проблемой справился - bool isNewBarCreated() - отлично работает!

 
SK. писал (а):
Owner:
Доброго всем дня! При написании советника столкнулся с проблемой определения момента закрытия текущего бара. По закрытию бара нужно двигать стоп-лосс. Двигать по каждому тику-дело не мудреное, но накладное (для сесрвера:)) В хелпе ничего об этом не нашел. На форуме по ключевым словам находится все, но не то, что нужно. Прошу оказать посильную помощь, если есть идеи на этот счет. :))

Посмотрите задачу 27 здесь https://book.mql4.com/ru/variables/arrays

Сергей ! день добрый


подскажи по 26-му примеру





-------------- начало примера


Задача 26.Найти минимальное и максимальное значения цены среди последних n баров.



//--------------------------------------------------------------------
// extremumprice.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
extern int Quant_Bars=30;                       // Количество баров
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
   int i;                                       // Номер бара 
   double Minimum=Bid,                          // Минимальная цена
          Maximum=Bid;                          // Максимальная цена
 
   for(i=0;i<=Quant_Bars-1;i++)                 // От нуля (!) до..
     {                                          // ..Quant_Bars-1 (!)
      if (Low[i]< Minimum)                      // Если < известного
         Minimum=Low[i];                        // то оно и будет мин
      if (High[i]> Maximum)                     // Если > известного
         Maximum=High[i];                       // то оно и будет макс
     }
   Alert("За последние ",Quant_Bars,            // Вывод на экран  
         " баров Min= ",Minimum," Max= ",Maximum);
   return;                                      // Выход из start()
  }
//--------------------------------------------------------------------


--------------------- конец примера



---- альтернатива


есть функция, привел пример как есть с документации MQL


  double val;
  // расчет максимального значения цены на 20 последовательных барах
  // с индекса 4 по индекс 23 включительно на текущем графике
  val=High[iHighest(NULL,0,MODE_HIGH,20,4)];


вроде как намного изящней! никаких циклов...



если для твоего примера переработать то получиться вот такой кусочек! вместо блока с циклом и проверками, полагаю и скорость выше




получить LOW и HIGH последних 30 баров, т. е. по счету баров 29 - 0


Maximum=High[iHighest(NULL,0,MODE_HIGH,29,0)];
Minimum=Low[iLowest(NULL,0,MODE_LOW,29,0)];  


хотя в качестве учебного примера может быть непонятно новичку!

но в рабочей программе я вставлю именно такой кусок!

 
YuraZ:

хотя в качестве учебного примера может быть непонятно новичку!

но в рабочей программе я вставлю именно такой кусок!

Всё правильно. Но в данном случае - это пример из Учебника. На этом этапе обучения происходит первое касание понятия "массив". В этом параграфе не ставилась цель показать изящный быстрый код. Здесь нужно было дать читателю "почувствовать" массивы - какие они, из чего состоят, как взять значение элемента массива, как его можно обрабатывать, какая из всего этого может быть польза и т.д.

Причина обращения: