Нет такого индикатора в папке 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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вызываю так (скриптом):