Help me in my problem with #property strict New comment

 

Hello my friends,

I've an indicator. I want to update my indicator to the new MQL4 Compiler. I already wrote the new code but I've on problem. When I add #property strict  -  the indicator vanish but when I delete it the indicator appears.

Here is the code & I hope any pro here could help me.


The problem is in this record. Can you help me please? :        for(i=Bars; i>=0; i--)

//+------------------------------------------------------------------+
//|                                                  ScalpingPro.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property  version   "1.00"





#property strict






#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color2  Lime
#property  indicator_color3  Red
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
#property indicator_width2 4
#property indicator_width3 4
extern int period=6;

double         ExtBuffer0[];
double         ExtBuffer1[];
double         ExtBuffer2[];


int init()
  {
   
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   IndicatorDigits(Digits+1);

   SetIndexBuffer(0,ExtBuffer0);
   SetIndexBuffer(1,ExtBuffer1);
   SetIndexBuffer(2,ExtBuffer2);

   IndicatorShortName("ScalpingPro");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);

   return(0);
  }

int start()
  {
   //int     period=6;
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev,current;
   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++)
    {
      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) ExtBuffer0[i]=0.5+0.5*Fish1;
      else ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      
      Value1=Value;
      Fish1=ExtBuffer0[i];
    }


   bool up=true;
   
   
   
   
   
   
for(i=Bars; i>=0; i--)





   
     {
      current=ExtBuffer0[i];
      prev=ExtBuffer0[i+1];
           
      if (((current<0)&&(prev>0))||(current<0))   up= false;    
      if (((current>0)&&(prev<0))||(current>0))   up= true;
      
      if(!up)
        {
         ExtBuffer2[i]=current;
         ExtBuffer1[i]=0.0;
        }
        
       else
         {
          ExtBuffer1[i]=current;
          ExtBuffer2[i]=0.0;
         }
     }

   return(0);
  }
 
for(i=Bars; i>=0; i--){
      current=ExtBuffer0[i];
      prev=ExtBuffer0[i+1];
Had you bothered to look at the journal tab, you would know that there is no buffer0[Bars] or buffer0[Bars+1]
 
whroeder1:
Had you bothered to look at the journal tab, you would know that there is no buffer0[Bars] or buffer0[Bars+1]

And how would you solve it, please.

When I delete: (#property strict) the indicator works.

My head does not take it anymore....  :/   :D

Excuse me, I'm a beginner.

 
  1. When you delete the strict, the error is ignored.
  2. Fix your broken limits. See How to do your lookbacks correctly.
 
Thank you, really thank you very much for the advice.
Reason: