MA_PriceCcross2BcloseD





//+------------------------------------------------------------------+
//|                                                            MA_xP |
//+------------------------------------------------------------------+
//2008fxtsd    ki
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 3

#property indicator_color1 DarkSlateGray
#property indicator_color2 OrangeRed
#property indicator_color3 DeepSkyBlue



extern int ma_period =9;
extern int ma_method =1;
extern int ma_price  =0;

extern int breakBars =1;
extern bool drawLine = false;

double Buffer1[];
double Buffer2[];
double Buffer3[];



//+---

int init()
  {

  SetIndexBuffer(0,Buffer1); SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(1,Buffer2);  
  SetIndexBuffer(2,Buffer3); 
   
   if (drawLine)  {SetIndexStyle(1,DRAW_LINE);SetIndexStyle(2,DRAW_LINE);}
   else           {
   SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,158); SetIndexEmptyValue (1,EMPTY_VALUE);
   SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,158); SetIndexEmptyValue (2,EMPTY_VALUE);
                   }


   return(0);
  }

//+----


int start()
{
   int i,limit;
   int counted_bars=IndicatorCounted();

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;

   limit = Bars-counted_bars;


   for(i=limit; i>=0; i--)
   {

   double MA =iMA(NULL,0,ma_period,0,ma_method,ma_price,i) ;
   double MA1=iMA(NULL,0,ma_period,0,ma_method,ma_price,i+1) ;
   double MA2=iMA(NULL,0,ma_period,0,ma_method,ma_price,i+2) ;

   Buffer1[i] = MA;   
   Buffer2[i] = EMPTY_VALUE; 
   Buffer3[i] = EMPTY_VALUE;

      
      int BreakBars=MathAbs(breakBars);
      
      if (BreakBars==0)
      {
      if (Close[i]<MA) Buffer2[i]= MA;   
      if (Close[i]>MA) Buffer3[i]= MA;
      }

      if (BreakBars==1)
      {   
      if (Close[i]<MA &&Close[i+1]<MA1) Buffer2[i]= MA;   
      if (Close[i]>MA &&Close[i+1]>MA1) Buffer3[i]= MA;
      }                     

      if (BreakBars==2)
      {   
      if (Close[i]<MA &&Close[i+1]<MA1 &&Close[i+2]<MA2) Buffer2[i]= MA;   
      if (Close[i]<MA &&Close[i+1]<MA1 &&Close[i+2]>MA2) Buffer3[i]= MA;
      }                     

      if (BreakBars>=2)BreakBars=2;


   }
 
  
   return(0);
}
//+---------------



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE

Implements a curve of type DRAW_ARROW

Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: