Три индейца на основе Зигзага.
Там использовал такую ф-ю: FindZigZag(int bar, int nP );
заполняет массивы Zbar[ZZP] и Zval[ZZP] от бара bar на глубину nP
extern int ExtDepth=10; extern int ExtDeviation=5; extern int ExtBackstep=3;
#define ZZP 21 int Zbar[ZZP]; //номер бара с перегибом double Zval[ZZP]; //значение зигзага в точке перегиба Zval[1] - в точке 1 и тд. datetime FindZigZag(int bar, int nP ) { int n; datetime res; for(int i=bar;i<Bars;i++) { double zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i); if(zz!=0 && zz!=EMPTY_VALUE) { Zbar[n]=i; Zval[n]=zz; if(n==1) res=Time[Zbar[n]];//iTime(NULL, 0 , Zbar[n]); n++; if(n>=nP)break; } } //for( i=0;i<nP;i++) // string str=str+i+" Вершина="+DoubleToStr(Zval[i] , Digits)+"/n"; // Comment(str); return(res); }
Постараюсь болле подробно описать то что я пытаюсь сделать:
Допустим я запустил мой советник в некоторый момент времени обозначено желтой линией. По истечению некоторого времени появился первый перегиб №1, который будет фиксироваться на 5м баре на 5м баре.
Необходимо чтобы советник запомнил его значаение и присвоил его какойто переменной - допустим V1. Потом по истичению какогото времени снова появился перегиб №2, таже ситуация. потом 3й появился.
Потом советни должен будет постоянно сравнивать значения последних 3х перегибов. Вот как осуществить такую картину, чтобы переменным постоянно присваивались некие значения последних 3х перегибов и чтобы с ними можно было работать.
вот я вам и дал пример ф-ции, которая от любого бара находит заданное количество перегибов назад по истории и записывает их цены и номера баров в массивы Zval[ZZP] и Zbar[ZZP]
в Zval[0] попадает последняя точка ЗЗ - не перегиб,
в Zval[1] - первый найденный перегиб, самый молодой
а условиями
if(Zval[1]==High[Zbar[1]])//верхний
{ }
if(Zval[1]==Low[Zbar[1]]
{ }
можно проверить верхний он или нижний
Помогите пожалуйста разобраться.
Мне нужно в каждый момент времени получать последние 3 вершины ZZ с такими параметрами
iCustom(NULL,0,"ZigZag",21,5,3,0,5)
Можно использовать функцию KimIV:
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 07.10.2006 | //| Описание : Возвращает экстремум ЗигЗага по его номеру. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL или "" - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| ne - номер экстремума ( 0 - последний) | //| dp - ExtDepth | //| dv - ExtDeviation | //| bs - ExtBackstep | //+----------------------------------------------------------------------------+ double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) { if (sy=="" || sy=="0") sy=Symbol(); double zz; int i, k=iBars(sy, tf), ke=0; for (i=1; i<k; i++) { zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i); if (zz!=0) { ke++; if (ke>ne) return(zz); } } Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден"); return(0); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите пожалуйста разобраться.
Мне нужно в каждый момент времени получать последние 3 вершины ZZ с такими параметрами
iCustom(NULL,0,"ZigZag",21,5,3,0,5)