MTF Waddah_Attar_Explosion





//+------------------------------------------------------------------+
//|                                       Waddah_Attar_Explosion.mq4 |
//|                              Copyright © 2006, Eng. Waddah Attar |
//|                                          waddahattar@hotmail.com |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2006, Eng. Waddah Attar"
#property  link      "waddahattar@hotmail.com"
//----
#property  indicator_separate_window
#property  indicator_buffers 4
//----
#property  indicator_color1  Green
#property  indicator_color2  Red
#property  indicator_color3  Gold
#property  indicator_color4  DodgerBlue
#property  indicator_minimum 0.0
#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 1
//----
extern int Minutes=0;
extern int  Sensetive=150;
extern int  DeadZonePip=15;
extern int  ExplosionPower=15;
extern int  TrendPower=15;
extern bool AlertWindow=false;
extern int  AlertCount=2;
extern bool AlertLong=false;
extern bool AlertShort=false;
extern bool AlertExitLong=false;
extern bool AlertExitShort=false;
//----
double   ind_buffer1[];
double   ind_buffer2[];
double   ind_buffer3[];
double   ind_buffer4[];
//----
int LastTime1=1;
int LastTime2=1;
int LastTime3=1;
int LastTime4=1;
int Status=0, PrevStatus=-1;
double bask, bbid;
string TimeFrameStr;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID);
   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID);
//----   
   SetIndexBuffer(0, ind_buffer1);
   SetIndexBuffer(1, ind_buffer2);
   SetIndexBuffer(2, ind_buffer3);
   SetIndexBuffer(3, ind_buffer4);
//----
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   switch(Minutes)
     {
      case 1 : TimeFrameStr=" Period M1 "; break;
      case 5 : TimeFrameStr=" Period M5 "; break;
      case 15 : TimeFrameStr=" Period M15 "; break;
      case 30 : TimeFrameStr=" Period M30 "; break;
      case 60 : TimeFrameStr=" Period H1 "; break;
      case 240 : TimeFrameStr=" Period H4 "; break;
      case 1440 : TimeFrameStr=" Period D1 "; break;
      case 10080 : TimeFrameStr=" Period W1 "; break;
      case 43200 : TimeFrameStr=" Period MN1 "; break;
      default : TimeFrameStr=" Current TimeFrame "; Minutes=0;
     }
//----   
   IndicatorShortName("Wad Att Exp: ("+TimeFrameStr+")[S-" + Sensetive +"][DZ-"+ DeadZonePip +"][EP-"+ ExplosionPower +"][TP-"+ TrendPower +"])");
   Comment("copyright waddahwttar@hotmail.com");
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double Trend1, Trend2, Explo1, Explo2, Dead;
   double pwrt, pwre;
   int    limit, i, counted_bars=IndicatorCounted();
//----
   if(counted_bars < 0)
      return(-1);
//----
   if(counted_bars > 0)
      counted_bars--;
   //limit = Bars - counted_bars;
   limit=Bars-counted_bars+Minutes/Period();
//----
   for(i=limit - 1; i>=0; i--)
     {
      Trend1=(iMACD(NULL, Minutes, 20, 40, 9, PRICE_CLOSE, MODE_MAIN, i) -
                iMACD(NULL, Minutes, 20, 40, 9, PRICE_CLOSE, MODE_MAIN, i + 1))*Sensetive;
      Trend2=(iMACD(NULL, Minutes, 20, 40, 9, PRICE_CLOSE, MODE_MAIN, i + 2) -
                iMACD(NULL, Minutes, 20, 40, 9, PRICE_CLOSE, MODE_MAIN, i + 3))*Sensetive;
      Explo1=(iBands(NULL, Minutes, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, i) -
                iBands(NULL, Minutes, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, i));
      Explo2=(iBands(NULL, Minutes, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, i + 1) -
                iBands(NULL, Minutes, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, i + 1));
      Dead=Point * DeadZonePip;
      ind_buffer1[i]=0;
      ind_buffer2[i]=0;
      ind_buffer3[i]=0;
      ind_buffer4[i]=0;
      if(Trend1>=0)
         ind_buffer1[i]=Trend1;
      if(Trend1 < 0)
         ind_buffer2[i]=(-1*Trend1);
      ind_buffer3[i]=Explo1;
      ind_buffer4[i]=Dead;
      if(i==0)
        {
         if(Trend1 > 0 && Trend1 > Explo1 && Trend1 > Dead &&
            Explo1 > Dead && Explo1 > Explo2 && Trend1 > Trend2 &&
            LastTime1 < AlertCount && AlertLong==true && Ask!=bask)
           {
            pwrt=100*(Trend1 - Trend2)/Trend1;
            pwre=100*(Explo1 - Explo2)/Explo1;
            bask=Ask;
            if(pwre>=ExplosionPower && pwrt>=TrendPower)
              {
               if(AlertWindow==true)
                 {
                  Alert(LastTime1, "- ", Symbol(), " - BUY ", " (",
                        DoubleToStr(bask, Digits) , ") Trend PWR " ,
                        DoubleToStr(pwrt,0), " - Exp PWR ", DoubleToStr(pwre, 0));
                 }
               else
                 {
                  Print(LastTime1, "- ", Symbol(), " - BUY ", " (",
                        DoubleToStr(bask, Digits), ") Trend PWR ",
                        DoubleToStr(pwrt, 0), " - Exp PWR ", DoubleToStr(pwre, 0));
                 }
               LastTime1++;
              }
            Status=1;
           }
         if(Trend1 < 0 && MathAbs(Trend1) > Explo1 && MathAbs(Trend1) > Dead &&
            Explo1 > Dead && Explo1 > Explo2 && MathAbs(Trend1) > MathAbs(Trend2) &&
            LastTime2 < AlertCount && AlertShort==true && Bid!=bbid)
           {
            pwrt=100*(MathAbs(Trend1) - MathAbs(Trend2))/MathAbs(Trend1);
            pwre=100*(Explo1 - Explo2)/Explo1;
            bbid=Bid;
            if(pwre>=ExplosionPower && pwrt>=TrendPower)
              {
               if(AlertWindow==true)
                 {
                  Alert(LastTime2, "- ", Symbol(), " - SELL ", " (",
                        DoubleToStr(bbid, Digits), ") Trend PWR ",
                        DoubleToStr(pwrt,0), " - Exp PWR ", DoubleToStr(pwre, 0));
                 }
               else
                 {
                  Print(LastTime2, "- ", Symbol(), " - SELL ", " (",
                        DoubleToStr(bbid, Digits), ") Trend PWR " ,
                        DoubleToStr(pwrt, 0), " - Exp PWR ", DoubleToStr(pwre, 0));
                 }
               LastTime2++;
              }
            Status=2;
           }
         if(Trend1 > 0 && Trend1 < Explo1 && Trend1 < Trend2 && Trend2 > Explo2 &&
            Trend1 > Dead && Explo1 > Dead && LastTime3<=AlertCount &&
            AlertExitLong==true && Bid!=bbid)
           {
            bbid=Bid;
            if(AlertWindow==true)
              {
               Alert(LastTime3, "- ", Symbol(), " - Exit BUY ", " ",
                     DoubleToStr(bbid, Digits));
              }
            else
              {
               Print(LastTime3, "- ", Symbol(), " - Exit BUY ", " ",
                     DoubleToStr(bbid, Digits));
              }
            Status=3;
            LastTime3++;
           }
         if(Trend1 < 0 && MathAbs(Trend1) < Explo1 &&
            MathAbs(Trend1) < MathAbs(Trend2) && MathAbs(Trend2) > Explo2 &&
            Trend1 > Dead && Explo1 > Dead && LastTime4<=AlertCount &&
            AlertExitShort==true && Ask!=bask)
           {
            bask=Ask;
            if(AlertWindow==true)
              {
               Alert(LastTime4, "- ", Symbol(), " - Exit SELL ", " ",
                     DoubleToStr(bask, Digits));
              }
            else
              {
               Print(LastTime4, "- ", Symbol(), " - Exit SELL ", " ",
                     DoubleToStr(bask, Digits));
              }
            Status=4;
            LastTime4++;
           }
         PrevStatus=Status;
        }
      if(Status!=PrevStatus)
        {
         LastTime1=1;
         LastTime2=1;
         LastTime3=1;
         LastTime4=1;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: