Indicator not showing on the Data Window New comment [Deleted] 2010.03.18 04:18 Hi All. I am trying to use an Indicator in an EA, but the indicator is not showing on the Data Window, hence not exposing any value to the EA. I checked the indicator code but could not see what is missing kindly assist. Here is the code: #property indicator_separate_window #property indicator_minimum 0.0 #property indicator_maximum 1.0 #property indicator_buffers 3 #property indicator_color2 Blue #property indicator_color3 Red #property indicator_style2 STYLE_SOLID #property indicator_style3 STYLE_SOLID #property indicator_width2 1 #property indicator_width3 1 extern int period=21; double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; int init() { SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorDigits(Digits+1); SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); IndicatorShortName("Chaos Oscillator"); SetIndexLabel(0,NULL); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); return(0); } int start() { int limit; int counted_bars=IndicatorCounted(); double prev,current,old; double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0; double price; double MinL=0; double MaxH=0; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i<Bars; i++) //for(int i=Bars; i>=0; i--) { MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)]; MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)]; price = (High[i]+Low[i])/2; if(MaxH-MinL == 0) Value = 0.33*2*(0-0.5) + 0.67*Value1; else Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1; Value=MathMin(MathMax(Value,-0.999),0.999); if(1-Value == 0) ExtMapBuffer1[i]=0.5+0.5*Fish1; else ExtMapBuffer1[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; Value1=Value; Fish1=ExtMapBuffer1[i]; } bool up=true; for(i=Bars; i>=0; i--) { current=ExtMapBuffer1[i]; prev=ExtMapBuffer1[i+1]; if (((current<0)&&(prev>0))||(current<0)) up= false; if (((current>0)&&(prev<0))||(current>0)) up= true; if(!up) { ExtMapBuffer3[i]=1.0; ExtMapBuffer2[i]=EMPTY_VALUE; } else { ExtMapBuffer2[i]=1.0; ExtMapBuffer3[i]=EMPTY_VALUE; } } return(0); } Thamks. MQL4 Learning Need Help With Alerts Pls Anybody Convert this Indicator to EA for ME New comment
Hi All. I am trying to use an Indicator in an EA, but the indicator is not showing on the Data Window, hence not exposing any value to the EA. I checked the indicator code but could not see what is missing kindly assist. Here is the code:
#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 1.0
#property indicator_buffers 3
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
#property indicator_width2 1
#property indicator_width3 1
extern int period=21;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
int init()
{
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
IndicatorShortName("Chaos Oscillator");
SetIndexLabel(0,NULL);
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);
return(0);
}
int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current,old;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
double price;
double MinL=0;
double MaxH=0;
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<Bars; i++)
//for(int i=Bars; i>=0; i--)
{
MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
price = (High[i]+Low[i])/2;
if(MaxH-MinL == 0) Value = 0.33*2*(0-0.5) + 0.67*Value1;
else Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
Value=MathMin(MathMax(Value,-0.999),0.999);
if(1-Value == 0) ExtMapBuffer1[i]=0.5+0.5*Fish1;
else ExtMapBuffer1[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
Value1=Value;
Fish1=ExtMapBuffer1[i];
}
bool up=true;
for(i=Bars; i>=0; i--)
{
current=ExtMapBuffer1[i];
prev=ExtMapBuffer1[i+1];
if (((current<0)&&(prev>0))||(current<0)) up= false;
if (((current>0)&&(prev<0))||(current>0)) up= true;
if(!up)
{
ExtMapBuffer3[i]=1.0;
ExtMapBuffer2[i]=EMPTY_VALUE;
}
else
{
ExtMapBuffer2[i]=1.0;
ExtMapBuffer3[i]=EMPTY_VALUE;
}
}
return(0);
}
Thamks.