//+------------------------------------------------------------------+
//|                                          i-IntradayFibonacci.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 14.10.2005  Внутридневные уровни Фибоначчи                       |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Lime
#property indicator_color3 Yellow
#property indicator_color4 Salmon

//------- Глобальные переменные --------------------------------------

//------- Поключение внешних модулей ---------------------------------

//------- Внешние параметры индикатора -------------------------------
extern int NumberOfBars = 1000;  // Количество баров обсчёта (0-все)

//------- Буферы индикатора ------------------------------------------
double buf24[];
double buf38[];
double buf62[];
double buf76[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  SetIndexBuffer(0, buf24);
  SetIndexStyle (0, DRAW_LINE, STYLE_DOT);
  SetIndexEmptyValue(0, EMPTY_VALUE);

  SetIndexBuffer(1, buf38);
  SetIndexStyle (1, DRAW_LINE, STYLE_DOT);
  SetIndexEmptyValue(1, EMPTY_VALUE);

  SetIndexBuffer(2, buf62);
  SetIndexStyle (2, DRAW_LINE, STYLE_DOT);
  SetIndexEmptyValue(2, EMPTY_VALUE);

  SetIndexBuffer(3, buf76);
  SetIndexStyle (3, DRAW_LINE, STYLE_DOT);
  SetIndexEmptyValue(3, EMPTY_VALUE);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  double dMax, dMin;
  int    loopbegin, nsb, prevDay, shift;

 	if (NumberOfBars==0) loopbegin = Bars - 1;
  else loopbegin = NumberOfBars - 1;

  for (shift=loopbegin; shift>=0; shift--) {
    if (prevDay!=TimeDay(Time[shift])) {
      nsb=iBarShift(NULL, PERIOD_D1, Time[shift]);
      dMax=iHigh(NULL, PERIOD_D1, nsb);
      dMin=iLow (NULL, PERIOD_D1, nsb);
    }
    buf24[shift]=dMin-(dMin-dMax)*0.236;
    buf38[shift]=dMin-(dMin-dMax)*0.382;
    buf62[shift]=dMin-(dMin-dMax)*0.618;
    buf76[shift]=dMin-(dMin-dMax)*0.764;
    prevDay=TimeDay(Time[shift]);
  }
}
//+------------------------------------------------------------------+

