| / | Форум |
|
Idalgo
12.02.2008 16:37
Здравствуйте! Может, кто-нибудь сможет мне помочь? Есть типа индикатор (упрощенный код ниже) - считает только вперед - например, в режиме визуального тестирования можно посмотреть показания, т.е. с нулевого бара. Необходимо в функцию Start вставить счетчик, чтобы индикатор считал назад и выглядел как обычный индикатор на графике. Чего я только не перепробовал. Либо терминал виснет, либо ничего не показывает. Функция ZZBar возвращает в данном случае количество баров от экстремумов зигзага (можно вставить, разумеется, другой зигзаг, некритично). Вот и нужно эту функцию наложить на историю. Буду очень признателен за содействие. Спасибо! Кстати, функция, возвращающая экстремум, написана уважаемым KimIV'ом, за что ему отдельное спасибо! #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters //---- buffers double Buffer1[]; //---- //+------------------------------------------------------------------+ //| Init | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(1); //---- indicators string short_name; IndicatorShortName(short_name); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Buffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Start Function | //+------------------------------------------------------------------+ int start() { int i; int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) { return(-1); } //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; //---- do it int Bar0=ZZBar("",0, 1,6000,12); int Bar1=ZZBar("",0, 2,6000,12); Buffer1[1]=Close[Bar1]-Close[Bar0]; //---- return(0); } int ZZBar(string sym="", int tf=0, int ne=1, int dp=600, int dv=12) { if (sym=="") sym=Symbol(); double zz; int i, k=iBars(NULL, 0), ke=0; for (i=1; i<k; i++) { zz=iCustom(sym, tf, "ZigZag_new_1", dp, dv, 0, i); if (zz!=0) { ke++; if (ke>ne) return(i); } } return(0); } |
|
Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора В статье проводится сравнение скорости и результатов оптимизации советников с использованием генетических алгоритмов и прямым перебором. |
|
D500_Rised
12.02.2008 17:26
ZigZag_new_1
ZigZag_new_1 Где ? |
|
Idalgo
12.02.2008 17:44
Там любой другой зигзаг можно вставить! :) ne - номер экстремума влево. dp и dv - переменные можно отбросить и взять значения зигзага по умолчанию. либо взять файл в приложении. |
|
D500_Rised
12.02.2008 19:38
Функция ZZBar не может работать с прошлым, потому, что она не может определить никакой экстремум. Она может определить только номер указаного в параметре "ке" бара если он посчитан, а следуюший за ним бар (вправо) не посчитан (те нет значения зиг-зага и "ке" равно 0) или имеет другой параметр "ке". В такой ситуации такой бар и будет "экстремумом". Так как индикатор не пересчитывается весь, его история не удаляется а остается на графике. С появлением нового зигзага ситуация повторяется. Правда это все будет так пока вы сами не заставите пересчитатся ваш индик, например переключив ТФ. |
|
Idalgo
12.02.2008 23:18
D500_Rised писал (а):
Функция ZZBar не может работать с прошлым, потому, что она не может определить никакой экстремум. Она может определить только номер указаного в параметре "ке" бара если он посчитан, а следуюший за ним бар (вправо) не посчитан (те нет значения зиг-зага и "ке" равно 0) или имеет другой параметр "ке". В такой ситуации такой бар и будет "экстремумом". Так как индикатор не пересчитывается весь, его история не удаляется а остается на графике. С появлением нового зигзага ситуация повторяется. Правда это все будет так пока вы сами не заставите пересчитатся ваш индик, например переключив ТФ.
Жаль, что вышеуказанная функция не справляется с поставленной задачей. Но прилагаю индикатор дивергенции, который считает экстремумы OSMa. Насколько реально (и, я думаю, это было бы полезно для всех, если вдуматься) создать доступный для понимания шаблон для подсчета различных экстремумов других индикаторов (зигзага, например)? Т.е. упростить прилагаемый индикатор, универсализировать его для других целей. Моих скромных познаний для этого не хватает, к сожалению. Как Вы считаете? |
|
D500_Rised
13.02.2008 07:49
Создать код который будет определять экстремумы индикатора или цены в принципе возможно. Но к сожалению, по ряду причин, я за это дело не могу взяться, потому что мне не понятна его ценность, для чего нужен такой индикатор. Ну и код не самый простой, и результат расчета такого индикатора будет редко однозначным. |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий