//+------------------------------------------------------------------+
//|		Copyright © 2010, JACreative |
//|														KGForexWorld.com        |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, KGForexWorld.com"
#property link      "http://www.kgforexworld.com"

#property indicator_separate_window
#property indicator_buffers 5

//#property indicator_level1 0

//#property indicator_levelcolor DarkSlateGray

extern	string	Readme1	= "#--- Periode Input",
						Readme2	= "5M 15M 30M 1H 4H 8H 16H",
						Readme3	= "1D 1W 2W 1MH 4MH 6MH 1Y",
						Periode	= "1W";

extern	double	SD			= 1;
extern	int		Jarak			= 5;


int		Per,CBar;

double	JA_BSB_O[],
			JA_BSB_C[],
			BB_UPPER[],
			BB_MIDDLE[],
			BB_LOWER[],
			JA[],
			control;

color		Warna;

int deinit() {
   ObjectDelete("infoW");
   Comment("");
   return (0);
}


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 = C'0,150,150';}
	else if(Periode == "2W")	{Per = MathCeil(14400/Period());		Warna = Maroon;}
	else if(Periode == "1W")	{Per = MathCeil(7200/Period());		Warna = C'150,0,150';}
	else if(Periode == "1D")	{Per = MathCeil(1440/Period());		Warna = C'0,60,0';}
	else if(Periode == "16H")	{Per = MathCeil(960/Period());		Warna = Coral;}
	else if(Periode == "8H")	{Per = MathCeil(480/Period());		Warna = C'150,150,0';}
	else if(Periode == "4H")	{Per = MathCeil(240/Period());		Warna = C'25,60,160';}
	else if(Periode == "1H")	{Per = MathCeil(60/Period());			Warna = Pink;}
	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;}

	SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,White);
	SetIndexBuffer(0,JA_BSB_O);
	SetIndexLabel(0,"BSB_O"+Periode);
	
	SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,MediumSlateBlue);
	SetIndexBuffer(1,JA_BSB_C);
	SetIndexLabel(1,"BSB_C"+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);
	
   return(0);
}

int start(){ 
   int      counted_bars=IndicatorCounted();
   int      limit;
	double	TMP;
	double	prev,current,HI,LOW,BUYERSELLER;
   
   if(counted_bars < 0)	return(-1);
   if(counted_bars > 0)	counted_bars--;

	limit	= Bars-counted_bars;

	if((CBar!=0) && (limit>=CBar))
		limit=CBar;
		
   for(int i=0; i< limit; i++){
      HI				= High[iHighest(NULL,0, MODE_HIGH, Per, i)];
   	LOW			= Low[iLowest(NULL, 0, MODE_LOW, Per, i)];
   	BUYERSELLER	= (HI+LOW)/2;
   	JA_BSB_O[i]	= (Open[i] - BUYERSELLER)/Point;
		JA_BSB_C[i]	= (Close[i] - BUYERSELLER)/Point;
		
		if (i==1)  
		  double	bsb=BUYERSELLER;
	   
		
   }
     
	for(i=limit-1; i>=0; i--){
		BB_UPPER[i]		= iBandsOnArray(JA_BSB_C,0,Per,SD,0,MODE_UPPER,i);
		BB_MIDDLE[i]	= iBandsOnArray(JA_BSB_C,0,Per,0,0,MODE_LOWER,i);
		BB_LOWER[i]		= iBandsOnArray(JA_BSB_C,0,Per,SD,0,MODE_LOWER,i);

/*
		if(0 <= JA[i]){
			JA_BSB_1[i] = JA[i];
			JA_BSB_2[i] = 0.0;
		}
		else{
			JA_BSB_1[i] = 0.0;
			JA_BSB_2[i] = JA[i];
		}

		if(BB_MIDDLE[i] <= JA[i]){
			JA_BSB_1[i] = JA[i];
			JA_BSB_2[i] = 0.0;
		}
		else{
			JA_BSB_1[i] = 0.0;
			JA_BSB_2[i] = JA[i];
		}
*/ if (i==1)
	 double	sma=BB_MIDDLE[1];
	   
		
	
	}
	  	control= (bsb)+ (sma*Point);
	  	
	  	
IndicatorShortName("BSB MACD ("+Periode+")  [BS="+DoubleToStr(bsb,Digits)+"]  [MA="+DoubleToStr(sma,Digits)+"]  [CON="+DoubleToStr(control,Digits)+"]  ");
	
	/*
	   ObjectDelete("info");
      ObjectCreate("info", OBJ_LABEL, 0, 0, 0);
      ObjectSet("info", OBJPROP_CORNER, 0);
      ObjectSet("info", OBJPROP_XDISTANCE, 600);
      ObjectSet("info", OBJPROP_YDISTANCE, 50);
      ObjectSet("info", OBJPROP_COLOR, LimeGreen);
      ObjectSetText("info", "TES", 9, "Arial Bold", LimeGreen);
  */
      
   string labelz = "infoW";
   //ObjectDelete(labelz);
   ObjectCreate( labelz, OBJ_ARROW, 0, Time[0]+(Period()*60*Jarak), 0 );
   ObjectSet( labelz, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
   ObjectSet( labelz, OBJPROP_COLOR, Fuchsia);
   ObjectSet( labelz, OBJPROP_TIME1, Time[0]+(Period()*60*Jarak));
   ObjectSet( labelz, OBJPROP_PRICE1, control);
   ObjectSetText(labelz, labelz, 7, "Times New Roman", Fuchsia);
	
   return(0); 
}