LSMA in ColorOpen3_v1





//+------------------------------------------------------------------+
//|                                                        |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005, FX Sniper "
#property  link      "http://www.metaquotes.net/"

//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 2

#property indicator_color1 White
#property indicator_color2 Red

double Buffer1[]; //White
double Buffer2[]; //Red

// User input
extern int Rperiod1 = 15;
extern int Rperiod2 = 30;
extern int Rperiod3 = 60;
extern int Draw4HowLong = 400;

//Static
double lsma0a;
double lsma1a;
double lsma0b;
double lsma1b;
double lsma0c;
double lsma1c;



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(6);
   
   // 233 up arrow
   // 234 down arrow
   // 159 big dot
   
   SetIndexBuffer(0,Buffer1);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,233);  //up

   SetIndexBuffer(1,Buffer2);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,234);  //down
  }

int start()
  {
   int shift;
   int i;
   int dir3;
   
   for(shift = Draw4HowLong; shift >= 0; shift--)
     { 
      dir3=0;
      
      lsma1a=lsma0a;
      lsma1b=lsma0b;
      lsma1c=lsma0c;
      
      lsma0a = LSMA(Rperiod1,shift);
      lsma0b = LSMA(Rperiod2,shift);
      lsma0c = LSMA(Rperiod3,shift);
          
      if ( lsma1a > lsma0a ) dir3++;
      if ( lsma1b > lsma0b ) dir3++;
      if ( lsma1c > lsma0c ) dir3++;

      if ( lsma1a < lsma0a ) dir3--;
      if ( lsma1b < lsma0b ) dir3--;
      if ( lsma1c < lsma0c ) dir3--;


      Buffer1[shift]=CLR_NONE;//EMPTY_VALUE;
      Buffer2[shift]=CLR_NONE;//EMPTY_VALUE;
      if ( dir3 ==   3  ) Buffer2[shift]=High[shift];
      if ( dir3 == (-3) ) Buffer1[shift]=Low[shift];


     }
  }

double LSMA(int myLPeriod, int myShift )
  {
   int myI;
   double myLengthvar;
   double mySum=0;

   myLengthvar = myLPeriod + 1;
   myLengthvar /= 3;

   for(myI = myLPeriod; myI >= 1  ; myI--)
     {
      mySum += ( myI - myLengthvar)*Open[myLPeriod-myI+myShift];
     }
   return( mySum*6/(myLPeriod*(myLPeriod+1)) );
  }  
  





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open prices of each bar


Indicator Curves created:


Implements a curve of type DRAW_ARROW

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: