//+------------------------------------------------------------------+ //| fiber.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" input color FiboLvlColor=clrBlue; double Max=iLow(NULL,PERIOD_D1,1), Min=iLow(NULL,PERIOD_D1,1); double FiboLevels[11]={ 2.618, 1.618, 1, 0.768, 0.618, 0.5, 0.382, 0.236, 0, -0.618, -1.618 }; int TimeMax, TimeMin; int i; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping for (i=24; i>0; i--) { if (iClose(NULL,PERIOD_H1,i+Hour())>Max) { Max =iClose(NULL,PERIOD_H1,i+Hour()); TimeMax=iTime(NULL,PERIOD_H1,i+Hour()); } if (iClose(NULL,PERIOD_H1,i+Hour())0) DrawFibo(Min,Max,TimeMin); else DrawFibo(Max,Min,TimeMax); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { Max=iLow(NULL,PERIOD_D1,1); Min=iHigh(NULL,PERIOD_D1,1); if (Hour()==0){ for (i=24; i>0; i--) { if (iClose(NULL,PERIOD_H1,i+Hour())>Max) { Max =iClose(NULL,PERIOD_H1,i+Hour()); TimeMax=iTime(NULL,PERIOD_H1,i+Hour()); } if (iClose(NULL,PERIOD_H1,i+Hour())