//+------------------------------------------------------------------+
//|                                  KG_Potentials_Accumulations.mq4 |
//|                     Copyright imfxtrdr © 2011, KGForexWorld.com. |
//|                                     Modified from KG_AT_MACD.mq4 |
//+------------------------------------------------------------------+

#property copyright "Copyright imfxtrdr © 2011, KGForexWorld.com"
#property link      "http://www.kgforexworld.com/"

#property indicator_separate_window
#property indicator_buffers 6

#property indicator_level1 0

#property indicator_levelcolor DarkGoldenrod

extern	string	Readme1	= "#--- Periode Input",
						Readme2	= "5M 15M 30M 1H 4H 8H 16H",
						Readme3	= "1D 1W 2W 1MH 4MH 6MH 1Y",
						Periode	= "1D";
extern bool LINE = TRUE;
extern	double	SD			= 1;
extern int MODE_MA         = 0;

int		Per,CBar;
string tanda,tanda1;

double	HP_ACC[],
         KG_Hid_Pot[],
			BB_UPPER[],
			BB_UPPER1[],
			BB_MIDDLE[],
			BB_LOWER[],
			BB_LOWER1[],
			LSMA[];

color		Warna;

int init(){
	

	if(GlobalVariableCheck("CBar"))
		CBar = GlobalVariableGet("CBar");
	else	
		GlobalVariableSet("CBar",0);


	if(Periode == "1Y")			{Per = MathCeil(345600/Period());	Warna = RosyBrown;}
	else if(Periode == "6MH")	{Per = MathCeil(172800/Period());  	Warna	= YellowGreen;}
	else if(Periode == "4MH")	{Per = MathCeil(115200/Period());	Warna = DarkSlateGray;}
	else if(Periode == "1MH")	{Per = MathCeil(28800/Period());		Warna = Aqua;}
	else if(Periode == "2W")	{Per = MathCeil(14400/Period());		Warna = Maroon;}
	else if(Periode == "1W")	{Per = MathCeil(7200/Period());		Warna = Magenta;}
	else if(Periode == "1D")	{Per = MathCeil(1440/Period());		Warna = Lime;}
	else if(Periode == "16H")	{Per = MathCeil(960/Period());		Warna = Coral;}
	else if(Periode == "8H")	{Per = MathCeil(480/Period());		Warna = Yellow;}
	else if(Periode == "4H")	{Per = MathCeil(240/Period());		Warna = MediumBlue;}
	else if(Periode == "3H")	{Per = MathCeil(180/Period());		Warna = Green;}
	else if(Periode == "1H")	{Per = MathCeil(60/Period());			Warna = Red;}
	else if(Periode == "30M")	{Per = MathCeil(30/Period());			Warna = DarkViolet;}
	else if(Periode == "15M")	{Per = MathCeil(15/Period());			Warna = White;}
	else if(Periode == "5M")	{Per = MathCeil(5/Period());			Warna = Peru;}
	else if(Periode == "1M")	{Per = MathCeil(1/Period());			Warna = DarkSlateGray;}


   
   SetIndexBuffer(0,HP_ACC);
	SetIndexLabel(0,"HP_ACC "+Periode);
	
	if (LINE == TRUE) {
      SetIndexStyle(0,DRAW_LINE,0,1,Silver);      
      } else {      
      SetIndexStyle(0,DRAW_HISTOGRAM,0,1,Silver); 
      }	
   
	SetIndexStyle(1,DRAW_NONE);
	SetIndexBuffer(1,KG_Hid_Pot);
	SetIndexLabel(1,"KG_Hid_Pot "+Periode);

	SetIndexStyle(2,DRAW_LINE,STYLE_DOT,1,Warna);
   SetIndexBuffer(2,BB_UPPER);
   SetIndexLabel(2,"BB_UPPER"+Periode);
	 
	SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,Warna);
   SetIndexBuffer(3,BB_MIDDLE);
   SetIndexLabel(3,"BB_MIDDLE"+Periode);
   
	SetIndexStyle(4,DRAW_LINE,STYLE_DOT,1,Warna);
	SetIndexBuffer(4,BB_LOWER);
	SetIndexLabel(4,"BB_LOWER"+Periode);
	
	SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,2,Warna);
	SetIndexBuffer(5,LSMA);
	SetIndexLabel(5,"LSMA"+Periode);

   return(0);
}

int start(){ 
   int      counted_bars=IndicatorCounted();
   int      limit;

   if(counted_bars < 0)	return(-1);
   if(counted_bars > 0)	counted_bars--;

	limit	= Bars-counted_bars;

	if((CBar!=0) && (limit>=CBar)) limit=CBar;
	double HPPrev,HPNow;
	
	for(int i=limit; i>=0; i--){
      HPNow= ((Close[i]-Low[i])-(High[i]-Close[i]))/Point;
      HPPrev= ((Close[i+1]-Low[i+1])-(High[i+1]-Close[i+1]))/Point;
      KG_Hid_Pot[i]	= (HPNow+HPPrev);
   }
		
   for(i=limit; i>=0; i--){
   	HP_ACC[i]	= iMAOnArray(KG_Hid_Pot,Bars,Per,0,MODE_MA,i)*Per; 
   }
		
	for(i=limit-1; i>=0; i--){
		BB_UPPER[i]		= iBandsOnArray(HP_ACC,0,Per,SD,0,MODE_UPPER,i);
		BB_MIDDLE[i]	= iBandsOnArray(HP_ACC,0,Per,0,0,MODE_LOWER,i);
		BB_LOWER[i]		= iBandsOnArray(HP_ACC,0,Per,SD,0,MODE_LOWER,i);
		LSMA[i]	= 3*(iMAOnArray(HP_ACC,Bars,Per,0,MODE_LWMA,i))-2*(iMAOnArray(HP_ACC,Bars,Per,0,MODE_SMA,i));
	}

	IndicatorShortName("KG_POTENTIALS_ACC  ["+Periode+"], (in Pips) = ");

   return(0); 
}