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