Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара. В остальном задача вполне типическая. Посмотрите например это:
https://www.mql5.com/ru/forum/105472, кажется у Кима была функция возвращающая значение и/или номер бара вершины N.
Да и точно уж нужна запись в файл? Ведь потом его надо еще и читать? Быстродействие да и смыл могут пострадать... Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу...
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 у меня нет, писать пока некогда.
Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара. В остальном задача вполне типическая. Посмотрите например это:
https://www.mql5.com/ru/forum/105472, кажется у Кима была функция возвращающая значение и/или номер бара вершины N.
Да и точно уж нужна запись в файл? Ведь потом его надо еще и читать? Быстродействие да и смыл могут пострадать... Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу...
Дело в том, что быстродействие - в данном случае, не является критическим фактором, так как данный индикатор необходим для подготовки данных для стат исследования рынка на истории.
"Время образования вершин получить достаточно проблемно, толлько с точностью до времени открытия соответствующего бара" - такая точность вполне бы удовлетворила.
уточните, пожалуйста, ваш вариант: " Гораздо проще написать функцию возвращую время открытия например 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 в файл записать?
Проще записывать в файл скриптом, считывая экстремумы ZZ так:
где
-буфер ZZ
-массив, хранящий точки экстремумов.
По соответствующему индексу можно посмотреть и время.
Готового кода на MQL4 у меня нет, писать пока некогда.
Если не трудно, прокомментируйте, пожалуйста, фразу "По соответствующему индексу можно посмотреть и время." - не совсем разобрался, какой индекс смотреть.
Заранее большое спасибо.
как бы еще сюда добавить массив, в который заносится время открытия(или закрытия) бара, на котором сформировалась вершина ЗигЗага.
а потом бы содержание этого временного массива и массива 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 должен быть заранее объявлен.
joo, спасибо вам большое за совет. Будем разбираться.
Если не трудно, прокомментируйте, пожалуйста, фразу "По соответствующему индексу можно посмотреть и время." - не совсем разобрался, какой индекс смотреть.
Заранее большое спасибо.
Figar0 ответил - Time[i].
В моем примере будет - Time[u].
уточните, пожалуйста, ваш вариант: " Гораздо проще написать функцию возвращую время открытия например 5 вершины снизу..." - я немножко не разобрался.
Все просто пишется функция возвращающая время N-й вершины снизу/сверху. Там где нам нужны данные, функцию вызываем.
// Функция int PeakTime(....) { ..... } // ее использование int ZZPeakTimeL= PeakTime(1,5);// 5-я вершина снизу int ZZPeakTimeH= PeakTime(2,5);// 5-я вершина сверхуПримерно так, и ни каких файлов, правда не знаю стало ли понятнее..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
если у вас будет время и возможность, посоветуйте, плз, по такому вопросу:
есть индикатор ZigZag, отрисовывающий максимумы и минимумы на графике.
Подскажите, пожалуйста, как написать индикатор, который бы записывал такой параметр ZigZag'a, как "Time" в отдельный файл.
Чтобы по итогам работы индикатора формировался файл, в котором написано время формирования вершин и минимумов ЗигЗага, и, рядом с этим временем ставилась, например, "1", если это время соответствует образованию вершины, ставилась бы "2", если время соответствует образованию минимума Зигзага:
2010.04.12 6:00, 1 - время образования вершины
2010.04.12 18:00, 2 - время образования минимума Зигзага.
Буду очень рад любым рекомендациям.
Заранее большое спасибо.