#SpudFibo alert v3

#SpudFibo alert v3
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
#SpudFibo alert v3
//+------------------------------------------------------------------+
//|   #SpudFibo.mq4 - downloaded from ultimaforex.com
//+------------------------------------------------------------------+
#property  indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

extern string Ind="---------------- Indicator Settings";
extern int SF_Period=PERIOD_W1;
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;
extern string Ale="---------------- Alert Settings";
extern bool  SoundAlert = true;
extern bool  PopUpAlert = false;
extern bool  EmailAlert = false;
extern bool  ArrowsSignal = true;
double alertBar; 

int limit=1;int counter;
double CrossUp[];
double CrossDown[];
double prevtime;
double Crange, AvgRange;
double HiPrice, LoPrice, Range;
datetime StartTime;
double fib500,fib000,fib1000,fibm1500,fibm2000,fibm2500,fibm3000,fibm3500,fibm4000,fibm4500,fibm5000,fibm5500,fibm6000,fibp1500,fibp2000,fibp2500,fibp3000,fibp3500,fibp4000,fibp4500,fibp5000;

int init()
{
   SetIndexStyle(0, DRAW_ARROW, EMPTY, 2);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, CrossUp);
   SetIndexStyle(1, DRAW_ARROW, EMPTY, 2);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, CrossDown);
   
   return(0);
}

int deinit()
{
   ObjectDelete("FiboUp");
   ObjectDelete("FiboDn");
   ObjectDelete("FiboIn");
   return(0);
}


//+------------------------------------------------------------------+
//| Draw Fibo
//+------------------------------------------------------------------+

int DrawFibo1()
{
	if(ObjectFind("FiboUp") == -1)
		ObjectCreate("FiboUp",OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
	else
	{
		ObjectSet("FiboUp",OBJPROP_TIME2, StartTime);
		ObjectSet("FiboUp",OBJPROP_TIME1, StartTime);
		ObjectSet("FiboUp",OBJPROP_PRICE1,HiPrice+Range);
		ObjectSet("FiboUp",OBJPROP_PRICE2,HiPrice);
	}
   ObjectSet("FiboUp",OBJPROP_LEVELCOLOR,UpperFiboColor);
   ObjectSet("FiboUp",OBJPROP_FIBOLEVELS,13);
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboUp",0,"(100.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboUp",3,"(150.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboUp",6,"(200.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+8,1.500);	ObjectSetFiboDescription("FiboUp",8,"(250.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+10,2.000);	ObjectSetFiboDescription("FiboUp",10,"(300.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+11,2.500);	ObjectSetFiboDescription("FiboUp",11,"(350.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+12,3.000);	ObjectSetFiboDescription("FiboUp",12,"(400.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+13,3.500);	ObjectSetFiboDescription("FiboUp",13,"(450.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_FIRSTLEVEL+14,4.000);	ObjectSetFiboDescription("FiboUp",14,"(500.0%) -  %$"); 
   ObjectSet("FiboUp",OBJPROP_RAY,true);
   ObjectSet("FiboUp",OBJPROP_BACK,true);

	if(ObjectFind("FiboDn") == -1)
		ObjectCreate("FiboDn",OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);
	else
	{
		ObjectSet("FiboDn",OBJPROP_TIME2, StartTime);
		ObjectSet("FiboDn",OBJPROP_TIME1, StartTime);
		ObjectSet("FiboDn",OBJPROP_PRICE1,LoPrice-Range);
		ObjectSet("FiboDn",OBJPROP_PRICE2,LoPrice);
	}
   ObjectSet("FiboDn",OBJPROP_LEVELCOLOR,LowerFiboColor); 
   ObjectSet("FiboDn",OBJPROP_FIBOLEVELS,19);
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboDn",0,"(0.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboDn",3,"(-50.0%) -  %$");
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboDn",6,"(-100.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+9,1.500);	ObjectSetFiboDescription("FiboDn",9,"(-150.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+12,2.000);	ObjectSetFiboDescription("FiboDn",12,"(-200.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+13,2.500);	ObjectSetFiboDescription("FiboDn",13,"(-250.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+14,3.000);	ObjectSetFiboDescription("FiboDn",14,"(-300.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+15,3.500);	ObjectSetFiboDescription("FiboDn",15,"(-350.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+16,4.000);	ObjectSetFiboDescription("FiboDn",16,"(-400.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+17,4.500);	ObjectSetFiboDescription("FiboDn",17,"(-450.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_FIRSTLEVEL+18,5.000);	ObjectSetFiboDescription("FiboDn",18,"(-500.0%) -  %$"); 
   ObjectSet("FiboDn",OBJPROP_RAY,true);
   ObjectSet("FiboDn",OBJPROP_BACK,true);

	if(InnerFibs)
	{
		if(ObjectFind("FiboIn") == -1)
			ObjectCreate("FiboIn",OBJ_FIBO,0,StartTime,HiPrice,StartTime+SF_Period*60,LoPrice);
		else
		{
			ObjectSet("FiboIn",OBJPROP_TIME2, StartTime);
			ObjectSet("FiboIn",OBJPROP_TIME1, StartTime+SF_Period*60);
			ObjectSet("FiboIn",OBJPROP_PRICE1,HiPrice);
			ObjectSet("FiboIn",OBJPROP_PRICE2,LoPrice);
		}
   	ObjectSet("FiboIn",OBJPROP_LEVELCOLOR,MainFiboColor); 
   	ObjectSet("FiboIn",OBJPROP_FIBOLEVELS,7);
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+0,0.0);	ObjectSetFiboDescription("FiboIn",0,"Period LOW (0.0) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+3,0.500);	ObjectSetFiboDescription("FiboIn",3,"(50.0) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_FIRSTLEVEL+6,1.000);	ObjectSetFiboDescription("FiboIn",6,"Period HIGH (100.0) -  %$"); 
   	ObjectSet("FiboIn",OBJPROP_RAY,true);
   	ObjectSet("FiboIn",OBJPROP_BACK,true);
   }
   else
	   ObjectDelete("FiboIn");
}

//+------------------------------------------------------------------+
//| Indicator start function
//+------------------------------------------------------------------+

int start()
{
	int shift	= iBarShift(NULL,SF_Period,Time[0]) + 1;	// yesterday
	HiPrice		= iHigh(NULL,SF_Period,shift);
	LoPrice		= iLow (NULL,SF_Period,shift);
	StartTime	= iTime(NULL,SF_Period,shift);

	if(TimeDayOfWeek(StartTime)==0/*Sunday*/)
	{//Add fridays high and low
		HiPrice = MathMax(HiPrice,iHigh(NULL,SF_Period,shift+1));
		LoPrice = MathMin(LoPrice,iLow(NULL,SF_Period,shift+1));
	}

	Range = HiPrice-LoPrice;
	

   fibp1500=HiPrice+(Range*0.5);
   fibp2000=HiPrice+(Range*1);
   fibp2500=HiPrice+(Range*1.5);
   fibp3000=HiPrice+(Range*2);
   fibp4000=HiPrice+(Range*3);
   fibp4500=HiPrice+(Range*3.5);
   fibp5000=HiPrice+(Range*4);

   fibm1500=HiPrice-(Range*1.5);
   fibm2000=HiPrice-(Range*2);
   fibm2500=HiPrice-(Range*2.5);
   fibm3000=HiPrice-(Range*3);
   fibm3500=HiPrice-(Range*3.5);
   fibm4000=HiPrice-(Range*4);
   fibm4500=HiPrice-(Range*4.5);
   fibm5000=HiPrice-(Range*5);
   fibm5500=HiPrice-(Range*5.5);
   fibm6000=HiPrice-(Range*6);

   fib000=HiPrice-(Range*1);
   fib500=HiPrice-(Range*0.5);
   fib1000=HiPrice;
   
   for(int i=1;i<=limit;i++){
   
   counter=i;
   Crange=0;
   AvgRange=0;
   
   for (counter=i ;counter<=i+9;counter++)
       {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
   }
   
   Crange=AvgRange/10;
   
   
   if((Open[i+1]<fibp1500&&Open[i]>fibp1500)||(Open[i+1]<fibp2000&&Open[i]>fibp2000)||(Open[i+1]<fibp2500&&Open[i]>fibp2500)||(Open[i+1]<fibp3000&&Open[i]>fibp3000)||
   (Open[i+1]<fibp4000&&Open[i]>fibp4000)||(Open[i+1]<fibp4500&&Open[i]>fibp4500)||(Open[i+1]<fibp5000&&Open[i]>fibp5000)||(Open[i+1]<fibm1500&&Open[i]>fibm1500)||
   (Open[i+1]<fibm2000&&Open[i]>fibm2000)||(Open[i+1]<fibm2500&&Open[i]>fibm2500)||(Open[i+1]<fibm3000&&Open[i]>fibm3000)||(Open[i+1]<fibm3500&&Open[i]>fibm3500)||
   (Open[i+1]<fibm4000&&Open[i]>fibm4000)||(Open[i+1]<fibm4500&&Open[i]>fibm4500)||(Open[i+1]<fibm5000&&Open[i]>fibm5000)||(Open[i+1]<fibm5500&&Open[i]>fibm5500)||
   (Open[i+1]<fibm6000&&Open[i]>fibm6000)||(Open[i+1]<fib000&&Open[i]>fib000)||(Open[i+1]<fib500&&Open[i]>fib500)||(Open[i+1]<fib1000&&Open[i]>fib1000)){

if(PopUpAlert == true && Bars>alertBar) {Alert ("SpudFibo: ",Symbol()+" "+Period()+": Buy Alert @ "+DoubleToStr(Bid,Digits));alertBar = Bars;}
if(EmailAlert == true)SendMail ("SpudFibo: ",Symbol()+" "+Period()+": Buy Alert @ "+DoubleToStr(Bid,Digits));
if(ArrowsSignal == true)CrossUp[i] = Low[i] - Crange*0.5;}

   if((Open[i+1]>fibp1500&&Open[i]<fibp1500)||(Open[i+1]>fibp1500&&Open[i]<fibp1500)||(Open[i+1]>fibp1500&&Open[i]<fibp1500)||(Open[i+1]>fibp3000&&Open[i]<fibp3000)||
   (Open[i+1]>fibp4000&&Open[i]<fibp4000)||(Open[i+1]>fibp4500&&Open[i]<fibp4500)||(Open[i+1]>fibp5000&&Open[i]<fibp5000)||(Open[i+1]>fibm1500&&Open[i]<fibm1500)||
   (Open[i+1]>fibm2000&&Open[i]<fibm2000)||(Open[i+1]>fibm2500&&Open[i]<fibm2500)||(Open[i+1]>fibm3000&&Open[i]<fibm3000)||(Open[i+1]>fibm3500&&Open[i]<fibm3500)||
   (Open[i+1]>fibm4000&&Open[i]<fibm4000)||(Open[i+1]>fibm4500&&Open[i]<fibm4500)||(Open[i+1]>fibm5000&&Open[i]<fibm5000)||(Open[i+1]>fibm5500&&Open[i]<fibm5500)||
   (Open[i+1]>fibm6000&&Open[i]<fibm6000)||(Open[i+1]>fib000&&Open[i]<fib000)||(Open[i+1]>fib500&&Open[i]<fib500)||(Open[i+1]>fib1000&&Open[i]<fib1000)){

if(PopUpAlert == true && Bars>alertBar)  {Alert ("SpudFibo: ",Symbol()+" "+Period()+": Sell Alert @ "+DoubleToStr(Bid,Digits));alertBar = Bars;}
if(EmailAlert == true)SendMail ("SpudFibo: ",Symbol()+" "+Period()+": Sell Alert @ "+DoubleToStr(Bid,Digits));
if(ArrowsSignal == true)CrossDown[i] = High[i] + Crange*0.5;}


      if ((CrossUp[0] > 2000) && (CrossDown[0] > 2000)) { prevtime = 0; }
      
      if ((CrossUp[0] == Low[0] - Range*0.5) && (prevtime != Time[0]))
       {
         prevtime = Time[0];
       }
      
      if ((CrossDown[0] == High[0] + Range*0.5) && (prevtime != Time[0]))
       {
         prevtime = Time[0];
       }}

	DrawFibo1();

	return(0);
}
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---