Запись времени образования вершин ZigZag в файл

 
Друзья, прошу прощения, что дублирую сообщения. Просто есть острая необходимость, в действительности.

если у вас будет время и возможность, посоветуйте, плз, по такому вопросу:

есть индикатор ZigZag, отрисовывающий максимумы и минимумы на графике.

Подскажите, пожалуйста, как написать индикатор, который бы записывал такой параметр ZigZag'a, как "Time" в отдельный файл.
Чтобы по итогам работы индикатора формировался файл, в котором написано время формирования вершин и минимумов ЗигЗага, и, рядом с этим временем ставилась, например, "1", если это время соответствует образованию вершины, ставилась бы "2", если время соответствует образованию минимума Зигзага:

2010.04.12 6:00, 1 - время образования вершины
2010.04.12 18:00, 2 - время образования минимума Зигзага.


Буду очень рад любым рекомендациям.
Заранее большое спасибо.
 

Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара. В остальном задача вполне типическая. Посмотрите например это:
https://www.mql5.com/ru/forum/105472, кажется у Кима была функция возвращающая значение и/или номер бара вершины N.
Да и точно уж нужна запись в файл? Ведь потом его надо еще и читать? Быстродействие да и смыл могут пострадать... Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу...

 
Проще записывать в файл скриптом, считывая экстремумы ZZ так:
      for(int u=0;u<History;u++)
      {
        if(NormalizeDouble(ZigzagBuffer[u],Digits())>0.0)
        {
          PeaksOfZigzag[PeaksCount]=NormalizeDouble(ZigzagBuffer[u],Digits());
          PeaksCount++;
        }
      }
где
ZigzagBuffer
-буфер ZZ

PeaksOfZigzag
-массив, хранящий точки экстремумов.

По соответствующему индексу можно посмотреть и время.

Готового кода на MQL4 у меня нет, писать пока некогда.
 
Figar0 >>:

Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара. В остальном задача вполне типическая. Посмотрите например это:
https://www.mql5.com/ru/forum/105472, кажется у Кима была функция возвращающая значение и/или номер бара вершины N.
Да и точно уж нужна запись в файл? Ведь потом его надо еще и читать? Быстродействие да и смыл могут пострадать... Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу...


Figar0, спасибо вам большое за ссылку. Внимательно её изучу.

Дело в том, что быстродействие - в данном случае, не является критическим фактором, так как данный индикатор необходим для подготовки данных для стат исследования рынка на истории.

"Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара" - такая точность вполне бы удовлетворила.

уточните, пожалуйста, ваш вариант: " Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу..." - я немножко не разобрался.
_________________________________________________________________________________________________________________________________________________________

в ссылке, которую вы дали, есть код Talex'a:

//-------------------------------------------------------------------+
// Функция Zigzag получает и заносит в массив данные 3-х последних   +
// вершин Зигзага                                                    +
//-------------------------------------------------------------------+
void Zigzag()
{
  int i,j;
  double zz;
  
  for(i=0,j=0;i<Bars && j<3;i++)
  {
    zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
    if(zz!=0)
    {
      zzbar[j]=i;
      zzp[j]=zz;
      j++;
    }
  }
  return;
}
как бы еще сюда добавить массив, в который заносится время открытия(или закрытия) бара, на котором сформировалась вершина ЗигЗага.
а потом бы содержание этого временного массива и массива zzp в файл записать?
 
joo >>:
Проще записывать в файл скриптом, считывая экстремумы ZZ так:
где
-буфер ZZ

-массив, хранящий точки экстремумов.

По соответствующему индексу можно посмотреть и время.

Готового кода на MQL4 у меня нет, писать пока некогда.


joo, спасибо вам большое за совет. Будем разбираться.

Если не трудно, прокомментируйте, пожалуйста, фразу "По соответствующему индексу можно посмотреть и время." - не совсем разобрался, какой индекс смотреть.

Заранее большое спасибо.
 
Morzh09 писал(а) >>



как бы еще сюда добавить массив, в который заносится время открытия(или закрытия) бара, на котором сформировалась вершина ЗигЗага.
а потом бы содержание этого временного массива и массива zzp в файл записать?


Ну массив достаточно объявить и использовать, а время будет соответствовать Time[i]. Если взять выше озвученый скрипт:

void Zigzag()
{
  int i,j;
  double zz;
  
  for(i=0,j=0;i<Bars && j<3;i++)
  {
    zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
    if(zz!=0)
    {
      zzbar[j]=i;
      zzp[j]=zz;
      zz[t]=Time[i];
      j++;
    }
  }
  return;
}
разумеется массив zzt должен быть заранее объявлен.
 
Morzh09 >>:

   если у вас будет время и возможность, посоветуйте, плз, по такому вопросу:
есть индикатор ZigZag, отрисовывающий максимумы и минимумы на графике.

  
Я модифиуировал ЗигЗаг, - дополнял два буфера. Они показывают динамику образования вершин и их движения. Может он вам подойдет?
 
Morzh09 >>:
joo, спасибо вам большое за совет. Будем разбираться.

Если не трудно, прокомментируйте, пожалуйста, фразу "По соответствующему индексу можно посмотреть и время." - не совсем разобрался, какой индекс смотреть.

Заранее большое спасибо.

Figar0 ответил - Time[i].

В моем примере будет - Time[u].

 
Morzh09 писал(а) >>

уточните, пожалуйста, ваш вариант: " Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу..." - я немножко не разобрался.

Все просто пишется функция возвращающая время N-й вершины снизу/сверху. Там где нам нужны данные, функцию вызываем.

// Функция
int PeakTime(....)
{  
  .....
}

// ее использование
int ZZPeakTimeL= PeakTime(1,5);// 5-я вершина снизу
int ZZPeakTimeH= PeakTime(2,5);// 5-я вершина сверху
Примерно так, и ни каких файлов, правда не знаю стало ли понятнее..
Причина обращения: