Подскажите пожалуйста,
Экстремумы зигзага беру следующим образом
double y3=0, y2=0, y1=0, zz; // экстремумы Зиг-Зага int x3, x2, x1, sh=ShiftBars;// номера баров // Берём три экстремума Зиг-Зага while (y3==0) { zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh); if (zz!=0 && zz!=EMPTY_VALUE) { if (y1==0) { x1=sh; y1=zz; } else if (y2==0) { x2=sh; y2=zz; } else if (y3==0) { x3=sh; y3=zz; } } sh++; }
А как взять время этих экстремумов ?
Time[x1], Time[x2], Time[x3]
Подскажите пожалуйста,
Экстремумы зигзага беру следующим образом
double y3=0, y2=0, y1=0, zz; // экстремумы Зиг-Зага int x3, x2, x1, sh=ShiftBars;// номера баров // Берём три экстремума Зиг-Зага while (y3==0) { zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh); if (zz!=0 && zz!=EMPTY_VALUE) { if (y1==0) { x1=sh; y1=zz; } else if (y2==0) { x2=sh; y2=zz; } else if (y3==0) { x3=sh; y3=zz; } } sh++; }
А как взять время этих экстремумов ?
Time[x1], Time[x2], Time[x3]
Спасибо !
а как вычислить число баров между ними? y1y2= y2y3=
y1 это последнее значение?(которое перерисовывается) если нет то как его вычислить? (y[0] )
Или несколько операторов PRINT(), один до того как ..., другой после того?
Потом, с полученной распечаткой, полазить по графику, найти и посчитать вживую все бары. Ну и т.д. и т.п.
Попробуйте, вам понравится.
А, что вам мешает вставить в текст дополнительную строку с оператором PRINT(...), в котором перечислить буквально все переменные, которые вас интересуют?
Или несколько операторов PRINT(), один до того как ..., другой после того?
Потом, с полученной распечаткой, полазить по графику, найти и посчитать вживую все бары. Ну и т.д. и т.п.
Попробуйте, вам понравится.
Спасибо .. отследил ... но y1 только правильно подсчитывается... подскажите как определить текущее значение точки y0 и значение точки y2 ... и не догнал как посчитать количество свечей между ними... помогите пожалуйста
Спасибо .. отследил ... но y1 только правильно подсчитывается... подскажите как определить текущее значение точки y0 и значение точки y2 ... и не догнал как посчитать количество свечей между ними... помогите пожалуйста
Помогу, раз уж влез ...
1. сравнивать два вещественных числа нельзя, но если очень хочется, то задавать надо так:
... = 0.0; // присвоение
... == 0.0; // проверка на равенство
... != 0.0; // проверка на неравенство
2. цикл "while (y3==0)" задан неграмотно, условие должно быть заведомо выполнимым, например (sh < Bars) или (sh < 100). А вот когда будет найдена третья точка, там и выход из цикла, принудительный, командой "break;"
После цикла - проверка, какой был выход, принудительный или просто точка не найдена.
3. Если есть номера баров (x1, x2, x3), то как найти разницу между ними? Вычесть одно из другого, это и есть расстояние.
Дальше разбирайтесь сами. Удачи.
2. цикл "while (y3==0)" задан неграмотно, условие должно быть заведомо выполнимым, например (sh < Bars) или (sh < 100). А вот когда будет найдена третья точка, там и выход из цикла, принудительный, командой "break;"
После цикла - проверка, какой был выход, принудительный или просто точка не найдена.
3. Если есть номера баров (x1, x2, x3), то как найти разницу между ними? Вычесть одно из другого, это и есть расстояние.
Дальше разбирайтесь сами. Удачи.
while (y3==0), будет выполнятся пока не найдем 3 экстремум, т.е. нашли 3 точку >> y3 не равно 0 >> выходим из цикла.
....disis: Вот скрипт, попробуйте.
//+------------------------------------------------------------------+ //| экстремумы Зиг-Зага.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict input int ExtDepth=12; // Depth input int ExtDeviation=5; // Deviation input int ExtBackstep=3; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double y3=0, y2=0, y1=0, zz; // экстремумы Зиг-Зага int x3, x2, x1, sh=0;// номера баров // Берём три экстремума Зиг-Зага while (y3==0) { zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh); if (zz!=0 && zz!=EMPTY_VALUE) { if (y1==0) { x1=sh; y1=zz; } else if (y2==0) { x2=sh; y2=zz; } else if (y3==0) { x3=sh; y3=zz; } } sh++; } Comment(" Время 1 экср. ",Time[x1]," Время 2 экср. ",Time[x2]," Время 3 экср. ",Time[x3], "\n"," Цена 1 экср. ",y1," Цена 2 экср. ",y2," Цена 3 экср. ",y3 , "\n"," Бар 1 экср. №",x1,". Бар 2 экср. №",x2,". Бар 3 экср. №",x3,".", "\n"," количество свечей между 1 и 2 экср.",x2-x1," шт. или ",int(MathAbs((y2-y1)/Point))," пунктов", "\n"," количество свечей между 2 и 3 экср.",x3-x2," шт. или ",int(MathAbs((y3-y2)/Point))," пунктов"); } //+------------------------------------------------------------------+
while (y3==0), будет выполнятся пока не найдем 3 экстремум, т.е. нашли 3 точку >> y3 не равно 0 >> выходим из цикла.
....disis: Вот скрипт, попробуйте.
Подскажите пожалуйста как найти текущий экстремум т.е y0
Текущий, это ближайший к 0 бару, так? Это y1.
смотри там в комменте все написано цена и время.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста,
Экстремумы зигзага беру следующим образом
А как взять время этих экстремумов ?