Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Pivots_v6
//+------------------------------------------------------------------+
//|                                        FerruFx_Multi_info+_2.mq4 |
//|                                        Copyright © 2007, FerruFx |
//|                                                                  |
//+------------------------------------------------------------------+


#property indicator_chart_window

#property indicator_buffers 7
#property indicator_color1 MediumSpringGreen
#property indicator_color2 FireBrick
#property indicator_color3 MediumBlue
#property indicator_color4 DarkOrange
#property indicator_color5 MediumBlue
#property indicator_color6 FireBrick
#property indicator_color7 MediumSpringGreen

extern double TrendStrongLevel = 75.00;
extern int Pivots_Period = 1440;

//---- buffers
double Piv_Buffer[];
double R1_Buffer[];
double R2_Buffer[];
double R3_Buffer[];
double S1_Buffer[];
double S2_Buffer[];
double S3_Buffer[];

// indicators parameters

extern int Ydist_line=20;
extern int Xdist_line=10;


int TimeZone=0;
bool pivots = true;
bool alert = true;

double yesterday_high=0;
double yesterday_open=0;
double yesterday_low=0;
double yesterday_close=0;
double today_open=0;
double today_high=0;
double today_low=0;

double rates_h1[2][6];
double rates_d1[2][6];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
     string short_name;
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(7);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Piv_Buffer);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,R1_Buffer);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,R2_Buffer);
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,R3_Buffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,S1_Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,S2_Buffer);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,S3_Buffer);
//   short_name="Pivots("+S3_Buffer+"|"+S2_Buffer+"|"+S1_Buffer+"|"+Piv_Buffer+"|"+R1_Buffer+"|"+R2_Buffer+"|"+R3_Buffer+"|"+")";
//   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,S3_Buffer);
   SetIndexDrawBegin(1,S2_Buffer);
   SetIndexDrawBegin(2,S1_Buffer);
   SetIndexDrawBegin(3,Piv_Buffer);
   SetIndexDrawBegin(4,R1_Buffer);
   SetIndexDrawBegin(5,R2_Buffer);
   SetIndexDrawBegin(6,R3_Buffer);

  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("pivots");
   ObjectDelete("line5");
   ObjectDelete("R3_Label");
   ObjectDelete("R2_Label");
   ObjectDelete("R1_Label");
   ObjectDelete("Pivot_Label");
   ObjectDelete("S1_Label");
   ObjectDelete("S2_Label");
   ObjectDelete("S3_Label");
   ObjectDelete("R3_Value");
   ObjectDelete("R2_Value");
   ObjectDelete("R1_Value");
   ObjectDelete("Pivot_Value");
   ObjectDelete("S1_Value");
   ObjectDelete("S2_Value");
   ObjectDelete("S3_Value");   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {

   int    i,counted_bars=IndicatorCounted();   
   i=Bars-counted_bars-1;
   while(i>=0)
     {

   color color_common_line = White;
   color color_common_text = White;
   color color_ind = PowderBlue;
   color color_indic;
   color color_pivots_1=DarkOrange;
   double x;
   
   
   
// DAILY PIVOTS AND RANGE

   string Pivots_Label;
   Pivots_Period=Period();
   switch (Pivots_Period)
     {
       case 1     : Pivots_Label="+1 ìèí Pivots+";break;
       case 5     : Pivots_Label="+5 ìèí Pivots+";break;
       case 15    : Pivots_Label="+15ìèí Pivots+";break;
       case 30    : Pivots_Label="+30ìèí Pivots+";break;
       case 60    : Pivots_Label="+1 ÷àñ Pivots+";break;
       case 240   : Pivots_Label="+4 ÷àñ Pivots+";break;
       case 1440  : Pivots_Label="+Äíåâí Pivots+";break;
       case 10080 : Pivots_Label="+Íåäåë Pivots+";break;
       case 43200 : Pivots_Label="+Ìåñÿö Pivots+";break;
     }
   
   
   ObjectCreate("pivots", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("pivots",Pivots_Label,9, "Verdana", color_pivots_1);
   ObjectSet("pivots", OBJPROP_CORNER, 0);
   ObjectSet("pivots", OBJPROP_XDISTANCE, Xdist_line);
   ObjectSet("pivots", OBJPROP_YDISTANCE, Ydist_line+5);
   
   ObjectCreate("line5", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("line5","------------------",8, "Verdana", color_pivots_1);
   ObjectSet("line5", OBJPROP_CORNER, 0);
   ObjectSet("line5", OBJPROP_XDISTANCE, Xdist_line);
   ObjectSet("line5", OBJPROP_YDISTANCE, Ydist_line+16);
   
//---- Get new daily prices

//   ArrayCopyRates(rates_d1, Symbol(), PERIOD_D1);
   ArrayCopyRates(rates_d1, Symbol(), 0);
   
//---- modifs ibfx
   int offset = i;
 //  if(DayOfWeek()==1) offset=1;
//----

   double day50_high = rates_d1[50+offset][3];
   double day50_low = rates_d1[50+offset][2]; 
   double day49_high = rates_d1[49+offset][3];
   double day49_low = rates_d1[49+offset][2]; 
   double day48_high = rates_d1[48+offset][3];
   double day48_low = rates_d1[48+offset][2]; 
   double day47_high = rates_d1[47+offset][3];
   double day47_low = rates_d1[47+offset][2]; 
   double day46_high = rates_d1[46+offset][3];
   double day46_low = rates_d1[46+offset][2]; 
   double day45_high = rates_d1[45+offset][3];
   double day45_low = rates_d1[45+offset][2]; 
   double day44_high = rates_d1[44+offset][3];
   double day44_low = rates_d1[44+offset][2]; 
   double day43_high = rates_d1[43+offset][3];
   double day43_low = rates_d1[43+offset][2]; 
   double day42_high = rates_d1[42+offset][3];
   double day42_low = rates_d1[42+offset][2]; 
   double day41_high = rates_d1[41+offset][3];
   double day41_low = rates_d1[41+offset][2]; 
   double day40_high = rates_d1[40+offset][3];
   double day40_low = rates_d1[40+offset][2]; 
   double day39_high = rates_d1[39+offset][3];
   double day39_low = rates_d1[39+offset][2]; 
   double day38_high = rates_d1[38+offset][3];
   double day38_low = rates_d1[38+offset][2]; 
   double day37_high = rates_d1[37+offset][3];
   double day37_low = rates_d1[37+offset][2]; 
   double day36_high = rates_d1[36+offset][3];
   double day36_low = rates_d1[36+offset][2]; 
   double day35_high = rates_d1[35+offset][3];
   double day35_low = rates_d1[35+offset][2]; 
   double day34_high = rates_d1[34+offset][3];
   double day34_low = rates_d1[34+offset][2]; 
   double day33_high = rates_d1[33+offset][3];
   double day33_low = rates_d1[33+offset][2]; 
   double day32_high = rates_d1[32+offset][3];
   double day32_low = rates_d1[32+offset][2]; 
   double day31_high = rates_d1[31+offset][3];
   double day31_low = rates_d1[31+offset][2]; 
   double day30_high = rates_d1[30+offset][3];
   double day30_low = rates_d1[30+offset][2]; 
   double day29_high = rates_d1[29+offset][3];
   double day29_low = rates_d1[29+offset][2]; 
   double day28_high = rates_d1[28+offset][3];
   double day28_low = rates_d1[28+offset][2]; 
   double day27_high = rates_d1[27+offset][3];
   double day27_low = rates_d1[27+offset][2]; 
   double day26_high = rates_d1[26+offset][3];
   double day26_low = rates_d1[26+offset][2]; 
   double day25_high = rates_d1[25+offset][3];
   double day25_low = rates_d1[25+offset][2]; 
   double day24_high = rates_d1[24+offset][3];
   double day24_low = rates_d1[24+offset][2]; 
   double day23_high = rates_d1[23+offset][3];
   double day23_low = rates_d1[23+offset][2]; 
   double day22_high = rates_d1[22+offset][3];
   double day22_low = rates_d1[22+offset][2]; 
   double day21_high = rates_d1[21+offset][3];
   double day21_low = rates_d1[21+offset][2]; 
   double day20_high = rates_d1[20+offset][3];
   double day20_low = rates_d1[20+offset][2]; 
   double day19_high = rates_d1[19+offset][3];
   double day19_low = rates_d1[19+offset][2]; 
   double day18_high = rates_d1[18+offset][3];
   double day18_low = rates_d1[18+offset][2]; 
   double day17_high = rates_d1[17+offset][3];
   double day17_low = rates_d1[17+offset][2]; 
   double day16_high = rates_d1[16+offset][3];
   double day16_low = rates_d1[16+offset][2]; 
   double day15_high = rates_d1[15+offset][3];
   double day15_low = rates_d1[15+offset][2]; 
   double day14_high = rates_d1[14+offset][3];
   double day14_low = rates_d1[14+offset][2]; 
   double day13_high = rates_d1[13+offset][3];
   double day13_low = rates_d1[13+offset][2]; 
   double day12_high = rates_d1[12+offset][3];
   double day12_low = rates_d1[12+offset][2]; 
   double day11_high = rates_d1[11+offset][3];
   double day11_low = rates_d1[11+offset][2]; 
   double day10_high = rates_d1[10+offset][3];
   double day10_low = rates_d1[10+offset][2]; 
   double day9_high = rates_d1[9+offset][3];
   double day9_low = rates_d1[9+offset][2];
   double day8_high = rates_d1[8+offset][3];
   double day8_low = rates_d1[8+offset][2]; 
   double day7_high = rates_d1[7+offset][3];
   double day7_low = rates_d1[7+offset][2]; 
   double day6_high = rates_d1[6+offset][3];
   double day6_low = rates_d1[6+offset][2]; 
   double day5_high = rates_d1[5+offset][3];
   double day5_low = rates_d1[5+offset][2]; 
   double day4_high = rates_d1[4+offset][3];
   double day4_low = rates_d1[4+offset][2]; 
   double day3_high = rates_d1[3+offset][3];
   double day3_low = rates_d1[3+offset][2]; 
   double day2_high = rates_d1[2+offset][3];
   double day2_low = rates_d1[2+offset][2]; 
   double yesterday_high = rates_d1[1+offset][3];
   double yesterday_low = rates_d1[1+offset][2];
   double yesterday_close = rates_d1[1+offset][4];
   double day_high = rates_d1[0][3];
   double day_low = rates_d1[0][2];
   
/*
   int i=0;

   ArrayCopyRates(rates_h1, Symbol(), PERIOD_H1);
   for (i=0;i<=25;i++)
   {
    if (TimeMinute(rates_h1[i][0])==0 && (TimeHour(rates_h1[i][0])-TimeZone)==0)
    {
     yesterday_close = rates_h1[i+1][4];      
     yesterday_open = rates_h1[i+24][1];
     today_open = rates_h1[i][1];      
     break;
    }
   }
*/

//---- Calculate Pivots et range

   double D = (day_high - day_low);
   double Q = (yesterday_high - yesterday_low);
   double Q2 = (day2_high - day2_low);
   double Q3 = (day3_high - day3_low);
   double Q4 = (day4_high - day4_low);
   double Q5 = (day5_high - day5_low);
   double Q6 = (day6_high - day6_low);
   double Q7 = (day7_high - day7_low);
   double Q8 = (day8_high - day8_low);
   double Q9 = (day9_high - day9_low);
   double Q10 = (day10_high - day10_low);
   double Q11 = (day11_high - day11_low);
   double Q12 = (day12_high - day12_low);
   double Q13 = (day13_high - day13_low);
   double Q14 = (day14_high - day14_low);
   double Q15 = (day15_high - day15_low);
   double Q16 = (day16_high - day16_low);
   double Q17 = (day17_high - day17_low);
   double Q18 = (day18_high - day18_low);
   double Q19 = (day19_high - day19_low);
   double Q20 = (day20_high - day20_low);
   double Q21 = (day21_high - day21_low);
   double Q22 = (day22_high - day22_low);
   double Q23 = (day23_high - day23_low);
   double Q24 = (day24_high - day24_low);
   double Q25 = (day25_high - day25_low);
   double Q26 = (day26_high - day26_low);
   double Q27 = (day27_high - day27_low);
   double Q28 = (day28_high - day28_low);
   double Q29 = (day29_high - day29_low);
   double Q30 = (day30_high - day30_low);
   double Q31 = (day31_high - day31_low);
   double Q32 = (day32_high - day32_low);
   double Q33 = (day33_high - day33_low);
   double Q34 = (day34_high - day34_low);
   double Q35 = (day35_high - day35_low);
   double Q36 = (day36_high - day36_low);
   double Q37 = (day37_high - day37_low);
   double Q38 = (day38_high - day38_low);
   double Q39 = (day39_high - day39_low);
   double Q40 = (day40_high - day40_low);
   double Q41 = (day41_high - day41_low);
   double Q42 = (day42_high - day42_low);
   double Q43 = (day43_high - day43_low);
   double Q44 = (day44_high - day44_low);
   double Q45 = (day45_high - day45_low);
   double Q46 = (day46_high - day46_low);
   double Q47 = (day47_high - day47_low);
   double Q48 = (day48_high - day48_low);
   double Q49 = (day49_high - day49_low);
   double Q50 = (day50_high - day50_low);
   double P = (yesterday_high + yesterday_low + yesterday_close) / 3;
   double R1 = (2*P)-yesterday_low;
   double S1 = (2*P)-yesterday_high;
   double R2 = P+(R1 - S1);
   double S2 = P-(R1 - S1);
	double R3 = (2*P)+(yesterday_high-(2*yesterday_low));
	double S3 = (2*P)-((2* yesterday_high)-yesterday_low);
	
	
	
	int Precision, dig;
{
   if( StringFind( Symbol(), "JPY", 0) != -1 ) { Precision = 100; dig = 2;}
   else                                        { Precision = 10000; dig = 4; }
} 	
	
//---- Set Pivots labels
   
     
   

   
   ObjectCreate("R3_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R3_Label","R3",9, "Verdana", Gainsboro);
   ObjectSet("R3_Label", OBJPROP_CORNER, 0);
   ObjectSet("R3_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("R3_Label", OBJPROP_YDISTANCE, Ydist_line+30);
   
   ObjectCreate("R3_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R3_Value"," "+DoubleToStr(R3,dig),9, "Verdana", Gainsboro);
   ObjectSet("R3_Value", OBJPROP_CORNER, 0);
   ObjectSet("R3_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("R3_Value", OBJPROP_YDISTANCE, Ydist_line+30);
   
   ObjectCreate("R2_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R2_Label","R2",9, "Verdana", Silver);
   ObjectSet("R2_Label", OBJPROP_CORNER, 0);
   ObjectSet("R2_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("R2_Label", OBJPROP_YDISTANCE, Ydist_line+45);
   
   ObjectCreate("R2_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R2_Value"," "+DoubleToStr(R2,dig),9, "Verdana", Silver);
   ObjectSet("R2_Value", OBJPROP_CORNER, 0);
   ObjectSet("R2_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("R2_Value", OBJPROP_YDISTANCE, Ydist_line+45);
   
   ObjectCreate("R1_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R1_Label","R1",9, "Verdana", DarkGray);
   ObjectSet("R1_Label", OBJPROP_CORNER, 0);
   ObjectSet("R1_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("R1_Label", OBJPROP_YDISTANCE, Ydist_line+60);
   
   ObjectCreate("R1_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("R1_Value"," "+DoubleToStr(R1,dig),9, "Verdana", DarkGray);
   ObjectSet("R1_Value", OBJPROP_CORNER, 0);
   ObjectSet("R1_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("R1_Value", OBJPROP_YDISTANCE, Ydist_line+60);
   
   ObjectCreate("Pivot_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Pivot_Label","Pivot",9, "Verdana", Gray);
   ObjectSet("Pivot_Label", OBJPROP_CORNER, 0);
   ObjectSet("Pivot_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("Pivot_Label", OBJPROP_YDISTANCE, Ydist_line+75);
   
   ObjectCreate("Pivot_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Pivot_Value"," "+DoubleToStr(P,dig),9, "Verdana", Gray);
   ObjectSet("Pivot_Value", OBJPROP_CORNER, 0);
   ObjectSet("Pivot_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("Pivot_Value", OBJPROP_YDISTANCE, Ydist_line+75);
   
   ObjectCreate("S1_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S1_Label","S1",9, "Verdana", DarkGray);
   ObjectSet("S1_Label", OBJPROP_CORNER, 0);
   ObjectSet("S1_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("S1_Label", OBJPROP_YDISTANCE, Ydist_line+90);
   
   ObjectCreate("S1_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S1_Value"," "+DoubleToStr(S1,dig),9, "Verdana", DarkGray);
   ObjectSet("S1_Value", OBJPROP_CORNER, 0);
   ObjectSet("S1_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("S1_Value", OBJPROP_YDISTANCE, Ydist_line+90);
   
   ObjectCreate("S2_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S2_Label","S2",9, "Verdana", Silver);
   ObjectSet("S2_Label", OBJPROP_CORNER, 0);
   ObjectSet("S2_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("S2_Label", OBJPROP_YDISTANCE, Ydist_line+105);
   
   ObjectCreate("S2_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S2_Value"," "+DoubleToStr(S2,dig),9, "Verdana", Silver);
   ObjectSet("S2_Value", OBJPROP_CORNER, 0);
   ObjectSet("S2_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("S2_Value", OBJPROP_YDISTANCE, Ydist_line+105);
   
   ObjectCreate("S3_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S3_Label","S3",9, "Verdana", Gainsboro);
   ObjectSet("S3_Label", OBJPROP_CORNER, 0);
   ObjectSet("S3_Label", OBJPROP_XDISTANCE, Xdist_line+3);
   ObjectSet("S3_Label", OBJPROP_YDISTANCE, Ydist_line+120);
   
   ObjectCreate("S3_Value", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("S3_Value"," "+DoubleToStr(S3,dig),9, "Verdana", Gainsboro);
   ObjectSet("S3_Value", OBJPROP_CORNER, 0);
   ObjectSet("S3_Value", OBJPROP_XDISTANCE, Xdist_line+40);
   ObjectSet("S3_Value", OBJPROP_YDISTANCE, Ydist_line+120);
   
   S3_Buffer[i] =S3;
   S2_Buffer[i] =S2;
   S1_Buffer[i] =S1;
   Piv_Buffer[i]=P;
   R1_Buffer[i] =R1;
   R2_Buffer[i] =R2;
   R3_Buffer[i] =R3;     
     
      i--;
     }     

   return(0);
  }

Comments