LSMA_ind_05





//+------------------------------------------------------------------+
//| 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;
       }
  
     }

  }







Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains open prices of each bar


Indicator Curves created:


Implements a curve of type DRAW_LINE

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: