//+------------------------------------------------------------------+
//|                                    Dynamic Pivot Fibo levels.mq4 |
//|                                          Copyright � 2008, Dr.GM |
//|                                              dr.gm.1@hotmail.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                   TSR_Ranges.mq4 |
//|                                         Copyright � 2006, Ogeima |
//|                                             ph_bresson@yahoo.com |
//| made for FXiGoR for the TSR Trend Slope Retracement method       |
//| modified to the DYNAMIC Daily Range Breakout System              |
//+------------------------------------------------------------------+
#property copyright "Copyright � 2008, Dr.GM"
#property link      "dr.gm.1@hotmail.com"

#property indicator_chart_window
//---------external---------------
extern int System=4;
extern int TF=2;

//----------internal--------------
double  Risk_to_Reward_ratio =  3.0;
int nDigits;

double         LH;            // High of Yesterday Candle
double         LL;             // Low of Yesterday Candle
double         LC;           // Close of Yesterday Candle
double         LO;           // Open of Yesterday Candle
double         Rn;               // Range of yesterday Candle ( High - Low )
double         P;               // Pivot Level

double   U236;
double   U382;
double   U50;
double   U618;
double   U100;
double   U1618;
   
double   D236;
double   D382;
double   D50;
double   D618;
double   D100;
double   D1618;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectsDeleteAll();
   Comment("...");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   
//----
bool Periods;
if (TF==0 ) Periods=PERIOD_H4;
if (TF==1 ) Periods=PERIOD_D1;
if (TF==2 ) Periods=PERIOD_W1;
if (TF==3 ) Periods=PERIOD_MN1;
if (TF>3 || TF<0 ) Periods=PERIOD_D1;

//0 = H4
//1 = D1
//2 = W1
//3 = MN1


      //----
   int R1=0,R5=0,R10=0,R20=0,RAvg=0;
   int RoomUp=0,RoomDown=0,StopLoss_Long=0,StopLoss_Short=0;
   double   SL_Long=0,SL_Short=0;
   double   low0=0,high0=0;
   string   Text="";
   int i=0;

   R1 =  (iHigh(NULL,Periods,1)-iLow(NULL,Periods,1))/Point;
   for(i=1;i<=5;i++)
      R5    =    R5  +  (iHigh(NULL,Periods,i)-iLow(NULL,Periods,i))/Point;
   for(i=1;i<=10;i++)
      R10   =    R10 +  (iHigh(NULL,Periods,i)-iLow(NULL,Periods,i))/Point;
   for(i=1;i<=20;i++)
      R20   =    R20 +  (iHigh(NULL,Periods,i)-iLow(NULL,Periods,i))/Point;

   R5 = R5/5;
   R10 = R10/10;
   R20 = R20/20;
   RAvg  =  (R1+R5+R10+R20)/4;    


   
      
   LH = iHigh(NULL,Periods,1); //--LastHigh
   LL = iLow(NULL,Periods,1);  //--LastLow
   LC = iClose(NULL,Periods,1);//--LastClose
   LO = iOpen(NULL,Periods,1); //--LastOpen
   Rn = LH-LL;

if(System==0) P=(LH); //--Pivot point  
if(System==1) P=(LL); 
if(System==2) P=(LC); 
if(System==3) P=(LH+LL)/2; 
if(System==4) P=(LH+LL+LC)/3;   
if(System==5) P=(LH+LL+LC+LO)/4;    

//0= last High
//1= last Open
//2= last Close
//3= last Range
//4= last Typical
//5= last Weighted
    
 
   U236=(RAvg*0.236)*Point+P;
   U382=(RAvg*0.382)*Point+P;
   U50=(RAvg*0.50)*Point+P;
   U618=(RAvg*0.618)*Point+P;
   U100=(RAvg*1)*Point+P;
   U1618=(RAvg*1.618)*Point+P;
   
   D236=P-(RAvg*0.236)*Point;
   D382=P-(RAvg*0.382)*Point;
   D50=P-(RAvg*0.5)*Point;
   D618=P-(RAvg*0.618)*Point;
   D100=P-(RAvg*1)*Point;
   D1618=P-(RAvg*1.618)*Point;
   
         //----------------------------------------------------- 

          if(ObjectFind("Pivotl") != 0)
      {
      ObjectCreate("Pivotl", OBJ_TEXT, 0, Time[10], P);
      ObjectSetText("Pivotl", "Pivot", 9, "Arial", DarkBlue);
      }
      else
      {
      ObjectMove("Pivotl", 0, Time[10], P);
      }
           
      if(ObjectFind("Pivotline") != 0)
      {
      ObjectCreate("Pivotline", OBJ_HLINE, 0, Time[40],P);
      ObjectSet("Pivotline", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("Pivotline", OBJPROP_WIDTH, 1);
      ObjectSet("Pivotline", OBJPROP_COLOR, DarkBlue);
      }
      else
      {
      ObjectMove("Pivotline", 0, Time[40], P);
      }
      
     //----------------------------------------------------- 
              //----------------------------------------------------- 

          if(ObjectFind("U236l") != 0)
      {
      ObjectCreate("U236l", OBJ_TEXT, 0, Time[10], U236);
      ObjectSetText("U236l", "Fibo 23.6%", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U236l", 0, Time[10], U236);
      }
           
      if(ObjectFind("U236line") != 0)
      {
      ObjectCreate("U236line", OBJ_HLINE, 0, Time[40],U236);
      ObjectSet("U236line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U236line", OBJPROP_WIDTH, 1);
      ObjectSet("U236line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U236line", 0, Time[40], U236);
      }
      
     //----------------------------------------------------- 
     
                   //----------------------------------------------------- 

          if(ObjectFind("U382l") != 0)
      {
      ObjectCreate("U382l", OBJ_TEXT, 0, Time[10], U382);
      ObjectSetText("U382l", "Fibo 38.2 %", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U382l", 0, Time[10], U382);
      }
           
      if(ObjectFind("U382line") != 0)
      {
      ObjectCreate("U382line", OBJ_HLINE, 0, Time[40],U382);
      ObjectSet("U382line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U382line", OBJPROP_WIDTH, 1);
      ObjectSet("U382line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U382line", 0, Time[40], U382);
      }
      
     //----------------------------------------------------- 
                        //----------------------------------------------------- 

          if(ObjectFind("U50l") != 0)
      {
      ObjectCreate("U50l", OBJ_TEXT, 0, Time[10], U50);
      ObjectSetText("U50l", "Fibo 50 %", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U50l", 0, Time[10], U50);
      }
           
      if(ObjectFind("U50line") != 0)
      {
      ObjectCreate("U50line", OBJ_HLINE, 0, Time[40],U50);
      ObjectSet("U50line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U50line", OBJPROP_WIDTH, 1);
      ObjectSet("U50line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U50line", 0, Time[40], U50);
      }
      
     //----------------------------------------------------- 
                             //----------------------------------------------------- 

          if(ObjectFind("U618l") != 0)
      {
      ObjectCreate("U618l", OBJ_TEXT, 0, Time[10], U618);
      ObjectSetText("U618l", "Fibo 61.8 %", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U618l", 0, Time[10], U618);
      }
           
      if(ObjectFind("U618line") != 0)
      {
      ObjectCreate("U618line", OBJ_HLINE, 0, Time[40],U618);
      ObjectSet("U618line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U618line", OBJPROP_WIDTH, 1);
      ObjectSet("U618line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U618line", 0, Time[40], U618);
      }
      
     //----------------------------------------------------- 
                                  //----------------------------------------------------- 

          if(ObjectFind("U100l") != 0)
      {
      ObjectCreate("U100l", OBJ_TEXT, 0, Time[10], U100);
      ObjectSetText("U100l", "Fibo 100 %", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U100l", 0, Time[10], U100);
      }
           
      if(ObjectFind("U100line") != 0)
      {
      ObjectCreate("U100line", OBJ_HLINE, 0, Time[40],U100);
      ObjectSet("U100line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U100line", OBJPROP_WIDTH, 1);
      ObjectSet("U100line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U100line", 0, Time[40], U100);
      }
      
     //----------------------------------------------------- 
 //============================================================

              //----------------------------------------------------- 

          if(ObjectFind("D236l") != 0)
      {
      ObjectCreate("D236l", OBJ_TEXT, 0, Time[10], D236);
      ObjectSetText("D236l", "Fibo 23.6%", 9, "Arial", Maroon );
      }
      else
      {
      ObjectMove("D236l", 0, Time[10], D236);
      }
           
      if(ObjectFind("D236line") != 0)
      {
      ObjectCreate("D236line", OBJ_HLINE, 0, Time[40],D236);
      ObjectSet("D236line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D236line", OBJPROP_WIDTH, 1);
      ObjectSet("D236line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D236line", 0, Time[40], D236);
      }
      
     //----------------------------------------------------- 
     
                   //----------------------------------------------------- 

          if(ObjectFind("D382l") != 0)
      {
      ObjectCreate("D382l", OBJ_TEXT, 0, Time[10], D382);
      ObjectSetText("D382l", "Fibo 38.2 %", 9, "Arial", Maroon);
      }
      else
      {
      ObjectMove("D382l", 0, Time[10], D382);
      }
           
      if(ObjectFind("D382line") != 0)
      {
      ObjectCreate("D382line", OBJ_HLINE, 0, Time[40],D382);
      ObjectSet("D382line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D382line", OBJPROP_WIDTH, 1);
      ObjectSet("D382line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D382line", 0, Time[40], D382);
      }
      
     //----------------------------------------------------- 
                        //----------------------------------------------------- 

          if(ObjectFind("D50l") != 0)
      {
      ObjectCreate("D50l", OBJ_TEXT, 0, Time[10], D50);
      ObjectSetText("D50l", "Fibo 50 %", 9, "Arial", Maroon);
      }
      else
      {
      ObjectMove("D50l", 0, Time[10], D50);
      }
           
      if(ObjectFind("D50line") != 0)
      {
      ObjectCreate("D50line", OBJ_HLINE, 0, Time[40],D50);
      ObjectSet("D50line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D50line", OBJPROP_WIDTH, 1);
      ObjectSet("D50line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D50line", 0, Time[40], D50);
      }
      
     //----------------------------------------------------- 
                             //----------------------------------------------------- 

          if(ObjectFind("D618l") != 0)
      {
      ObjectCreate("D618l", OBJ_TEXT, 0, Time[10], D618);
      ObjectSetText("D618l", "Fibo 61.8 %", 9, "Arial", Maroon);
      }
      else
      {
      ObjectMove("D618l", 0, Time[10], D618);
      }
           
      if(ObjectFind("D618line") != 0)
      {
      ObjectCreate("D618line", OBJ_HLINE, 0, Time[40],D618);
      ObjectSet("D618line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D618line", OBJPROP_WIDTH, 1);
      ObjectSet("D618line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D618line", 0, Time[40], D618);
      }
      
     //----------------------------------------------------- 
                                  //----------------------------------------------------- 

          if(ObjectFind("D100l") != 0)
      {
      ObjectCreate("D100l", OBJ_TEXT, 0, Time[10], D100);
      ObjectSetText("D100l", "Fibo 100 %", 9, "Arial", Maroon);
      }
      else
      {
      ObjectMove("D100l", 0, Time[10], D100);
      }
           
      if(ObjectFind("D100line") != 0)
      {
      ObjectCreate("D100line", OBJ_HLINE, 0, Time[40],D100);
      ObjectSet("D100line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D100line", OBJPROP_WIDTH, 1);
      ObjectSet("D100line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D100line", 0, Time[40], D100);
      }
      //--------------------------------------------------
      
                if(ObjectFind("U1618l") != 0)
      {
      ObjectCreate("U1618l", OBJ_TEXT, 0, Time[10], U1618);
      ObjectSetText("U1618l", "Fibo 161.8 %", 9, "Arial", DarkGreen);
      }
      else
      {
      ObjectMove("U1618l", 0, Time[10], U1618);
      }
           
      if(ObjectFind("U1618line") != 0)
      {
      ObjectCreate("U1618line", OBJ_HLINE, 0, Time[40],U1618);
      ObjectSet("U1618line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("U1618line", OBJPROP_WIDTH, 1);
      ObjectSet("U1618line", OBJPROP_COLOR, DarkGreen);
      }
      else
      {
      ObjectMove("U1618line", 0, Time[40], U1618);
      }
      
      //----------------------------------------------
            
                if(ObjectFind("D1618l") != 0)
      {
      ObjectCreate("D1618l", OBJ_TEXT, 0, Time[10], D1618);
      ObjectSetText("D1618l", "Fibo 161.8 %", 9, "Arial", Maroon);
      }
      else
      {
      ObjectMove("D1618l", 0, Time[10], D1618);
      }
           
      if(ObjectFind("D1618line") != 0)
      {
      ObjectCreate("D1618line", OBJ_HLINE, 0, Time[40],D1618);
      ObjectSet("D1618line", OBJPROP_STYLE, STYLE_DOT);
      ObjectSet("D1618line", OBJPROP_WIDTH, 1);
      ObjectSet("D1618line", OBJPROP_COLOR, Maroon);
      }
      else
      {
      ObjectMove("D1618line", 0, Time[40], D1618);
      }
      
      //----------------------------------------------
      
      
   string Credits ="Dr.Mahmoud A. (AKA:Dr.GM) -dr.gm.1@hotmail.com- " + "\n" + "Ogeima" ; // + " add your name here"
  Text =   "Created By: " + "\n"+  Credits + "\n" ;
 

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