MA_Filter_4MA_FlatTrend_direct_iCust





//+------------------------------------------------------------------+
//|                                                    4MAs Trend.mq4|
//|                                        Flat Trend                |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//2009 fxtsd mod   icust   
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 Gold

//---- input parameters
int Minutes=0;
extern int MA1_Period=7;
extern int MA1_Mode=8;
extern int MA2_Period=9;
extern int MA2_Mode=8;
extern int MA3_Period=13;
extern int MA3_Mode=8;
extern int MA4_Period=21;
extern int MA4_Mode=8;

extern string    _  = "iCustom ind parameters";
int TimeFrame           =  0;
// int MA_Period        = 14;
extern int Price        =  0;
extern int MA_Shift     =  0;
//extern int Color_Mode =  0;
//extern int MA_Method  =  9;

extern string note_MA_Method ="0SMA 1EMA 2WilderSMMA 3LWMA ";
extern string ______  ="4SineWMA 5TriMA 6LSMA 7SMMA ";
extern string _____   ="8HMA 9ZeroLagEMA 10DEMA 11T3";
extern string ____    ="12iTrendJEhlers 13Median ";
extern string ___     ="14GeoMean 15REMA 16ILRS";
extern string __      ="17IE/2 18TriMAgen 19VWMA ";

//extern int MA5_Period=15;
//extern int MA5_Mode=3;
//extern int MA6_Period=21;
//extern int MA6_Mode=3;



extern bool DirectionFilterOn  = true;



//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
string TimeFrameStr;
double MA1,MA2,MA3,MA4,MA5,MA6;
double MA1p,MA2p,MA3p,MA4p,MA5p,MA6p;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
  SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,5,LimeGreen);
  SetIndexBuffer(0,ExtMapBuffer1);
  SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,5, Red);
  SetIndexBuffer(1,ExtMapBuffer2);
  SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,5, Gold);
  SetIndexBuffer(2,ExtMapBuffer3);
  
  for(int i=0; i<=indicator_buffers; i++)  SetIndexLabel(i,NULL);

switch(Minutes)
   {
      case 1 : TimeFrameStr="M1"; break;
      case 5 : TimeFrameStr="M5"; break;
      case 15 : TimeFrameStr="M15"; break;
      case 30 : TimeFrameStr="M30"; break;
      case 60 : TimeFrameStr="H1"; break;
      case 240 : TimeFrameStr="H4"; break;
      case 1440 : TimeFrameStr="D1"; break;
      case 10080 : TimeFrameStr="W1"; break;
      case 43200 : TimeFrameStr="MN"; break;
      default : TimeFrameStr="TF0"; Minutes=0;
   }
   
   if (DirectionFilterOn)string name = " Direction Filter On "; else name = "";
   
   IndicatorShortName("Flat Trend w 4MA ["+TimeFrameStr+"] "+name);  

 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
 {

   int i,limit, 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--)

   {
   
   MA1=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA1_Period,Price,MA_Shift,0,MA1_Mode,0,i);
   MA2=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA2_Period,Price,MA_Shift,0,MA2_Mode,0,i);
   MA3=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA3_Period,Price,MA_Shift,0,MA3_Mode,0,i);
   MA4=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA4_Period,Price,MA_Shift,0,MA4_Mode,0,i);
 


      ExtMapBuffer1[i]=0.0;   ExtMapBuffer2[i]=0.0;   ExtMapBuffer3[i]=0.0;


   if (DirectionFilterOn) 
      {
      
   MA1p=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA1_Period,Price,MA_Shift,0,MA1_Mode,0,i+1);
   MA2p=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA2_Period,Price,MA_Shift,0,MA2_Mode,0,i+1);
   MA3p=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA3_Period,Price,MA_Shift,0,MA3_Mode,0,i+1);
   MA4p=iCustom(NULL,0,"MA_AllAverages_v2.2_mtf",0,MA4_Period,Price,MA_Shift,0,MA4_Mode,0,i+1);


      
      
      if(MA1>MA1p&&MA2>MA2p&&MA3>MA3p&&MA4>MA4p) { ExtMapBuffer1[i]=1;  ExtMapBuffer2[i]=0.0;  ExtMapBuffer3[i]=0.0;   }
      else
      if(MA1<MA1p&&MA2<MA2p&&MA3<MA3p&&MA4<MA4p) { ExtMapBuffer2[i]=1;  ExtMapBuffer3[i]=0.0;  ExtMapBuffer1[i]=0.0;   }
      
      else                                       { ExtMapBuffer3[i]=1;  ExtMapBuffer1[i]=0.0;  ExtMapBuffer2[i]=0.0;   }         
      
      }
   else   
      {
               
      if       (MA1>MA2 &&MA2>MA3 &&MA3>MA4)     { ExtMapBuffer1[i]=1;  ExtMapBuffer2[i]=0.0;  ExtMapBuffer3[i]=0.0;   }
      else
      if       (MA1<MA2 &&MA2<MA3 &&MA3<MA4)     { ExtMapBuffer2[i]=1;  ExtMapBuffer3[i]=0.0;  ExtMapBuffer1[i]=0.0;   }
      
      else                                       { ExtMapBuffer3[i]=1;  ExtMapBuffer1[i]=0.0;  ExtMapBuffer2[i]=0.0;   }         
      
      }
  
  
  
  }
   

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



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_HISTOGRAM


Indicators Used:




Custom Indicators Used:
MA_AllAverages_v2.2_mtf

Order Management characteristics:

Other Features: