impuls





//--------------------------------------------------------------------
// impuls.mq4 
//--------------------------------------------------------------- 1 --
#property copyright "Copyright © Roman Shiredchenko, 2009"
//--------------------------------------------------------------------
#property indicator_separate_window     // èíäèêàòîð ðèñóåòñÿ â îòäåëüíîì îêíå

#property  indicator_buffers 3          // êîë-âî áóôåðîâ äëÿ ðàñ÷åòà èíäèêàòîðà     
#property  indicator_color1  Gray       // çàïðåò íà ïðîäàæó ëèáî ïîêóïêó ñíÿò
#property  indicator_color2  Green      // çàïðåò íà èãðó íà ïîíèæåíèå 
#property  indicator_color3  Red        //  çàïðåò íà èãðó íà ïîâûøåíèå

//---- indicator parameters 
extern int History    =5000;            // êîë-âî áàðîâ ðàñ÷åòíîé èñòîðèè       
extern int Period_Ema=13;               // ïåðèîä ðàñ÷åòíîé åìà

extern int Period_Macd1=12;             // ïàðàìåòðû ðàñ÷åòà ìàñäè 
extern int Period_Macd2=26;
extern int Period_Macd3=9;
 
 
 
 
double     ExtBuffer0[];                // îïðåäåëåíèå ìàññèâîâ äëÿ èíäèêàòîðà - ãèñòîãðàììû
double     ExtBuffer1[];
double     ExtBuffer2[];
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init() 
  { 

   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);

   SetIndexBuffer(0,ExtBuffer0);
   SetIndexBuffer(1,ExtBuffer1);
   SetIndexBuffer(2,ExtBuffer2);

   IndicatorShortName("impuls");
//---- initialization done
   return(0);
  } 
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- TODO: add your code here 
    
//---- 
   return(0); 
  } 
//----------------------------------------------------------------

int start()                         // Ñïåöèàëüíàÿ ôóíêöèÿ start()
  {
//-----------------------------------------------------------------
  
   double
   EMA1,  EMA2, SumEMA;                  // 2 ÌÀ äëÿ ðàñ÷åòà çíà÷åíèé èíäèêàòîðà EMA
   double
   M_0, M_1, SumMacd ;                           // Çíà÷åíèå MAIN MACD íà 0 è 1 áàðàõ
   
//--------------------------------------------------------------- 4 --
                      
                             
   int
   i,                            // Èíäåêñ áàðà
   n,                            // Ôîðìàëüí. ïàðàìåòð(èíäåêñ áàðà)
   Counted_bars;                 // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ 

//-------------------------------------------------------------- 10 --
   Counted_bars=IndicatorCounted(); // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ 
   i=Bars-Counted_bars-1;           // Èíäåêñ ïåðâîãî íåïîñ÷èòàííîãî
   if (i>History-1)                 // Åñëè ìíîãî áàðîâ òî ..
      i=History-1;                  // ..ðàññ÷èòûâàòü çàäàííîå êîëè÷.
//-------------------------------------------------------------- 11 --
      ExtBuffer1[i] = 0;            // îáíóëåíèå çíà÷åíèé ìàññèâîâ ëèíèé èíäèêàòîðà
      ExtBuffer2[i] = 0;
      ExtBuffer0[i] = 0;
   while(i>=0)                      // Öèêë ïî íåïîñ÷èòàííûì áàðàì
     {
      //-------------------------------------------------------- 12 --
        
      EMA1=iMA(NULL,0,Period_Ema,0,MODE_EMA,PRICE_CLOSE,i); // Çíà÷åíèå  EÌÀ1 current
      EMA2=iMA(NULL,0,Period_Ema,0,MODE_EMA,PRICE_CLOSE,i+1); // Çíà÷åíèå  EÌÀ2  prev 
      SumEMA = 0;
      SumEMA = EMA1 - EMA2;          // âû÷èñëåíèå ðàçíîñòè åìà íà òåê. è ïðåäûäóùåì áàðàõ
           
      M_0=iMACD(NULL,0,Period_Macd1,Period_Macd2,Period_Macd3,PRICE_CLOSE,MODE_MAIN,i); // 
      M_1=iMACD(NULL,0,Period_Macd1,Period_Macd2,Period_Macd3,PRICE_CLOSE,MODE_MAIN,i+1); // 
      SumMacd=M_0-M_1;               // òîæå ñàìîå äëÿ ìàêäà
      
      ExtBuffer1[i] = 0;
      ExtBuffer2[i] = 0;
      ExtBuffer0[i] = 0;
      
       
      if (SumEMA>0 && SumMacd>0) ExtBuffer1[i] = 4; // åñëè è åìà è ìàñäè ðàñòóò, òî ðèñóé çåëåíóþ ëèíèþ ãèñòîãðàììû ðàâíóþ 4
      if (SumEMA<0 && SumMacd<0)      // åñëè åìà è ìàêäè óìåíüøàþòñÿ, òî ðèñóé êðàñíóþ ëèí ãèñòîãðàììû ðàâíóþ 2 
       { ExtBuffer2[i] = 2;
       } else
        ExtBuffer0[i] = 3;            // èíà÷å ðèñóé ñåðóþ ëèíèþ ãèñòîãðàììû èíäèêàòîðà èìïóëüñ
        
             
      //-------------------------------------------------------- 13 --
      i--;                          // Ðàñ÷¸ò èíäåêñà ñëåäóþùåãî áàðà
      //-------------------------------------------------------- 14 --
     }
   return;                          // Âûõîä èç ñïåö. ô-èè start()
  }
//-------------------------------------------------------------- 15 --



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_HISTOGRAM


Indicators Used:

Moving average indicator
MACD Histogram


Custom Indicators Used:

Order Management characteristics:

Other Features: