Download MetaTrader 5

Help me in my problem with #property strict New comment

To add comments, please log in or register
Jiri Kasparek
259
Jiri Kasparek  

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);
  }
whroeder1
17063
whroeder1  
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]
Jiri Kasparek
259
Jiri Kasparek  
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.

whroeder1
17063
whroeder1  
  1. When you delete the strict, the error is ignored.
  2. Fix your broken limits. See How to do your lookbacks correctly.
Jiri Kasparek
259
Jiri Kasparek  
Thank you, really thank you very much for the advice.
To add comments, please log in or register