//+------------------------------------------------------------------+ //| Pivot Mid Support Historical_V1.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.) | //| Modified from Cam historical to plot Mid pivots by Tradex4x | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Blue #property indicator_color2 Blue #property indicator_color3 Blue #property indicator_color4 Blue //---- input parameters extern int GMTshift=0; extern color LColor = Blue; extern int fontsize=8; extern int LabelShift=13; extern int DaysDrawBack=15; extern bool DisplayCurrentLines = true; double MS1Buffer[]; double MS2Buffer[]; double MS3Buffer[]; double MS4Buffer[]; double MS1, MS2, MS3, MS4, P, S1, S2, S3, S4; 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(4); //---- indicators SetIndexStyle(0,DRAW_LINE, STYLE_DOT); SetIndexBuffer(0,MS1Buffer); SetIndexStyle(1,DRAW_LINE, STYLE_DOT); SetIndexBuffer(1,MS2Buffer); SetIndexStyle(2,DRAW_LINE, STYLE_DOT); SetIndexBuffer(2,MS3Buffer); SetIndexStyle(3,DRAW_LINE, STYLE_DOT); SetIndexBuffer(3,MS4Buffer); SetIndexLabel(0,"MS1"); SetIndexLabel(1,"MS2"); SetIndexLabel(2,"MS3"); SetIndexLabel(3,"MS4"); //---- // IndicatorShortName("Mid Pivots"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here ObjectDelete("SupMS1"); ObjectDelete("SupMS2"); ObjectDelete("SupMS3"); ObjectDelete("SupMS4"); ObjectDelete("SupMS1Line"); ObjectDelete("SupMS2Line"); ObjectDelete("SupMS3Line"); ObjectDelete("SupMS4Line"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=DaysDrawBack*1440/Period(); 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; S1 = (2*P)-prev_high; S2 = P-(prev_high-prev_low); S3 = P-2*(prev_high-prev_low); S4 = P-3*(prev_high-prev_low); MS1 = (P+S1)/2; MS2 = (S1+S2)/2; MS3 = (S2+S3)/2; MS4 = (S3+S4)/2; prev_day = cur_day; } if (High[cnt]>day_high) { day_high = High[cnt]; } if (Low[cnt]