//+------------------------------------------------------------------+
//|   #SpudFibo.mq4 - downloaded from ultimaforex.com
//+------------------------------------------------------------------+
#property  indicator_chart_window

extern string note1 = "Fibonacci colors";
extern color MainFiboColor = RoyalBlue;
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");
   ObjectDelete("FiboDn");
   ObjectDelete("FiboIn");
   return(0);
}


//+------------------------------------------------------------------+
//| Draw Fibo
//+------------------------------------------------------------------+

int DrawFibo()
{
	if(InnerFibs)
	{
		if(ObjectFind("FiboIn") == -1)
			ObjectCreate("FiboIn",OBJ_FIBO,0,StartTime,HiPrice,StartTime+PERIOD_D1*60,LoPrice);
		else
		{
			ObjectSet("FiboIn",OBJPROP_TIME2, StartTime);
			ObjectSet("FiboIn",OBJPROP_TIME1, StartTime+PERIOD_D1*60);
			ObjectSet("FiboIn",OBJPROP_PRICE1,HiPrice);
			ObjectSet("FiboIn",OBJPROP_PRICE2,LoPrice);
		}
   	ObjectSet("FiboIn",OBJPROP_LEVELCOLOR,MainFiboColor); 
   	ObjectSet("FiboIn",OBJPROP_FIBOLEVELS,13);
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+0,-1.00);	ObjectSetFiboDescription("FiboIn",0,"(SD-3.0)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+1,-0.75);	ObjectSetFiboDescription("FiboIn",1,"(SD-2.5)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+2,-0.50);	ObjectSetFiboDescription("FiboIn",2,"(SD-2.0)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+3,-0.25);	ObjectSetFiboDescription("FiboIn",3,"(SD-1.5)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+4,0.0);	ObjectSetFiboDescription("FiboIn",4,"(SD-1.0)  -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+5,0.25);	ObjectSetFiboDescription("FiboIn",5,"(SD -0.5) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+6,0.50);	ObjectSetFiboDescription("FiboIn",6,"(Balance) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+7,0.75);	ObjectSetFiboDescription("FiboIn",7,"(SD +0.5) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+8,1.00);	ObjectSetFiboDescription("FiboIn",8,"(SD +1.0)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+9,1.25);	ObjectSetFiboDescription("FiboIn",9,"(SD+1.5)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+10,1.50);	ObjectSetFiboDescription("FiboIn",10,"(SD+2.0)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+11,1.75);	ObjectSetFiboDescription("FiboIn",11,"(SD+2.5)  -  %$");
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+12,2.0);	ObjectSetFiboDescription("FiboIn",12,"(SD+3.0)  -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_RAY,true);
   	ObjectSet("FiboIn",OBJPROP_BACK,true);
   }
   else
	   ObjectDelete("FiboIn");
}

//+------------------------------------------------------------------+
//| Indicator start function
//+------------------------------------------------------------------+

int start()
{
	int shift	= iBarShift(NULL,PERIOD_D1,Time[0]) + 1;	// yesterday
	HiPrice		= iHigh(NULL,PERIOD_D1,shift);
	LoPrice		= iLow (NULL,PERIOD_D1,shift);
	StartTime	= iTime(NULL,PERIOD_D1,shift);

	if(TimeDayOfWeek(StartTime)==0/*Sunday*/)
	{//Add fridays high and low
		HiPrice = MathMax(HiPrice,iHigh(NULL,PERIOD_D1,shift+1));
		LoPrice = MathMin(LoPrice,iLow(NULL,PERIOD_D1,shift+1));
	}

	Range = HiPrice-LoPrice;

	DrawFibo();

	return(0);
}
//+------------------------------------------------------------------+

