Navigation:Home > Content >

Pivots_Monthly.mq4

Time: 2016-03-28 | Download file:Pivots_Monthly.mq4

//+------------------------------------------------------------------+
//|                                                  WeeklyPivot.mq4 |
//|  I found the original indicator in TSD forum posted by heliyaun. |
//|                                       I donґt know how wrote it. |
//| I like it because have mondays fixed for broker with GMT outside |
//| london time.                                                     |
//| So, I added some stuff, labels, fix, etc. and them, I wrote the|
//|             Medians SR, and then, I wrote the same for Monthlies |
//|                                                                  |
//|                                                           Enjoy. |
//|                                                                  |
//|                                           Linuxser, January 2007 |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Brown
#property indicator_color2 Salmon
#property indicator_color3 MediumOrchid
#property indicator_color4 HotPink
#property indicator_color5 MediumPurple
#property indicator_color6 Violet
#property indicator_color7 Orchid

//---- input parameters

extern color     SupportLabelColor=Violet;
extern color     ResistanceLabelColor=Salmon;
extern color     PivotLabelColor=Brown;
extern int       fontsize=10;
extern int       LabelShift = 0;

//---- buffers
double MPBuffer[];
double MS1Buffer[];
double MR1Buffer[];
double MS2Buffer[];
double MR2Buffer[];
double MS3Buffer[];
double MR3Buffer[];
string Pivot="MonthlyPivotPoint",Sup1="M_S 1", Res1="M_R 1";
string Sup2="M_S 2", Res2="M_R 2", Sup3="M_S 3", Res3="M_R 3";
double MP,MS1,MR1,MS2,MR2,MS3,MR3;
double last_month_high, last_month_low, this_month_open, last_month_close;
datetime LabelShiftTime;
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here

   ObjectDelete("monthlyPivot");
   ObjectDelete("MSup1");
   ObjectDelete("MRes1");
   ObjectDelete("MSup2");
   ObjectDelete("MRes2");
   ObjectDelete("MSup3");
   ObjectDelete("MRes3");   

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;


//---- indicator line
   SetIndexStyle(0,DRAW_LINE,EMPTY);
   SetIndexStyle(1,DRAW_LINE,EMPTY);
   SetIndexStyle(2,DRAW_LINE,EMPTY);
   SetIndexStyle(3,DRAW_LINE,EMPTY);
   SetIndexStyle(4,DRAW_LINE,EMPTY);
   SetIndexStyle(5,DRAW_LINE,EMPTY);
   SetIndexStyle(6,DRAW_LINE,EMPTY);
   SetIndexBuffer(0,MPBuffer);
   SetIndexBuffer(1,MS1Buffer);
   SetIndexBuffer(2,MR1Buffer);
   SetIndexBuffer(3,MS2Buffer);
   SetIndexBuffer(4,MR2Buffer);
   SetIndexBuffer(5,MS3Buffer);
   SetIndexBuffer(6,MR3Buffer);


//---- name for DataWindow and indicator subwindow label
   short_name="Pivot Point Monthly";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

//----
   SetIndexDrawBegin(0,1);
//----
 

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

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()

  {
   int counted_bars=IndicatorCounted();

   int limit, i;
//---- indicator calculation
if (counted_bars==0)
{
   if(Period() > 1440)
   {
   Print("Error - Chart period is greater than 1 day.");
   return(-1); // then exit
   }
   
}
   if(counted_bars<0) return(-1);

   limit=(Bars-counted_bars)-1;


for (i=limit; i>=0;i--)
{ 


   // Monday	
	if(TimeDay(Time[i])<=3 && TimeDay(Time[i+1])>=26)
	{
		last_month_close = Close[i+1];
		this_month_open = Open[i];

		// monthlyPivot
	MP = (last_month_high + last_month_low + last_month_close) / 3;

   MR1 = (2*MP)-last_month_low;
   MS1 = (2*MP)-last_month_high;
   MR2 = MP+(last_month_high - last_month_low);
   MS2 = MP-(last_month_high - last_month_low);
   MR3 = (2*MP)+(last_month_high-(2*last_month_low));
   MS3 = (2*MP)-((2* last_month_high)-last_month_low); 
  
   last_month_low=Low[i]; last_month_high=High[i];

   LabelShiftTime = Time[LabelShift];

	ObjectCreate("MonthlyPivot", OBJ_TEXT, 0,LabelShiftTime,0);
   ObjectSetText("MonthlyPivot", "                            Monthly Pivot Point  "+DoubleToStr(MP,4),fontsize,"Arial",PivotLabelColor);
   SetIndexLabel(0, "Monthly Pivot Point");   
   ObjectCreate("MSup1", OBJ_TEXT, 0, LabelShiftTime, 0);   
   ObjectSetText("MSup1", "                   Mo S1 "+DoubleToStr(MS1,4),fontsize,"Arial",SupportLabelColor);
   SetIndexLabel(1, "MSup1");   
   ObjectCreate("MRes1", OBJ_TEXT, 0, LabelShiftTime, 0);   
   ObjectSetText("MRes1", "                   Mo R1  "+DoubleToStr(MR1,4),fontsize,"Arial",ResistanceLabelColor);
   SetIndexLabel(2, "MRes1");   
   ObjectCreate("MSup2", OBJ_TEXT, 0, LabelShiftTime, 0);   
   ObjectSetText("MSup2", "                   Mo S2  "+DoubleToStr(MS2,4),fontsize,"Arial",SupportLabelColor);
   SetIndexLabel(3, "MSup2");   
   ObjectCreate("MRes2", OBJ_TEXT, 0, LabelShiftTime, 0);
   ObjectSetText("MRes2", "                   Mo R2  "+DoubleToStr(MR2,4),fontsize,"Arial",ResistanceLabelColor);
   SetIndexLabel(4, "MRes2");   
   ObjectCreate("MSup3", OBJ_TEXT, 0, LabelShiftTime, 0);   
   ObjectSetText("MSup3", "                   Mo S3  "+DoubleToStr(MS3,4),fontsize,"Arial",SupportLabelColor);
   SetIndexLabel(5, "MSup3");   
   ObjectCreate("MRes3", OBJ_TEXT, 0, LabelShiftTime, 0);   
   ObjectSetText("MRes3", "                   Mo R3  "+DoubleToStr(MR3,4),fontsize,"Arial",ResistanceLabelColor);
	SetIndexLabel(6, "MRes3");
	
	ObjectMove("MonthlyPivot", 0, LabelShiftTime,MP);
   ObjectMove("MSup1", 0, LabelShiftTime,MS1);
   ObjectMove("MRes1", 0, LabelShiftTime,MR1);
   ObjectMove("MSup2", 0, LabelShiftTime,MS2);
   ObjectMove("MRes2", 0, LabelShiftTime,MR2);
   ObjectMove("MSup3", 0, LabelShiftTime,MS3);
   ObjectMove("MRes3", 0, LabelShiftTime,MR3);

}   
    
    last_month_high = MathMax(last_month_high, High[i]);
 	 last_month_low = MathMin(last_month_low, Low[i]);   
    MPBuffer[i]=MP;
    MS1Buffer[i]=MS1;
    MR1Buffer[i]=MR1;
    MS2Buffer[i]=MS2;
    MR2Buffer[i]=MR2;
    MS3Buffer[i]=MS3;
    MR3Buffer[i]=MR3;

}

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

Recommend