//+------------------------------------------------------------------+ //| Pivots with Mid Levels.mq4 | //| Rob | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Rob" #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 12 #property indicator_color1 Green #property indicator_color2 Green #property indicator_color3 Green #property indicator_color4 Green #property indicator_color5 Green #property indicator_color6 Green #property indicator_color7 Green #property indicator_color8 Green #property indicator_color9 Green #property indicator_color10 Green #property indicator_color11 Green #property indicator_color11 Green #property indicator_color12 Green //---- input parameters //---- buffers double PBuffer[]; double S1Buffer[]; double R1Buffer[]; double S2Buffer[]; double R2Buffer[]; double S3Buffer[]; double R3Buffer[]; double M0Buffer[]; double M1Buffer[]; double M2Buffer[]; double M3Buffer[]; double M4Buffer[]; double M5Buffer[]; string Pivot="Pivot Point",Sup1="S 1", Res1="R 1"; string Sup2="S 2", Res2="R 2", Sup3="S 3", Res3="R 3"; int fontsize=10; double P,S1,R1,S2,R2,S3,R3; double LastHigh,LastLow,x; string Med0="M 0",Med1="M 1",Med2="M 2",Med3="M 3",Med4="M 4",Med5="M 5"; double M0,M1,M2,M3,M4,M5; //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("Pivot"); ObjectDelete("Sup1"); ObjectDelete("Res1"); ObjectDelete("Sup2"); ObjectDelete("Res2"); ObjectDelete("Sup3"); ObjectDelete("Res3"); ObjectDelete("Med0"); ObjectDelete("Med1"); ObjectDelete("Med2"); ObjectDelete("Med3"); ObjectDelete("Med4"); ObjectDelete("Med5"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line SetIndexStyle(0,DRAW_LINE,0,1,Green); SetIndexStyle(1,DRAW_LINE,0,1,Green); SetIndexStyle(2,DRAW_LINE,0,1,Green); SetIndexStyle(3,DRAW_LINE,0,1,Green); SetIndexStyle(4,DRAW_LINE,0,1,Green); SetIndexStyle(5,DRAW_LINE,0,1,Green); SetIndexStyle(6,DRAW_LINE,0,1,Green); SetIndexStyle(7,DRAW_LINE,STYLE_DOT,1,Green); SetIndexStyle(8,DRAW_LINE,STYLE_DOT,1,Green); SetIndexStyle(9,DRAW_LINE,STYLE_DOT,1,Green); SetIndexStyle(10,DRAW_LINE,STYLE_DOT,1,Green); SetIndexStyle(11,DRAW_LINE,STYLE_DOT,1,Green); SetIndexStyle(12,DRAW_LINE,STYLE_DOT,1,Green); SetIndexBuffer(0,PBuffer); SetIndexBuffer(1,S1Buffer); SetIndexBuffer(2,R1Buffer); SetIndexBuffer(3,S2Buffer); SetIndexBuffer(4,R2Buffer); SetIndexBuffer(5,S3Buffer); SetIndexBuffer(6,R3Buffer); SetIndexBuffer(7,M0Buffer); SetIndexBuffer(8,M1Buffer); SetIndexBuffer(9,M2Buffer); SetIndexBuffer(10,M3Buffer); SetIndexBuffer(11,M4Buffer); SetIndexBuffer(12,M5Buffer); //---- name for DataWindow and indicator subwindow label short_name="Pivot Points"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); //---- SetIndexDrawBegin(0,1); //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int limit, i; //---- indicator calculation if (counted_bars==0) { x=Period(); if (x>240) return(-1); ObjectCreate("Pivot", OBJ_TEXT, 0, 0,0); ObjectSetText("Pivot", " Pivot Point",fontsize,"Arial",Green); ObjectCreate("Sup1", OBJ_TEXT, 0, 0, 0); ObjectSetText("Sup1", " S 1",fontsize,"Arial",Green); ObjectCreate("Res1", OBJ_TEXT, 0, 0, 0); ObjectSetText("Res1", " R 1",fontsize,"Arial",Green); ObjectCreate("Sup2", OBJ_TEXT, 0, 0, 0); ObjectSetText("Sup2", " S 2",fontsize,"Arial",Green); ObjectCreate("Res2", OBJ_TEXT, 0, 0, 0); ObjectSetText("Res2", " R 2",fontsize,"Arial",Green); ObjectCreate("Sup3", OBJ_TEXT, 0, 0, 0); ObjectSetText("Sup3", " S 3",fontsize,"Arial",Green); ObjectCreate("Res3", OBJ_TEXT, 0, 0, 0); ObjectSetText("Res3", " R 3",fontsize,"Arial",Green); ObjectCreate("Med0", OBJ_TEXT, 0, 0,0); ObjectSetText("Med0", " M 0",fontsize,"Arial",Green); ObjectCreate("Med1", OBJ_TEXT, 0, 0, 0); ObjectSetText("Med1", " M 1",fontsize,"Arial",Green); ObjectCreate("Med2", OBJ_TEXT, 0, 0, 0); ObjectSetText("Med2", " M 2",fontsize,"Arial",Green); ObjectCreate("Med3", OBJ_TEXT, 0, 0, 0); ObjectSetText("Med3", " M 3",fontsize,"Arial",Green); ObjectCreate("Med4", OBJ_TEXT, 0, 0, 0); ObjectSetText("Med4", " M 4",fontsize,"Arial",Green); ObjectCreate("Med5", OBJ_TEXT, 0, 0, 0); ObjectSetText("Med5", " M 5",fontsize,"Arial",Green); } if(counted_bars<0) return(-1); //---- last counted bar will be recounted // if(counted_bars>0) counted_bars--; limit=(Bars-counted_bars)-1; for (i=limit; i>=0;i--) { if (High[i+1]>LastHigh) LastHigh=High[i+1]; if (Low[i+1]