//+--------------------------------------------------------------------------------------------+ //| Elder_Impulse_System.mq4 | //| Copyright © 2007, http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ | //| http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ | //+--------------------------------------------------------------------------------------------+ #property copyright "Copyright © 2007, http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/" #property link "http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/" // I used code from Macd_Correct by David W. Thomas and eSignal code supplied by bentleybrian <bentleybrian@yahoo.com> // to build this indicator . Built by transport_david . #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 1 #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Blue #property indicator_color3 Red extern int ShowBars = 5000; //---- buffers double Impulse_Up[]; double Neutral[]; double Impulse_Down[]; double MACDLineBuffer[]; double SignalLineBuffer[]; double HistogramBuffer[]; //---- variables double alpha = 0; double alpha_1 = 0; /* var myStudy1=null; var myStudy2=null; var myStudy3=null; function preMain() { setStudyTitle("Impulse Indicator"); setCursorLabelName("Impulse", 0); setCursorLabelName("MACDHist",1); setPriceStudy(true); } function main() { var myStudy1 = ema(13); var myStudy2 = new macdHist(12,26,9); var myStudy3 = ema(13); //Impulse Up if ((myStudy1.getValue(0) > myStudy1.getValue(-1)) && (myStudy2.getValue(0) > myStudy2.getValue(-1))) { setPriceBarColor(Color.green); } //Impulse Down else if ((myStudy1.getValue(0) < myStudy1.getValue(-1)) && (myStudy2.getValue(0) < myStudy2.getValue(-1)) ) { setPriceBarColor(Color.red); } //Neutral else { setPriceBarColor(Color.blue); } */ //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(6); SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,4); SetIndexEmptyValue(0,0.0); SetIndexBuffer(0,Impulse_Up); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4); SetIndexEmptyValue(1,0.0); SetIndexBuffer(1,Neutral); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,4); SetIndexEmptyValue(2,0.0); SetIndexBuffer(2,Impulse_Down); SetIndexEmptyValue(3,0.0); SetIndexBuffer(3,MACDLineBuffer); SetIndexEmptyValue(4,0.0); SetIndexBuffer(4,SignalLineBuffer); SetIndexEmptyValue(5,0.0); SetIndexBuffer(5,HistogramBuffer); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- alpha = 2.0 / (9 + 1.0); alpha_1 = 1.0 - alpha; int shift = ShowBars; if (ShowBars > Bars) ShowBars = Bars; for ( shift = ShowBars; shift >= 0; shift-- ) { double myStudy1_value0 = iMA(Symbol(),0,13,0,MODE_EMA,PRICE_CLOSE,shift); double myStudy1_value1 = iMA(Symbol(),0,13,0,MODE_EMA,PRICE_CLOSE,shift+1); MACDLineBuffer[shift] = (iMA(Symbol(),0,12,0,MODE_EMA,PRICE_CLOSE,shift) - iMA(Symbol(),0,26,0,MODE_EMA,PRICE_CLOSE,shift)); SignalLineBuffer[shift] = (alpha*MACDLineBuffer[shift]) + (alpha_1*SignalLineBuffer[shift+1]); double myStudy2_value0 = MACDLineBuffer[shift] - SignalLineBuffer[shift]; double myStudy2_value1 = MACDLineBuffer[shift+1] - SignalLineBuffer[shift+1]; if ( (myStudy1_value0 > myStudy1_value1) && (myStudy2_value0 > myStudy2_value1) ) { Impulse_Up[shift] = 1; } else { Impulse_Up[shift] = 0.0; } if ( (myStudy1_value0 < myStudy1_value1) && (myStudy2_value0 < myStudy2_value1) ) { Impulse_Down[shift] = 1; } else { Impulse_Down[shift] = 0.0; } if ( (Impulse_Up[shift] == 0.0) && (Impulse_Down[shift] == 0.0) ) { Neutral[shift] = 1; } else { Neutral[shift] = 0.0; } } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: