//+------------------------------------------------------------------+ //| 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: