//+------------------------------------------------------------------+ //| 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]