AO-Esp-MTF_v1.2





//+------------------------------------------------------------------+
//|                                              AO-Esp-MTF_v1.2.mq4 |
//|                                                          M.Ghods |
//|                                              ghods2004@yahoo.com |
//+------------------------------------------------------------------+
#property  copyright "gheymatha.com"
#property  link      "http://gheymatha.com/showpost.php?p=109626&postcount=26"

//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Black
#property  indicator_color2  Green
#property  indicator_color3  Red

extern int  Time_Frame = 30;
extern int  Fast_MA_Period = 5;
extern int  Fast_MA_Mode = 0;
extern int  Slow_MA_Period = 34;
extern int  Slow_MA_Mode = 0;

extern string  ______Mode_Description______ = "0=SMA ,1=EMA ,2=SMMA ,3=LWMA";
extern bool Plot_Dot = true;
extern int  Dot_Size = 10;
extern int  BarQty = 0;

//---- indicator buffers
double     ExtBuffer0[];
double     ExtBuffer1[];
double     ExtBuffer2[];
string TimeFrameStr;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   
   IndicatorDigits(Digits+1);
   SetIndexDrawBegin(0,Slow_MA_Period);
   SetIndexDrawBegin(1,Slow_MA_Period);
   SetIndexDrawBegin(2,Slow_MA_Period);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,ExtBuffer0);
   SetIndexBuffer(1,ExtBuffer1);
   SetIndexBuffer(2,ExtBuffer2);
//---- name for DataWindow and indicator subwindow label

   if(Time_Frame == 0) Time_Frame = Period();
   switch(Time_Frame)
   {
      case 1 : TimeFrameStr="1Min"; break;
      case 5 : TimeFrameStr="5Min"; break;
      case 15 : TimeFrameStr="15Min"; break;
      case 30 : TimeFrameStr="30Min"; break;
      case 60 : TimeFrameStr="1H"; break;
      case 240 : TimeFrameStr="4H"; break;
      case 1440 : TimeFrameStr="Daily"; break;
      case 10080 : TimeFrameStr="Weekly"; break;
      case 43200 : TimeFrameStr="Monthly"; break;
   } 

   IndicatorShortName("AO Esp. MTF ("+TimeFrameStr+")");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
  
int deinit()
  {
  if(Plot_Dot)
  {
   for(int i = ObjectsTotal() - 1; i >= 0; i--)
     {
       string label = ObjectName(i);
       if(StringSubstr(label, 0, 6) != "AO_Esp")
           continue;
       ObjectDelete(label);   
     }
   }
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int start()
  {
   int    limit , y=0 , i;
   int    counted_bars=IndicatorCounted();
   double prev,current;
   string objname ;
   double Range = 0 , AvgRange = 0;
   datetime TimeArray[];

   
   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),Time_Frame); 
if(Plot_Dot)
{
   for (int counter=0 ;counter<=5;counter++)
   {
      AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
   }
   Range=AvgRange/10;
}

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   if(BarQty == 0) BarQty = limit;
   
   for(i=0;i<BarQty;i++)
   {
      if (Time[i]<TimeArray[y]) y++; 
   
      ExtBuffer0[i]=iMA(NULL,Time_Frame,Fast_MA_Period,0,Fast_MA_Mode,PRICE_MEDIAN,y)-iMA(NULL,Time_Frame,Slow_MA_Period,0,Slow_MA_Mode,PRICE_MEDIAN,y);
   }
   bool up=true;
   for(i=BarQty-1; i>=0; i--)
     {
      current=ExtBuffer0[i];
      prev=ExtBuffer0[i+1];
      if(current>prev) up=true;
      if(current<prev) up=false;
      
      if(!up)
        {
         ExtBuffer2[i]=current;
         ExtBuffer1[i]=0.0;

         if(Plot_Dot)
         {
         objname = "AO_Esp_" + TimeFrameStr + "#" + TimeToStr(Time[i]);
         ObjectCreate(objname , OBJ_TEXT , 0 , Time[i] , High[i] + Range*1.5);
         ObjectSetText(objname , CharToStr(159) , Dot_Size , "Wingdings" , Red);
         }
        }
      else
        {
         ExtBuffer1[i]=current;
         ExtBuffer2[i]=0.0;
         
         if(Plot_Dot)
         {
         objname = "AO_Esp_" + TimeFrameStr + "#" + TimeToStr(Time[i]);
         ObjectCreate(objname , OBJ_TEXT , 0 , Time[i] , Low[i]-Range);
         ObjectSetText(objname , CharToStr(159) , Dot_Size , "Wingdings" , Green);
         }
        }
     }
     
//---- done
   return(0);
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_NONE
Implements a curve of type DRAW_HISTOGRAM


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: