Author: Copyright � 2005, MetaQuotes Software Corp.
gStdPivots
Price Data Components
Series array that contains open time of each bar
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
gStdPivots
//+------------------------------------------------------------------+
//|              cam_H2_H5_Historical_V4.mq4           gStdPivots.mq4|
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//| Modified to chart historical camarilla pivots by MrPip           |
//| 3/28/06 Fixed problem of Sunday/Monday pivots                    |
//|         and added some ideas from goodtiding5 (Kenneth Z.) 
//| 10/18/06 Modified by Stache to convert to std pivots      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Yellow
#property indicator_width1 1
#property indicator_style1 3
#property indicator_color2 DodgerBlue
#property indicator_width2 1
#property indicator_style2 3
#property indicator_color3 FireBrick
#property indicator_width3 1
#property indicator_style3 3
#property indicator_color4 Magenta
#property indicator_width4 1
#property indicator_style4 1
#property indicator_color5 FireBrick
#property indicator_width5 1
#property indicator_style5 3
#property indicator_color6 DodgerBlue
#property indicator_width6 1
#property indicator_style6 3
#property indicator_color7 Yellow
#property indicator_width7 1
#property indicator_style7 3



//---- input parameters

extern int  GMTshift=0;
extern color RColor = Green;
extern color SColor= Red;
extern int fontsize=10;
extern int LabelShift=20;


double R3Buffer[];
double R2Buffer[];
double R1Buffer[];
double PivotBuffer[];
double S1Buffer[];
double S2Buffer[];
double S3Buffer[];

double P, R1,R2,R3,S1,S2,S3;

double prev_high=0;
double prev_low=0;
double prev_close=0;
double cur_day=0;
double prev_day=0;
double day_high=0;
double day_low=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(7);
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,R3Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,R2Buffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,R1Buffer);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,PivotBuffer);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,S1Buffer);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,S2Buffer);
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,S3Buffer);
   SetIndexLabel(0,"S3");
   SetIndexLabel(1,"S2");
   SetIndexLabel(2,"S1");
   SetIndexLabel(3,"Pivot");
   SetIndexLabel(4,"R1");
   SetIndexLabel(5,"R2");
   SetIndexLabel(6,"R3");
   
//----
//   IndicatorShortName("gStdPivots);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   ObjectDelete("CamPivot");
   ObjectDelete("ResH2");
   ObjectDelete("ResH3");
   ObjectDelete("ResH4");
   ObjectDelete("ResH5");  
   ObjectDelete("ResH4");
   ObjectDelete("ResH5"); 
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int cnt, limit;

//---- exit if period is greater than 4 hr charts
   if(Period() > 240)
   {
      Alert("Error - Chart period is greater than 4 Hr.");
      return(-1); // then exit
   }
   if(counted_bars<0) return(-1);

//---- last counted bar will be recounted
//   if(counted_bars>0) counted_bars--;

//   limit=(Bars-counted_bars)-1;
   limit=counted_bars;

//---- Get new daily prices & calculate pivots

   for (cnt=limit;cnt >=0;cnt--)
   {
   	if (TimeDayOfWeek(Time[cnt]) == 0)
	   {
        cur_day = prev_day;
	   }
	   else
	   {
        cur_day = TimeDay(Time[cnt]- (GMTshift*3600));
	   }
	   
   	if (prev_day != cur_day)
   	{
	   	prev_close = Close[cnt+1];
		   prev_high = day_high;
		   prev_low = day_low;

	      day_high = High[cnt];
 	      day_low  = Low[cnt];

   P  = (prev_high + prev_low + prev_close)/3;//Pivot
   R1 = (2*P)-prev_low;
   S1 = (2*P)-prev_high;
   R2 = P+(prev_high - prev_low);
   S2 = P-(prev_high - prev_low);
   R3 = (2*P)+(prev_high-(2*prev_low));
   S3 = (2*P)-((2* prev_high)-prev_low); 


		   prev_day = cur_day;
	   }
      if (High[cnt]>day_high)
      {
         day_high = High[cnt];
      }
      if (Low[cnt]<day_low)
      {
         day_low = Low[cnt];
      }
      
      
      
//         day_low=Open[cnt]; day_high=Open[cnt];
      
      

//---  Draw  Pivot lines on chart

      PivotBuffer[cnt]=P;
      R3Buffer[cnt]=R3;
      R2Buffer[cnt]=R2;
      R1Buffer[cnt]=R1;
      S1Buffer[cnt]=S1;
      S2Buffer[cnt]=S2;
      S3Buffer[cnt]=S3;
   }

   if (cur_day == TimeDay(CurTime()))   DisplayLabels();
//----
   return(0);
  }

void DisplayLabels()
{
      if(ObjectFind("CamPivot") != 0)
      {
        ObjectCreate("StsPivot", OBJ_TEXT, 0, 0,0);
        ObjectSetText("StdPivot", "                 Pivot",fontsize,"Arial",Yellow);
      }
      else
      {
        ObjectMove("StdPivot", 0, Time[20],P);
      }
      
      if(ObjectFind("Res 3") != 0)
      {
      ObjectCreate("Res 3", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Res 3", "      R 3",fontsize,"Arial",RColor);
      }
      else
      {
         ObjectMove("Res 3", 0, Time[20],R3);
      }
      
      if(ObjectFind("Res 2") != 0)
      {
      ObjectCreate("Res 2", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Res 2", "      R 2",fontsize,"Arial",RColor);
      }
      else
      {
         ObjectMove("Res 2", 0, Time[20],R2);
      }
      
      if(ObjectFind("Res 1") != 0)
      {
      ObjectCreate("Res 1", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Res 1", "      R 1",fontsize,"Arial",RColor);
      }
      else
      {
         ObjectMove("Res 1", 0, Time[20],R1);
      }
      
      if(ObjectFind("Sup 1") != 0)
      {
      ObjectCreate("Sup 1", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Sup 1", "      S 1",fontsize,"Arial",SColor);
      }
      else
      {
         ObjectMove("Sup 1", 0, Time[20],S1);
      }
      
      if(ObjectFind("Sup 2") != 0)
      {
      ObjectCreate("Sup 2", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Sup 2", "      S 2",fontsize,"Arial",SColor);
      }
      else
      {
         ObjectMove("Sup 2", 0, Time[20],S2);
      }
      if(ObjectFind("Sup 3") != 0)
      {
      ObjectCreate("Sup 3", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("Sup 3", "      S 3",fontsize,"Arial",SColor);
      }
      else
      {
         ObjectMove("Sup 3", 0, Time[20],S3);
      }
      
      
}
//+------------------------------------------------------------------+

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 ---