//+------------------------------------------------------------------+ //| eSignal.mq4 | //| Copyright © 2007, Hartono Setiono | //| http://www.mitrakom.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Hartono Setiono" #property link "http://www.mitrakom.com" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_width1 4 #property indicator_color2 Lime #property indicator_width2 4 #property indicator_color3 Blue #property indicator_width3 4 //---- input parameters extern int TimeFrame=0; extern int EMA_Period=13; extern int MACD_FastPeriod=12; extern int MACD_SlowPeriod=26; extern int MACD_SignalPeriod=9; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); //SetIndexArrow(0,110); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_HISTOGRAM); //SetIndexArrow(1,110); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_HISTOGRAM); //SetIndexArrow(2,110); SetIndexBuffer(2,ExtMapBuffer3); switch(TimeFrame) { case 1 : short_name="Period_M1"; break; case 5 : short_name="Period_M5"; break; case 15 : short_name="Period_M15"; break; case 30 : short_name="Period_M30"; break; case 60 : short_name="Period_H1"; break; case 240 : short_name="Period_H4"; break; case 1440 : short_name="Period_D1"; break; case 10080 : short_name="Period_W1"; break; case 43200 : short_name="Period_MN1"; break; default : {short_name="Current Timeframe"; TimeFrame=0;} } short_name="Impulse Indicator("+short_name+", "+EMA_Period+":"+MACD_FastPeriod+","+MACD_SlowPeriod+","+MACD_SignalPeriod+")"; IndicatorShortName(short_name); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); SetIndexLabel(3,NULL); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,limit,y=0,counted_bars=IndicatorCounted(); double ema1, main1, signal1, ema0, main0, signal0, macd1, macd0; limit=Bars-counted_bars; for(i=0,y=0;iema1 && macd0>macd1) //both up { ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=1; ExtMapBuffer3[i]=0; } else //otherwise { ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=0; ExtMapBuffer3[i]=1; } } return(0); } //+------------------------------------------------------------------+