//+------------------------------------------------------------------+ //| cam_H1_H5_Historical_V4.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.) | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //---- #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 clrGreen #property indicator_color2 clrGreen #property indicator_color3 clrGreen #property indicator_color4 clrGreen #property indicator_color5 clrGreen #property indicator_color6 clrRed #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_width4 2 #property indicator_width5 2 #property indicator_width6 1 //---- input parameters extern int GMTshift=0; extern color HColor=Green; extern int fontsize=10; extern int LabelShift=20; //---- double H5Buffer[]; double H4Buffer[]; double H3Buffer[]; double H2Buffer[]; double H1Buffer[]; double PivotBuffer[]; double P,H1,H2,H3,H4,H5; double D1=0.091667; double D2=0.183333; double D3=0.2750; double D4=0.55; 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(6); //---- indicators SetIndexStyle(0,DRAW_LINE,0,2,clrGreen); SetIndexBuffer(0,H5Buffer); //--- SetIndexStyle(1,DRAW_LINE,0,2,clrGreen); SetIndexBuffer(1,H4Buffer); //--- SetIndexStyle(2,DRAW_LINE,0,2,clrGreen); SetIndexBuffer(2,H3Buffer); //--- SetIndexStyle(3,DRAW_LINE,0,2,clrGreen); SetIndexBuffer(3,H2Buffer); //--- SetIndexStyle(4,DRAW_LINE,0,2,clrGreen); SetIndexBuffer(4,H1Buffer); //--- SetIndexStyle(5,DRAW_LINE,STYLE_DASH,1,clrYellow); SetIndexBuffer(5,PivotBuffer); //--- SetIndexLabel(0,"H5"); SetIndexLabel(1,"H4"); SetIndexLabel(2,"H3"); SetIndexLabel(3,"H2"); SetIndexLabel(4,"H1"); SetIndexLabel(5,"Pivot"); //---- IndicatorShortName("Cam H Pivots"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here ObjectDelete("CamPivot"); ObjectDelete("ResH1"); ObjectDelete("ResH2"); ObjectDelete("ResH3"); 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=Bars-counted_bars; if(counted_bars==0) limit-=2; //---- 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 //---- To display all 8 Camarilla pivots remove comment symbols below and // add the appropriate object functions below if(prev_high==0 || prev_low==0) H5=0; else H5=(prev_high/prev_low)*prev_close; H4=((prev_high - prev_low)* D4) + prev_close; H3=((prev_high - prev_low)* D3) + prev_close; H2=((prev_high - prev_low) * D2) + prev_close; H1=((prev_high - prev_low) * D1) + prev_close; prev_day=cur_day; } if(High[cnt]>day_high) { day_high=High[cnt]; } if(Low[cnt]