Нет такого индикатора в папке experts\indicators\ ?
Нет такого индикатора в папке experts\indicators\ ?
:)))) нет я конечно лопух но не до такой степени))) есть вот индюк:
#property indicator_separate_window #property indicator_buffers 4 #property indicator_color3 Blue #property indicator_color4 Red //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; extern int ExtBackstep=3; // extern double DrawlinesAt=0.5; //---- indicator buffers double ExtMapBuffer0[]; double ExtMapBuffe#property indicator_separate_window #property indicator_buffers 4 #property indicator_color3 Blue #property indicator_color4 Red //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; extern int ExtBr1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4); //---- drawing settings SetIndexStyle(0,DRAW_NONE); SetIndexStyle(2,DRAW_HISTOGRAM,0,1); SetIndexStyle(3,DRAW_HISTOGRAM,0,1); SetIndexDrawBegin(2,1); SetIndexDrawBegin(3,1); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer0); SetIndexBuffer(1,ExtMapBuffer1); SetIndexBuffer(2,ExtMapBuffer2); SetIndexBuffer(3,ExtMapBuffer3); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); ArraySetAsSeries(ExtMapBuffer0,true); ArraySetAsSeries(ExtMapBuffer1,true); //---- indicator short name IndicatorShortName("ZIGOSK("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")"); SetIndexLabel(0,"%"); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); SetIndexLabel(3,NULL); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int shift, back,lasthighpos,lastlowpos,shift_bar,i; double val,res; double curlow,curhigh,lasthigh,lastlow,sravnenie=0.0,ZIGOSK,Draw; /* Draw=DrawlinesAt*(-1); ObjectCreate("Line2",OBJ_HLINE,1,0,DrawlinesAt); ObjectCreate("Line3",OBJ_HLINE,1,0,Draw); ObjectSet("Line2",6, Silver); ObjectSet("Line3",6, Silver); ObjectSet("Line3",7,STYLE_DOT ); ObjectSet("Line2",7,STYLE_DOT ); */ for(shift=Bars-ExtDepth; shift>=0; shift--) { val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer0[shift+back]; if((res!=0)&&(res>val)) ExtMapBuffer0[shift+back]=0.0; } } } ExtMapBuffer0[shift]=val; //--- high val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer1[shift+back]; if((res!=0)&&(res<val)) ExtMapBuffer1[shift+back]=0.0; } } } ExtMapBuffer1[shift]=val; } // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlow=ExtMapBuffer0[shift]; curhigh=ExtMapBuffer1[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh<curhigh) ExtMapBuffer1[lasthighpos]=0; else ExtMapBuffer1[shift]=0; } //--- if(lasthigh<curhigh || lasthigh<0) { lasthigh=curhigh; lasthighpos=shift; } lastlow=-1; } //---- if(curlow!=0) { if(lastlow>0) { if(lastlow>curlow) ExtMapBuffer0[lastlowpos]=0; else ExtMapBuffer0[shift]=0; } //--- if((curlow<lastlow)||(lastlow<0)) { lastlow=curlow; lastlowpos=shift; } lasthigh=-1; } } for(shift=Bars-1; shift>=0; shift--) { if(shift>=Bars-ExtDepth) ExtMapBuffer0[shift]=0.0; else { res=ExtMapBuffer1[shift]; if(res!=0.0) ExtMapBuffer0[shift]=res; } } // Модуль Осцилятора /* for(shift=Bars-1; shift>=0; shift--) { ExtMapBuffer2[shift]=-1; ExtMapBuffer3[shift]=3; } */ for(shift=Bars-1; shift>=0; shift--) { ExtMapBuffer2[shift]=0; ExtMapBuffer3[shift]=0; if(sravnenie!=0.0) { if(sravnenie<ExtMapBuffer0[shift]) // Растущий тренд { for( i=shift_bar;i>shift; i--) { if(i==shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } if(i!=shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); if(Close[i]>=Close[i+1]) { ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } else { ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } } } } if(sravnenie>ExtMapBuffer0[shift]) // Падающий тренд { if(ExtMapBuffer0[shift]!=0) { for( i=shift_bar;i>shift; i--) { if(i==shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } if(i!=shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); if(Close[i]>=Close[i+1]) { ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } else { ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } } } } } } // закрывает сравнение не = 0 if(ExtMapBuffer0[shift]>0) { sravnenie=ExtMapBuffer0[shift]; shift_bar=shift; if(ExtMapBuffer3[shift+1]!=0) ExtMapBuffer0[shift]=ExtMapBuffer3[shift+1]; else ExtMapBuffer0[shift]=ExtMapBuffer2[shift+1]; } } // Модуль Осцилятора return(0); }
И когда в скрипте пишу
Print (iCustom( NULL, 0, "ZIGOSK2",12,5,3,0.5, 0, 20 ));
он мне зараза в журнале пишкт не могу открыть файл... че за хрень кто скажет мне плиз...
// extern double DrawlinesAt=0.5;
Print (iCustom( NULL, 0, "ZIGOSK2",12,5,3,0.5, 0, 20 ));
Print (iCustom( NULL, 0, "ZIGOSK2",12,5,3,0.5, 0, 20 ));
Оп прошу прощенья.... на данный момент у меня
Print ("Kuku!!!",iCustom( NULL, 0, "ZIGOSK2",12,5,3, 0, 3 ));
и все равно не пашет... может не открываться из-за того что буфер как-то криво заполняется?
Индикатор рабочий? Сам на графике что-то рисует?
Индикатор рабочий? Сам на графике что-то рисует?
Да конечно ... я ума не приложу в чем дело...
Индикатор рабочий? Сам на графике что-то рисует?
Да конечно ... я ума не приложу в чем дело...
Вообще-то Ваш индикатор не компилируется (тот, что Вами выложен). Следовательно нет файла .ех4. То есть код ошибки возвращается верно - такого файла нет, поскольку вызывается не исходник, а результат компиляции.
Удачи и попутных трендов.
ЗЫ Там дважды описаны одни и те же переменные.
Вот новая версия, но у меня и старая компилилась.... так что не знаю что там у вас...
#property indicator_separate_window #property indicator_buffers 1 #property indicator_minimum -10 #property indicator_maximum 10 #property indicator_color1 Red //---- indicator parameters extern int ExtDepth=12; extern int ExtDeviation=5; extern int ExtBackstep=3; extern double DrawlinesAt=0; //---- indicator buffers double ExtMapBuffer0[]; double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { double Draw; IndicatorBuffers(4); //---- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexStyle(2,DRAW_HISTOGRAM,0,1); SetIndexStyle(3,DRAW_HISTOGRAM,0,1); SetIndexDrawBegin(2,1); SetIndexDrawBegin(3,1); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer0); SetIndexBuffer(1,ExtMapBuffer1); SetIndexBuffer(2,ExtMapBuffer2); SetIndexBuffer(3,ExtMapBuffer3); SetIndexEmptyValue(0,0.0); ArraySetAsSeries(ExtMapBuffer0,true); ArraySetAsSeries(ExtMapBuffer1,true); //---- indicator short name IndicatorShortName("ZIGOSK("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")"); SetIndexLabel(0,"%"); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); SetIndexLabel(3,NULL); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("Line2"); ObjectDelete("Line3"); return(0); } int start() { int shift, back,lasthighpos,lastlowpos,shift_bar,i; double val,res; double curlow,curhigh,lasthigh,lastlow,sravnenie=0.0,ZIGOSK,Draw; Draw=DrawlinesAt*(-1); ObjectCreate("Line2",OBJ_HLINE,1,0,DrawlinesAt); ObjectCreate("Line3",OBJ_HLINE,1,0,Draw); ObjectSet("Line2",6, Silver); ObjectSet("Line3",6, Silver); ObjectSet("Line3",7,STYLE_DOT ); ObjectSet("Line2",7,STYLE_DOT ); for(shift=Bars-ExtDepth; shift>=0; shift--) { val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer0[shift+back]; if((res!=0)&&(res>val)) ExtMapBuffer0[shift+back]=0.0; } } } ExtMapBuffer0[shift]=val; //--- high val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer1[shift+back]; if((res!=0)&&(res<val)) ExtMapBuffer1[shift+back]=0.0; } } } ExtMapBuffer1[shift]=val; } // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlow=ExtMapBuffer0[shift]; curhigh=ExtMapBuffer1[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh<curhigh) ExtMapBuffer1[lasthighpos]=0; else ExtMapBuffer1[shift]=0; } //--- if(lasthigh<curhigh || lasthigh<0) { lasthigh=curhigh; lasthighpos=shift; } lastlow=-1; } //---- if(curlow!=0) { if(lastlow>0) { if(lastlow>curlow) ExtMapBuffer0[lastlowpos]=0; else ExtMapBuffer0[shift]=0; } //--- if((curlow<lastlow)||(lastlow<0)) { lastlow=curlow; lastlowpos=shift; } lasthigh=-1; } } for(shift=Bars-1; shift>=0; shift--) { if(shift>=Bars-ExtDepth) ExtMapBuffer0[shift]=0.0; else { res=ExtMapBuffer1[shift]; if(res!=0.0) ExtMapBuffer0[shift]=res; } } // Модуль Осцилятора /* for(shift=Bars-1; shift>=0; shift--) { ExtMapBuffer2[shift]=-1; ExtMapBuffer3[shift]=3; } */ for(shift=Bars-1; shift>=0; shift--) { ExtMapBuffer2[shift]=0; ExtMapBuffer3[shift]=0; if(sravnenie!=0.0) { if(sravnenie<ExtMapBuffer0[shift]) // Растущий тренд { for( i=shift_bar;i>shift; i--) { if(i==shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } if(i!=shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); if(Close[i]>=Close[i+1]) { ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } else { ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } } } } if(sravnenie>ExtMapBuffer0[shift]) // Падающий тренд { if(ExtMapBuffer0[shift]!=0) { for( i=shift_bar;i>shift; i--) { if(i==shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } if(i!=shift_bar) { ZIGOSK=(((Close[i]-sravnenie)*100)/sravnenie); if(Close[i]>=Close[i+1]) { ExtMapBuffer2[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } else { ExtMapBuffer3[i]=ZIGOSK; ExtMapBuffer0[i]=ZIGOSK; } } } } } } // закрывает сравнение не = 0 if(ExtMapBuffer0[shift]>0) { sravnenie=ExtMapBuffer0[shift]; shift_bar=shift; if(ExtMapBuffer3[shift+1]!=0) ExtMapBuffer0[shift]=ExtMapBuffer3[shift+1]; else ExtMapBuffer0[shift]=ExtMapBuffer2[shift+1]; } // for(int k=IndicatorCounted();k>=0; k--) // { // ExtMapBuffer0[shift]=1; // } } // Модуль Осцилятора return(0); }
Вот новая версия, но у меня и старая компилилась.... так что не знаю что там у вас...
А Вы попробуйте откомпилировать ту, что выложили ;). Я то ошибки исправил.
Сейчас гляну новую версию.
ЗЫ
Если хотите могу сделать функцию - будет работать быстрее при использовании в эксперте - просто вставите в тело эксперта - всего делов.
Сорри еще раз, а что Вы хотите получить ?
При вызове с такими параметрами
Print ("Kuku!!!",iCustom( NULL, 0, "ZIGOSK2",12,5,3, 0, 3 ));
Вы получаете значения нулевого буфера на четвертом баре, то есть ExtMapBuffer0[3].
Поскольку SetIndexBuffer(0,ExtMapBuffer0);
У меня пишет в журнале Kuku!!!-0.3347 При вызове на чарт евры 15М
При вызове с такими параметрами
Print ("Kuku!!!",iCustom( NULL, 0, "ZIGOSK2",12,5,3, 0, 3 ));
Вы получаете значения нулевого буфера на четвертом баре, то есть ExtMapBuffer0[3].
Поскольку SetIndexBuffer(0,ExtMapBuffer0);
У меня пишет в журнале Kuku!!!-0.3347 При вызове на чарт евры 15М

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вызываю так (скриптом):