//+------------------------------------------------------------------+ //| Waddah Attar Pivot | //| Copyright © 2007, ww.metaforex.net | //| Waddah Attar www.metaforex.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, www.metaforex.net" #property link "www.metaforex.net" //---- #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Green #property indicator_color2 Red #property indicator_color3 Green #property indicator_color4 Red #property indicator_color5 Green #property indicator_color6 Red #property indicator_color7 Green #property indicator_color8 Red //---- buffers double P1Buffer[]; double P2Buffer[]; double P3Buffer[]; double P4Buffer[]; double P5Buffer[]; double P6Buffer[]; double P7Buffer[]; double P8Buffer[]; //---- int myPeriod = PERIOD_W1; //---- double PP, R4, S4, R5, S5, R6, S6, R7, S7, Q; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0, P1Buffer); SetIndexBuffer(1, P2Buffer); SetIndexBuffer(2, P3Buffer); SetIndexBuffer(3, P4Buffer); SetIndexBuffer(4, P5Buffer); SetIndexBuffer(5, P6Buffer); SetIndexBuffer(6, P7Buffer); SetIndexBuffer(7, P8Buffer); //---- SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 1); SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 1); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("WeekR4"); ObjectDelete("WeekR5"); ObjectDelete("WeekR6"); ObjectDelete("WeekR7"); //---- ObjectDelete("WeekS4"); ObjectDelete("WeekS5"); ObjectDelete("WeekS6"); ObjectDelete("WeekS7"); //---- ObjectDelete("txtWeekR4"); ObjectDelete("txtWeekR5"); ObjectDelete("txtWeekR6"); ObjectDelete("txtWeekR7"); //---- ObjectDelete("txtWeekS4"); ObjectDelete("txtWeekS5"); ObjectDelete("txtWeekS6"); ObjectDelete("txtWeekS7"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, dayi, counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; //---- for(i = limit - 1; i >= 0; i--) { dayi = iBarShift(Symbol(), myPeriod, Time[i], false); Q = (iHigh(Symbol(), myPeriod,dayi + 1) - iLow(Symbol(), myPeriod, dayi + 1)); PP = (iHigh(Symbol(), myPeriod, dayi + 1) + iLow(Symbol(), myPeriod, dayi + 1) + iClose(Symbol(), myPeriod, dayi + 1) + iOpen(Symbol(), myPeriod, dayi)) / 4; //---- R4 = PP + (Q * 0.62); S4 = PP - (Q * 0.62); //---- R5 = PP + (Q * 0.76); S5 = PP - (Q * 0.76); //---- R6 = PP + (Q * 1); S6 = PP - (Q * 1); //---- R7 = PP + (Q * 1.23); S7 = PP - (Q * 1.23); //---- P1Buffer[i] = R4; SetPrice("WeekR4", Time[i], R4, Green); SetText("txtWeekR4", "WR4", Time[i], R4, Green); //---- P2Buffer[i] = S4; SetPrice("WeekS4", Time[i], S4, Red); SetText("txtWeekS4", "WS4", Time[i], S4, Red); //---- P3Buffer[i] = R5; SetPrice("WeekR5", Time[i], R5, Green); SetText("txtWeekR5", "WR5", Time[i], R5, Green); //---- P4Buffer[i] = S5; SetPrice("WeekS5", Time[i], S5, Red); SetText("txtWeekS5", "WS5", Time[i], S5, Red); //---- P5Buffer[i] = R6; SetPrice("WeekR6", Time[i], R6, Green); SetText("txtWeekR6", "WR6", Time[i], R6, Green); //---- P6Buffer[i] = S6; SetPrice("WeekS6", Time[i], S6, Red); SetText("txtWeekS6", "WS6", Time[i], S6, Red); //---- P7Buffer[i] = R7; SetPrice("WeekR7", Time[i], R7, Green); SetText("txtWeekR7", "WR7", Time[i], R7, Green); //---- P8Buffer[i] = S7; SetPrice("WeekS7", Time[i], S7, Red); SetText("txtWeekS7", "WS7", Time[i], S7, Red); } //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void SetPrice(string name, datetime Tm, double Prc, color clr) { if(ObjectFind(name) == -1) { ObjectCreate(name, OBJ_ARROW, 0, Tm, Prc); ObjectSet(name, OBJPROP_COLOR, clr); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); } else { ObjectSet(name, OBJPROP_TIME1, Tm); ObjectSet(name, OBJPROP_PRICE1, Prc); ObjectSet(name, OBJPROP_COLOR, clr); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void SetText(string name, string txt, datetime Tm, double Prc, color clr) { if(ObjectFind(name) == -1) { ObjectCreate(name, OBJ_TEXT, 0, Tm, Prc); ObjectSetText(name, txt, 10, "Times New Roman", clr); ObjectSet(name, OBJPROP_CORNER, 2); } else { ObjectSet(name, OBJPROP_TIME1, Tm); ObjectSet(name, OBJPROP_PRICE1, Prc); ObjectSetText(name, txt, 10, "Times New Roman", clr); ObjectSet(name, OBJPROP_CORNER, 2); } } //+------------------------------------------------------------------+