//+------------------------------------------------------------------+
//|   #SpudFibo.mq4 Kill56
//+------------------------------------------------------------------+


#property  indicator_chart_window

#property indicator_buffers 3

extern int TimeFrame =60;
extern int Fibo_Num = 12345;
extern string note1 = "Fibonacci colors";
extern color UpperFiboColor = Navy;
extern color MainFiboColor = RoyalBlue;
extern color LowerFiboColor = DodgerBlue;
extern string note2 = "Draw main Fibonacci lines?";
extern bool  InnerFibs = true;

double HiPrice, LoPrice, Range;
datetime StartTime;

int init()
{
   return(0);
}

int deinit()
{
   ObjectDelete("FiboUp"+Fibo_Num+"");
   ObjectDelete("FiboDn"+Fibo_Num+"");
   ObjectDelete("FiboIn"+Fibo_Num+"");
    ObjectDelete("Fibo"+Fibo_Num+""); ObjectDelete("Fibo1"+Fibo_Num+"");
   return(0);
}


//+------------------------------------------------------------------+
//| Draw Fibo
//+------------------------------------------------------------------+

int DrawFibo()
{
	  string TF="",TF2=""; 
   if(TimeFrame==1){TF="M1";}
   if(TimeFrame==5){TF="M5";}
   if(TimeFrame==15){TF="M15";}
   if(TimeFrame==30){TF="M30";}
   if(TimeFrame==60){TF="H1";}
   if(TimeFrame==240){TF="H4";}
   if(TimeFrame==1440){TF="Daily";}
   if(TimeFrame==10080){TF="Weekly";}
   if(TimeFrame==43200){TF="Monthly";}
   
      
   if(TimeFrame==60){TF2="1 Hourly";}
   if(TimeFrame==240){TF2="4 Hourly";}
   if(TimeFrame==1440){TF2="IntraDay";}
   if(TimeFrame==10080){TF2="IntraWeek";}
   if(TimeFrame==43200){TF2="IntraMonth";}
	
	
	if(ObjectFind("FiboUp"+Fibo_Num+"") == -1)
		ObjectCreate("FiboUp"+Fibo_Num+"",OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
	else
	{
		ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_TIME2, StartTime);
		ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_TIME1, StartTime);
		ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_PRICE1,HiPrice+Range);
		ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_PRICE2,HiPrice);
	}
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_LEVELCOLOR,UpperFiboColor);
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIBOLEVELS,13);
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",0,""+TF+"(100.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+1,0.236);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",1,""+TF+"(127.2%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+2,0.382);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",2,""+TF+"(141.4%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",3,""+TF+"(150.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+4,0.618);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",4,""+TF+"(161.8%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+5,0.786);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",5,""+TF+"(178.6%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",6,""+TF+"(200.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+7,1.272);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",7,""+TF+"(223.6%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+8,1.500);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",8,""+TF+"(250.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+9,1.618);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",9,""+TF+"(261.8%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+10,2.000);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",10,""+TF+"(300.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+11,2.500);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",11,""+TF+"(350.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+12,3.000);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",12,""+TF+"(400.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+13,3.500);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",13,""+TF+"(450.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+14,4.000);	ObjectSetFiboDescription("FiboUp"+Fibo_Num+"",14,""+TF+"(500.0%) -  %$"); 
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_RAY,true);
   ObjectSet("FiboUp"+Fibo_Num+"",OBJPROP_BACK,true);

	if(ObjectFind("FiboDn"+Fibo_Num+"") == -1)
		ObjectCreate("FiboDn"+Fibo_Num+"",OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);
	else
	{
		ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_TIME2, StartTime);
		ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_TIME1, StartTime);
		ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_PRICE1,LoPrice-Range);
		ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_PRICE2,LoPrice);
	}
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_LEVELCOLOR,LowerFiboColor); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIBOLEVELS,19);
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",0,""+TF+"(0.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+1,0.236);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",1,""+TF+"(-27.2%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+2,0.382);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",2,""+TF+"(-41.4%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",3,""+TF+"(-50.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+4,0.618);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",4,""+TF+"(-61.8%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+5,0.764);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",5,""+TF+"(-78.6%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",6,""+TF+"(-100.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+7,1.236);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",7,""+TF+"(-127.2%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+8,1.382);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",8,""+TF+"(-141.4%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+9,1.500);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",9,""+TF+"(-150.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+10,1.618);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+10,"(-161.8%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+11,1.764);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+11,"(-178.6%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+12,2.000);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+12,"(-200.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+13,2.500);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+13,"(-250.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+14,3.000);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+14,"(-300.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+15,3.500);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+15,"(-350.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+16,4.000);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+16,"(-400.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+17,4.500);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+17,"(-450.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+18,5.000);	ObjectSetFiboDescription("FiboDn"+Fibo_Num+"",""+TF+18,"(-500.0%) -  %$"); 
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_RAY,true);
   ObjectSet("FiboDn"+Fibo_Num+"",OBJPROP_BACK,true);

	if(InnerFibs)
	{
		if(ObjectFind("FiboIn"+Fibo_Num+"") == -1)
			ObjectCreate("FiboIn"+Fibo_Num+"",OBJ_FIBO,0,StartTime,HiPrice,StartTime+TimeFrame*60,LoPrice);
		else
		{
			ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_TIME2, StartTime);
			ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_TIME1, StartTime+TimeFrame*60);
			ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_PRICE1,HiPrice);
			ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_PRICE2,LoPrice);
		}
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_LEVELCOLOR,MainFiboColor); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIBOLEVELS,7);
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",0,""+TF+" Yesterday LOW     (0.0) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+1,0.236);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",1,""+TF+" (23.6) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+2,0.382);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",2,""+TF+" (38.2) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",3,""+TF+" (50.0) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+4,0.618);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",4,""+TF+" (61.8) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+5,0.786);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",5,""+TF+" (78.6) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboIn"+Fibo_Num+"",6,""+TF+" Yesterday HIGH     (100.0) -  %$"); 
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_RAY,true);
   	ObjectSet("FiboIn"+Fibo_Num+"",OBJPROP_BACK,true);
   

   
   }
   else
	   ObjectDelete("FiboIn");
}

//+------------------------------------------------------------------+
//| Indicator start function
//+------------------------------------------------------------------+

int start()
{
	int shift	= iBarShift(NULL,TimeFrame,Time[0]) + 1;	// yesterday
	HiPrice		= iHigh(NULL,TimeFrame,shift);
	LoPrice		= iLow (NULL,TimeFrame,shift);
	StartTime	= iTime(NULL,TimeFrame,shift);

	if(TimeDayOfWeek(StartTime)==0/*Sunday*/)
	{//Add fridays high and low
		HiPrice = MathMax(HiPrice,iHigh(NULL,TimeFrame,shift+1));
		LoPrice = MathMin(LoPrice,iLow(NULL,TimeFrame,shift+1));
	
	
	
}

	Range = HiPrice-LoPrice;

	DrawFibo();
	
	

	return(0);
}
//+------------------------------------------------------------------+

