Elder_Impulse_System_v1





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