//+------------------------------------------------------------------+ //| FibonacciPivot.mq4 | //| Copyright © 2010, LeMan. | //| modification © 2015, noloxe | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, LeMan. && modification 2015, noloxe" //---- #property indicator_chart_window #property indicator_buffers 18 #property indicator_color1 LimeGreen #property indicator_color2 LimeGreen #property indicator_color3 LimeGreen #property indicator_color4 LimeGreen #property indicator_color5 LimeGreen #property indicator_color6 LimeGreen #property indicator_color7 LimeGreen #property indicator_color8 LimeGreen #property indicator_color9 DarkOrange #property indicator_color10 DarkOrange #property indicator_color11 DarkOrange #property indicator_color12 DarkOrange #property indicator_color13 DarkOrange #property indicator_color14 DarkOrange #property indicator_color15 DarkOrange #property indicator_color16 DarkOrange #property indicator_color17 Blue #property indicator_color18 Black //---- extern bool mondayGAP=false; extern int Days=5; extern double koeff=0.55; extern string kof0 = "-- The recommended values of koeff ---"; extern string kof1 = "0.55 - to squeeze levels"; extern string kof2 = "0.89 - to squeeze levels"; extern string kof3 = "1.00 - changes won't be"; extern string kof4 = "1.44 - to stretch levels"; extern string kof5 = "2.33 - to stretch levels"; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; double ExtMapBuffer9[]; double ExtMapBuffer10[]; double ExtMapBuffer11[]; double ExtMapBuffer12[]; double ExtMapBuffer13[]; double ExtMapBuffer14[]; double ExtMapBuffer15[]; double ExtMapBuffer16[]; double ExtMapBuffer17[]; double ExtMapBuffer18[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(18); IndicatorDigits(Digits); //---- indicators SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); SetIndexBuffer(3,ExtMapBuffer4); SetIndexBuffer(4,ExtMapBuffer5); SetIndexBuffer(5,ExtMapBuffer6); SetIndexBuffer(6,ExtMapBuffer7); SetIndexBuffer(7,ExtMapBuffer8); SetIndexBuffer(8,ExtMapBuffer9); SetIndexBuffer(9,ExtMapBuffer10); SetIndexBuffer(10,ExtMapBuffer11); SetIndexBuffer(11,ExtMapBuffer12); SetIndexBuffer(12,ExtMapBuffer13); SetIndexBuffer(13,ExtMapBuffer14); SetIndexBuffer(14,ExtMapBuffer15); SetIndexBuffer(15,ExtMapBuffer16); SetIndexBuffer(16,ExtMapBuffer17); SetIndexBuffer(17,ExtMapBuffer18); SetIndexStyle(0,DRAW_LINE,2); SetIndexStyle(1,DRAW_LINE,2); SetIndexStyle(2,DRAW_LINE,2); SetIndexStyle(3,DRAW_LINE,1); SetIndexStyle(4,DRAW_LINE,1); SetIndexStyle(5,DRAW_LINE); SetIndexStyle(6,DRAW_LINE); SetIndexStyle(7,DRAW_LINE); SetIndexStyle(8,DRAW_LINE,2); SetIndexStyle(9,DRAW_LINE,2); SetIndexStyle(10,DRAW_LINE,2); SetIndexStyle(11,DRAW_LINE,1); SetIndexStyle(12,DRAW_LINE,1); SetIndexStyle(13,DRAW_LINE); SetIndexStyle(14,DRAW_LINE); SetIndexStyle(15,DRAW_LINE); SetIndexStyle(16,DRAW_LINE,2); SetIndexStyle(17,DRAW_LINE,2); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- if(Period()>1439) { Comment("FibonacciPivot: Timeframe must be less D1 candles"); return(-1); } //---- int i,limit2,limit,PrevDay,counted_bars; double hhv,llv,cl,tr,optoday; //---- counted_bars=IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(Days!=0) limit2=Days*1440/Period(); // calculation number of days for drawing else limit2=limit; limit=fmin(limit,limit2); if(counted_bars==0) limit--; //---- for(i=limit; i>=0; i--) { PrevDay=iBarShift(Symbol(),PERIOD_D1,Time[i])+1; cl=iClose(NULL,PERIOD_D1,PrevDay); hhv = iHigh(NULL, PERIOD_D1, PrevDay); llv = iLow(NULL, PERIOD_D1, PrevDay); tr=hhv-llv; // height of a day candle of previous day ExtMapBuffer17[i]=cl; // Level of Closing of previous day //---- if(TimeDayOfWeek(Time[i])==1) // if Monday { optoday=iOpen(NULL,PERIOD_D1,PrevDay-1); ExtMapBuffer18[i]=optoday; // Level Opening of Monday. It is possible to hide — EMPTY_VALUE if(mondayGAP==true) { cl=optoday; // if GAP — levels drawing from Opening of Monday } } ExtMapBuffer1[i]=cl+tr*0.236*koeff; ExtMapBuffer2[i] = cl+tr*0.382*koeff; ExtMapBuffer3[i] = cl+tr*0.50*koeff; ExtMapBuffer4[i] = cl+tr*0.618*koeff; ExtMapBuffer5[i] = cl+tr*0.764*koeff; ExtMapBuffer6[i] = cl+tr*1*koeff; ExtMapBuffer7[i] = cl+tr*1.618*koeff; ExtMapBuffer8[i] = cl+tr*2.618*koeff; ExtMapBuffer9[i]=cl-tr*0.236*koeff; ExtMapBuffer10[i] = cl-tr*0.382*koeff; ExtMapBuffer11[i] = cl-tr*0.50*koeff; ExtMapBuffer12[i] = cl-tr*0.618*koeff; ExtMapBuffer13[i] = cl-tr*0.764*koeff; ExtMapBuffer14[i] = cl-tr*1*koeff; ExtMapBuffer15[i] = cl-tr*1.618*koeff; ExtMapBuffer16[i] = cl-tr*2.618*koeff; } //---- return(0); } //+------------------------------------------------------------------+