Navigation´╝ÜHome > Content >

DECEMA_v1.mq4

Time: 2015-06-06 | Download file:DECEMA_v1.mq4

//+------------------------------------------------------------------+
//|                                                       DECEMA.mq4 |
//|                                         Developed by Coders Guru |
//|                                            http://www.xpworx.com |
//|                         
//|                         Revised by IgorAD,igorad2003@yahoo.co.uk |   
//|                                        http://www.forex-tsd.com/ |                                      
//+------------------------------------------------------------------+
#property link      "http://www.xpworx.com"
//----
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- 
extern   int      MA_Period                 =15;
extern   int      MA_Price                  =PRICE_CLOSE;
//----
double DrawEMA[];
double EMA1, EMA2, EMA3, EMA4, EMA5, EMA6, EMA7, EMA8, EMA9, EMA10;
int time2;
double bEMA1, bEMA2, bEMA3, bEMA4, bEMA5, bEMA6, bEMA7, bEMA8, bEMA9, bEMA10;
double alfa;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2);
   SetIndexBuffer(0,DrawEMA);
   string short_name="DECEMA("+MA_Period+")";
   IndicatorShortName(short_name);
   SetIndexDrawBegin(0,10*MA_Period);
   alfa=2.0/(1.0+MA_Period);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   int limit,MaxBar;
   int counted_bars=IndicatorCounted();
   if(Bars-1 < MA_Period)return(0);
   if (counted_bars<0) return(-1);
   if (counted_bars>0) counted_bars--;
//----
   MaxBar=Bars-1-MA_Period;
   limit =Bars-counted_bars-1;
//----
   if (limit>MaxBar)
     {
      for(int shift=limit;shift>=MaxBar;shift--)
         DrawEMA[Bars-shift]=0.0;
      limit=MaxBar;
     }
   int Tnew=Time[limit+1];
   if (limittime2)Print("Error1");
         else Print("Error2");
         return(-1);
        }
   for(shift=limit; shift>=0; shift--)
     {
      if(shift==1)
         if(((limit==1)&&(time2!=Time[2])) || (limit > 1))
           {
            time2=Time[2];
            bEMA1=EMA1;
            bEMA2=EMA2;
            bEMA3=EMA3;
            bEMA4=EMA4;
            bEMA5=EMA5;
            bEMA6=EMA6;
            bEMA7=EMA7;
            bEMA8=EMA8;
            bEMA9=EMA9;
            bEMA10=EMA10;
           }
      EMA1=alfa*iMA(NULL,0,1,0,MODE_SMA,MA_Price,shift) + (1-alfa)*EMA1;
      EMA2=alfa*EMA1 + (1-alfa)*EMA2;
      EMA3=alfa*EMA2 + (1-alfa)*EMA3;
      EMA4=alfa*EMA3 + (1-alfa)*EMA4;
      EMA5=alfa*EMA4 + (1-alfa)*EMA5;
      EMA6=alfa*EMA5 + (1-alfa)*EMA6;
      EMA7=alfa*EMA6 + (1-alfa)*EMA7;
      EMA8=alfa*EMA7 + (1-alfa)*EMA8;
      EMA9=alfa*EMA8 + (1-alfa)*EMA9;
      EMA10= alfa*EMA9 + (1-alfa)*EMA10;
      DrawEMA[shift]=10*EMA1-45*EMA2+120*EMA3-210*EMA4+252*EMA5-210*EMA6+120*EMA7-45*EMA8+10*EMA9-EMA10;
     }
   return(0);
  }
//+------------------------------------------------------------------+

Recommend