//+------------------------------------------------------------------+
//|                                                  5StochsMean.mq4 |
//|                 Copyright © 1.09.2006, MetaQuotes Software Corp. |
//|                                                perky_z@yahoo.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      ""

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_level1 23.6
#property indicator_level2 76.4
#property indicator_level3 50
#property indicator_levelcolor Gray
#property indicator_minimum 0
#property indicator_maximum 100

extern int Period_MIN = 15;
extern int Step = 10;
extern int Slowing = 20;
extern int smoothing = 15;
extern int prevbars = 100;
//---- input parameters
double stok1, stok2, stok3, stok4, stok5, mov, stoksmoothed;
int shift, loopbegin;
bool first = true;
//---- buffers
double TrendBuffer[];
double LoBuffer[];

double Period1,Period2,Period3,Period4,Period5,Period6,Period7;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicator buffers
    SetIndexBuffer(0, TrendBuffer);
    SetIndexBuffer(1, LoBuffer);
//----   
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID,1);
    SetIndexStyle(1, DRAW_LINE, STYLE_DASH, 0);
//---- name for DataWindow and indicator subwindow label
    IndicatorShortName("5StochsMean" + "(" + Period_MIN + ", "+ Step + ", "+ Slowing +")");
    SetIndexLabel( 0, "Main");
    SetIndexLabel( 1, "Signal");
//----
 
      Period1 = Period_MIN;
      Period2 = Period_MIN + Step;
      Period3 = Period_MIN + Step * 2;
      Period4 = Period_MIN + Step * 3;
      Period5 = Period_MIN + Step * 4;
      
    return(0);
  }
//+------------------------------------------------------------------+
//|  Zero Lag Stocs                                                  |
//+------------------------------------------------------------------+
int start()
  {
   // initial checkings
   // check for additional bars loading or total reloading
   if(Bars < prevbars)  
       return(0);      // not enough bars for counting
   int counted_bars = IndicatorCounted();
   if(counted_bars > 0) 
       counted_bars--;
   int limit = Bars - counted_bars;
// current bar is to be recounted too
    for(shift = limit; shift >= 0 ; shift--)
	     {
	   
        stok1 = iStochastic(NULL, 0, Period1,3,Slowing, MODE_SMA, NULL, MODE_MAIN, shift)*0.20;
        stok2 = iStochastic(NULL, 0, Period2,3,Slowing, MODE_SMA, NULL, MODE_MAIN, shift)*0.20;
        stok3 = iStochastic(NULL, 0, Period3,3,Slowing, MODE_SMA, NULL, MODE_MAIN, shift)*0.20;
        stok4 = iStochastic(NULL, 0, Period4,3,Slowing, MODE_SMA, NULL, MODE_MAIN, shift)*0.20;
        stok5 = iStochastic(NULL, 0, Period5,3,Slowing, MODE_SMA, NULL, MODE_MAIN, shift)*0.20;
        mov   = stok1 + stok2 + stok3 + stok4 + stok5;
        stoksmoothed = mov / smoothing + LoBuffer[shift+1]*(smoothing - 1) / smoothing;
	       TrendBuffer[shift] = mov;
	       LoBuffer[shift] =	stoksmoothed;
	     }
	   return(0);
	 }
//+------------------------------------------------------------------+
	    

