fibonaccipivot

Author: Copyright � 2010, LeMan. && modification 2015, noloxe
fibonaccipivot
Price Data Components
Series array that contains close prices for each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains open prices of each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
fibonaccipivot
//+------------------------------------------------------------------+
//|                                               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);
  }
//+------------------------------------------------------------------+

Comments