//+------------------------------------------------------------------+
//| LSMA                                                             |
//+------------------------------------------------------------------+
#property  copyright "Copywrong 2005 RonT"
#property  link      "http://www.lightpatch.com/forex/"
//---- indicator settings
#property  indicator_chart_window
#property indicator_buffers   7
#property indicator_color1  Yellow      
#property indicator_color2  Green
#property indicator_color3  Red
//---- buffers
double ExtMapBuffer1[];  //Yellow
double ExtMapBuffer2[];  //Green
double ExtMapBuffer3[];  //Red
extern int extRperiod = 57;
extern int extDiff    =  6;
extern int extDraw4HowLong = 500;
int bartime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,ExtMapBuffer1);   //Yellow
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(1,ExtMapBuffer2);  //Green
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(2,ExtMapBuffer3);  //Red
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   int i;
   for( i=0; i<Bars; i++ ) 
     { 
      ExtMapBuffer1[i]=0;
      ExtMapBuffer2[i]=0;
      ExtMapBuffer3[i]=0;
     }
  }
int start()
  {   
   
   
   int    c;
   int    i;
   int    length;
   double lengthvar;
   int    loopbegin;
   int    pos;
   double sum;
   double tmp;
   double wtp; //previous value
   double wt;  //current value
   
   int DiffADJ=extDiff;
   if(bartime==Time[0]) return(0);
   bartime=Time[0];
   length = extRperiod;
   loopbegin = extDraw4HowLong - length - 1;
 
   for(pos = loopbegin; pos >= 0; pos--)
     { 
      
      sum = 0;
      for(i = length; i >= 1  ; i--)
        {
         lengthvar = length + 1;
         lengthvar /= 3;
         tmp = 0;
         tmp = ( i - lengthvar)*Open[length-i+pos];
         sum+=tmp;
        }
         
      wtp=wt;
      wt = sum*6/(length*(length+1));
         
      ExtMapBuffer1[pos] = wt+(10*Point);   //yellow
      ExtMapBuffer2[pos] = wt+(10*Point);   //green
      ExtMapBuffer3[pos] = wt+(10*Point);   //red 
      if (wtp < wt+(DiffADJ*Point))
        {
         ExtMapBuffer3[pos] = EMPTY_VALUE; //remove RED
         //DiffADJ=0;
        }
        
      if (wtp > wt-(DiffADJ*Point))
        {
         ExtMapBuffer2[pos] = EMPTY_VALUE; //remove GREEN
         //DiffADJ=0;
        }
        
     if (wtp>wt+(DiffADJ*Point) && wtp<wt-(DiffADJ*Point))
       {
        //DiffADJ=extDiff;
       }
  
     }
  }
Comments