//+------------------------------------------------------------------+ //| Cams_Weekly_Rev.mq4 | //| Copyright © 2009, kris.pivo[at]gmail.com | //+------------------------------------------------------------------+ #property copyright "© Kris, 2009" //| //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Green #property indicator_color2 Red #property indicator_color3 DarkGreen #property indicator_color4 Maroon #property indicator_color5 DarkGreen #property indicator_color6 Maroon #property indicator_color7 Green #property indicator_color8 Red //---- input parameters int fontsize=8; //---- buffers double BufferH3[]; double BufferH2[]; double BufferH1[]; double BufferL1[]; double BufferL2[]; double BufferL3[]; double WH,WL,WC,Range; double H1,H2,H3,L1,L2,L3; double last_week_high, last_week_low, last_week_close, this_week_open; //+------------------------------------------------------------------+ int deinit() { ObjectDelete("LineH3"); ObjectDelete("LineH2"); ObjectDelete("LineH1"); ObjectDelete("LineL1"); ObjectDelete("LineL2"); ObjectDelete("LineL3"); ObjectDelete("LabH3"); ObjectDelete("LabH2"); ObjectDelete("LabH1"); ObjectDelete("LabL1"); ObjectDelete("LabL2"); ObjectDelete("LabL3"); Comment(""); return(0); } //+------------------------------------------------------------------+ int init() { string short_name; SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,167); SetIndexBuffer(1,BufferH3); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,160); SetIndexBuffer(2,BufferH2); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,160); SetIndexBuffer(3,BufferH1); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,160); SetIndexBuffer(4,BufferL1); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,160); SetIndexBuffer(5,BufferL2); SetIndexStyle(6,DRAW_ARROW); SetIndexArrow(6,167); SetIndexBuffer(6,BufferL3); //---- name for DataWindow and indicator subwindow label short_name="Fibonacci Weekly"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); //---- SetIndexDrawBegin(0,1); //---- return(0); } int start() { int counted_bars=IndicatorCounted(); int limit, i; //---- indicator calculation if (counted_bars==0) { ObjectCreate("LineH3", OBJ_TEXT, 0,0,0); ObjectSetText("LineH3", " Cam H3",fontsize,"Arial",indicator_color2); ObjectCreate("LineH2", OBJ_TEXT, 0,0,0); ObjectSetText("LineH2", " Cam H2",fontsize,"Arial",indicator_color3); ObjectCreate("LineH1", OBJ_TEXT, 0,0,0); ObjectSetText("LineH1", " Cam H1",fontsize,"Arial",indicator_color4); ObjectCreate("LineL1", OBJ_TEXT, 0,0,0); ObjectSetText("LineL1", " Cam L1",fontsize,"Arial",indicator_color5); ObjectCreate("LineL2", OBJ_TEXT, 0,0,0); ObjectSetText("LineL2", " Cam L2",fontsize,"Arial",indicator_color6); ObjectCreate("LineL3", OBJ_TEXT, 0,0,0); ObjectSetText("LineL3", " Cam L3",fontsize,"Arial",indicator_color7); } if(counted_bars<0) return(-1); //---- limit=(Bars-counted_bars)-1; //---- for(i=limit; i>=0;i--) { // Monday if(1==TimeDayOfWeek(Time[i]) && 1!=TimeDayOfWeek(Time[i+1]) ) // 0=Sunday, 1=Monday, ... { last_week_close=Close[i+1]; this_week_open=Open[i]; WH=last_week_high; WL=last_week_low; WC = last_week_close; double Range = (WH - WL); H3 = WC + (Range * 1/4); H2 = WC + (Range * 1/6); H1 = WC + (Range * 1/12); L1 = WC - (Range * 1/12); L2 = WC - (Range * 1/6); L3 = WC - (Range * 1/4); last_week_low = Low[i]; last_week_high = High[i]; //---- ObjectMove("LineH3", 0, Time[i],H3); ObjectMove("LineH2", 0, Time[i],H2); ObjectMove("LineH1", 0, Time[i],H1); ObjectMove("LineL1", 0, Time[i],L1); ObjectMove("LineL2", 0, Time[i],L2); ObjectMove("LineL3", 0, Time[i],L3); } last_week_high=MathMax(last_week_high, High[i]); last_week_low=MathMin(last_week_low, Low[i]); // BufferH4[i]=H4; BufferH3[i]=H3; BufferH2[i]=H2; BufferH1[i]=H1; BufferL1[i]=L1; BufferL2[i]=L2; BufferL3[i]=L3; DoLabel( "LabH3", BufferH3[0], indicator_color2 ); DoLabel( "LabH2", BufferH2[0], indicator_color3 ); DoLabel( "LabH1", BufferH1[0], indicator_color4 ); DoLabel( "LabL1", BufferL1[0], indicator_color5 ); DoLabel( "LabL2", BufferL2[0], indicator_color6 ); DoLabel( "LabL3", BufferL3[0], indicator_color7 ); } return(0); } void DoLabel( string dName, double dValue, color dColor ) { if (ObjectFind(dName) != 0) { ObjectCreate(dName,OBJ_ARROW,0,Time[0],dValue); ObjectSet(dName,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(dName,OBJPROP_COLOR,dColor); } else { ObjectMove(dName,0,Time[0],dValue); } } //+-----------------------------------------------------------------------------------------+ //| THE END | //+-----------------------------------------------------------------------------------------+