Newbie need help with basic code reading.

 

Hi guy. Can you help me explain this code? Inside it, i add some comment where my question is.

Code info: Name: SuperSR 6. Author: Scriptor (2008.03.05 09:45).

//+------------------------------------------------------------------+
//|                SuperSR 6.mq4                                     |
//|                Copyright c 2006  Scorpion@fxfisherman.com        |
//+------------------------------------------------------------------+
#property copyright "FxFisherman.com"
#property link      "http://www.fxfisherman.com"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//----
extern int Contract_Step=150;
extern int Precision=10;
extern int Shift_Bars=1;
//---- buffers
double v1[];
double v2[];
double val1;
double val2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(2);
   SetIndexArrow(0, 159);
   SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1,Red);
   SetIndexDrawBegin(0,-1);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");
   //
   SetIndexArrow(1, 159);
   SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1,Blue);
   SetIndexDrawBegin(1,-1);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
   //  
   watermark();
//-----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double gap;
   double contract=(Contract_Step + Precision) * Point;
   int i=Bars;                  //what is Bars? Where is this value come from. I don't see it get defined anywhere, so how come this is possible?
   int shift;
   bool fractal;
   double price;
   while(i>=0)
     {
      shift=i + Shift_Bars;
      // Resistance.
      price=High[shift+2];                       // Where this High[] array from? Again it doesn't get defined but somehow the code works fine.
      fractal=price>=High[shift+4] &&   
      price>=High[shift+3] &&           
      price > High[shift+1] &&          
      price > High[shift];              
      gap=v1[i+1] - price;              
      if (fractal && (gap>=contract || gap < 0)) 
        {
         v1[i]=price + (Precision * Point);       //Same thing for Point value here.
         }else{
         v1[i]=v1[i+1];                         
        }
      // Support.
      price=Low[shift+2];                           //Also this Low[] array
      fractal=price<=Low[shift+4] &&
      price<=Low[shift+3] &&
      price < Low[shift+1] &&
      price < Low[shift];
      gap=price - v2[i+1];
      if (fractal && (gap>=contract || gap < 0))
        {
         v2[i]=price - (Precision * Point); 
         }else{
         v2[i]=v2[i+1];                     
        }               
      i--;                                      
     }
   return(0);
  }
//+------------------------------------------------------------------+
void watermark()
  {
   ObjectCreate("fxfisherman", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("fxfisherman", "fxfisherman.com", 11, "Lucida Handwriting", RoyalBlue);
   ObjectSet("fxfisherman", OBJPROP_CORNER, 2);
   ObjectSet("fxfisherman", OBJPROP_XDISTANCE, 5);
   ObjectSet("fxfisherman", OBJPROP_YDISTANCE, 10);
   return(0);
  }
//+------------------------------------------------------------------+
 
Bars, High[], Point . . . are predefined variables . . .
 
Does that mean that these variable can be use freely in any mq4 file without me define them?
 
nguye235:
Does that mean that these variable can be use freely in any mq4 file without me define them?
Yes. Also see the Book for Predefined Variables and for Timeseries Arrays.
 
uh. Thanks guys. That help me alot.
Reason: