← К каталогу
Исходный код · ID 4027

AutoDayFibs

autodayfibs.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

AutoDayFibs — индикатор MetaTrader 5 для автоматического построения уровней Фибоначчи на дневных графиках. Индикатор определяет максимум и минимум текущего торгового дня и рассчитывает уровни Фибоначчи на основе их диапазона. При включении параметра автоматической подстройки уровни обновляются в заданный час, переносясь на новый торговой день.

Индикатор отображает горизонтальные линии для уровней 0.0, 23.6, 38.2, 50.0, 61.8, 76.4, 100.0, 161.8, 261.8 и 423.6 с настраиваемыми цветами, стилями и толщинами. Каждому уровню присваивается текстовая подпись с числовым значением.

AutoDayFibs работает только на таймфреймах ниже дневного (M1–H1), так как для расчёта используются данные графика PERIOD_D1. При недостаточной истории индикатор не отрисовывает уровни. Все графические объекты удаляются при деинициализации.

Настройки программы

НастройкаОписание
AutomaticallyAdjustToToday Включает или отключает автоматическую подстройку уровней Фибоначчи под текущие цены сегодняшнего дня. При активном значении индикатор определяет новый торговой день и переносит уровни в соответствии с заданным часом.
TimeToAdjust Час, начиная с которого индикатор переносит уровни Фибоначчи на новый торговой день. Принимает значения от 00 до 23.
iDaysBackForHigh Количество дней назад от текущего, от которого берётся уровень максимума для расчёта диапазона Фибоначчи.
iDaysBackForLow Количество дней назад от текущего, от которого берётся уровень минимума для расчёта диапазона Фибоначчи.
TextSize Размер шрифта для текстовых подписей уровней Фибоначчи на графике.
Color_fib000 Цвет горизонтальной линии и подписи уровня Фибоначчи 0.0.
Style_fib000 Стиль линии уровня Фибоначчи 0.0 (сплошная, пунктирная, точечная и т. д.).
Width_fib000 Толщина линии уровня Фибоначчи 0.0.
Color_fib236 Цвет горизонтальной линии и подписи уровня Фибоначчи 23.6.
Style_fib236 Стиль линии уровня Фибоначчи 23.6 (сплошная, пунктирная, точечная и т. д.).
Width_fib236 Толщина линии уровня Фибоначчи 23.6.
Color_fib382 Цвет горизонтальной линии и подписи уровня Фибоначчи 38.2.
Style_fib382 Стиль линии уровня Фибоначчи 38.2 (сплошная, пунктирная, точечная и т. д.).
Width_fib382 Толщина линии уровня Фибоначчи 38.2.
Color_fib500 Цвет горизонтальной линии и подписи уровня Фибоначчи 50.0.
Style_fib500 Стиль линии уровня Фибоначчи 50.0 (сплошная, пунктирная, точечная и т. д.).
Width_fib500 Толщина линии уровня Фибоначчи 50.0.
Color_fib618 Цвет горизонтальной линии и подписи уровня Фибоначчи 61.8.
Style_fib618 Стиль линии уровня Фибоначчи 61.8 (сплошная, пунктирная, точечная и т. д.).
Width_fib618 Толщина линии уровня Фибоначчи 61.8.
Color_fib764 Цвет горизонтальной линии и подписи уровня Фибоначчи 76.4.
Style_fib764 Стиль линии уровня Фибоначчи 76.4 (сплошная, пунктирная, точечная и т. д.).
Width_fib764 Толщина линии уровня Фибоначчи 76.4.
Color_fib1000 Цвет горизонтальной линии и подписи уровня Фибоначчи 100.0.
Style_fib1000 Стиль линии уровня Фибоначчи 100.0 (сплошная, пунктирная, точечная и т. д.).
Width_fib1000 Толщина линии уровня Фибоначчи 100.0.
Color_fib1618 Цвет горизонтальной линии и подписи уровня Фибоначчи 161.8.
Style_fib1618 Стиль линии уровня Фибоначчи 161.8 (сплошная, пунктирная, точечная и т. д.).
Width_fib1618 Толщина линии уровня Фибоначчи 161.8.
Color_fib2618 Цвет горизонтальной линии и подписи уровня Фибоначчи 261.8.
Style_fib2618 Стиль линии уровня Фибоначчи 261.8 (сплошная, пунктирная, точечная и т. д.).
Width_fib2618 Толщина линии уровня Фибоначчи 261.8.
Color_fib4236 Цвет горизонтальной линии и подписи уровня Фибоначчи 423.6.
Style_fib4236 Стиль линии уровня Фибоначчи 423.6 (сплошная, пунктирная, точечная и т. д.).
Width_fib4236 Толщина линии уровня Фибоначчи 423.6.
Получить полный код

Поиск по коду файла

#property version   "1.00"

#property indicator_chart_window 

#property indicator_buffers 0

#property indicator_plots   0

enum Hour //Type of constant
  {
   H00=0,    //00
   H01,      //01
   H02,      //02
   H03,      //03
   H04,      //04
   H05,      //05
   H06,      //06
   H07,      //07
   H08,      //08
   H09,      //09
   H10,      //10
   H11,      //11
   H12,      //12
   H13,      //13
   H14,      //14
   H15,      //15
   H16,      //16
   H17,      //17
   H18,      //18
   H19,      //19
   H20,      //20
   H21,      //21
   H22,      //22
   H23,      //23
  };

enum Number
  {
   Number_0,
   Number_1,
   Number_2,
   Number_3
  };

enum Width
  {
   Width_1=1, //1
   Width_2,   //2
   Width_3,   //3
   Width_4,   //4
   Width_5    //5
  };

enum STYLE
  {
   SOLID_,//Solid line
   DASH_,//Dashed line
   DOT_,//Dotted line
   DASHDOT_,//Dot-dash line
   DASHDOTDOT_   //Dot-dash line with double dots
  };

input bool  AutomaticallyAdjustToToday = true; //adjustment under the current prices
input Hour  TimeToAdjust=H00;                  //the hour of shifting Fibo
input uint  iDaysBackForHigh=0;                //number of days back to obtain low
input uint  iDaysBackForLow=0;                 //number of days back to obtain low
input uint  TextSize=10;                       //text font size

input color  Color_fib000 = clrBlueViolet; //color for the fib000 level
input STYLE  Style_fib000 = SOLID_;         //fib000 level style
input Width  Width_fib000 = Width_2;        //fib000 level line width

input color  Color_fib236 = clrBlueViolet; //color for the fib236 level
input STYLE  Style_fib236 = SOLID_;         //fib236 level line style
input Width  Width_fib236 = Width_2;        //fib236 level line width

input color  Color_fib382 = clrBlueViolet; //color for the fib382 level
input STYLE  Style_fib382 = SOLID_;         //fib382 level line style
input Width  Width_fib382 = Width_2;        //fib382 level line width

input color  Color_fib500 = clrBlueViolet; //color for the fib500 level
input STYLE  Style_fib500 = SOLID_;         //fib500 level line style
input Width  Width_fib500 = Width_2;        //fib500 level line width

input color  Color_fib618 = clrBlueViolet; //color for the fib618 level
input STYLE  Style_fib618 = SOLID_;         //fib618 level line style
input Width  Width_fib618 = Width_2;        //fib618 level line width

input color  Color_fib764 = clrBlueViolet; //color for the fib764 level
input STYLE  Style_fib764 = SOLID_;         //fib764 level line style
input Width  Width_fib764 = Width_2;        //fib764 level line width

input color  Color_fib1000 = clrBlueViolet; //color for the fib1000 level
input STYLE  Style_fib1000 = SOLID_;         //fib1000 level line style
input Width  Width_fib1000 = Width_2;        //fib1000 level line width

input color  Color_fib1618 = clrBlueViolet; //color for the fib1618 level
input STYLE  Style_fib1618 = SOLID_;         //fib1618 level line style
input Width  Width_fib1618 = Width_2;        //fib1618 level line width

input color  Color_fib2618 = clrBlueViolet; //color for the fib2618 level
input STYLE  Style_fib2618 = SOLID_;         //fib2618 level line style
input Width  Width_fib2618 = Width_1;        //fib2618 level line width

input color  Color_fib4236 = clrBlueViolet; //color for the fib4236 level
input STYLE  Style_fib4236 = SOLID_;         //fib4236 level line style
input Width  Width_fib4236 = Width_2;        //fib4236 level line width

double fib000,
fib236,
fib382,
fib500,
fib618,
fib764,
fib1000,
fib1618,
fib2618,
fib4236,
range,
prevRange;
bool objectsExist,highFirst;

int min_rates_total,DaysBackForHigh,DaysBackForLow;

void OnInit()
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {

   ObjectDelete(0,"fib000");
   ObjectDelete(0,"fib000_label");
   ObjectDelete(0,"fib236");
   ObjectDelete(0,"fib236_label");
   ObjectDelete(0,"fib382");
   ObjectDelete(0,"fib382_label");
   ObjectDelete(0,"fib500");
   ObjectDelete(0,"fib500_label");
   ObjectDelete(0,"fib618");
   ObjectDelete(0,"fib618_label");
   ObjectDelete(0,"fib764");
   ObjectDelete(0,"fib764_label");
   ObjectDelete(0,"fib1000");
   ObjectDelete(0,"fib1000_label");
   ObjectDelete(0,"fib1618");
   ObjectDelete(0,"fib1618_label");
   ObjectDelete(0,"fib2618");
   ObjectDelete(0,"fib2618_label");
   ObjectDelete(0,"fib4236");
   ObjectDelete(0,"fib4236_label");

  }

int OnCalculate(
                const int rates_total,    // amount of history in bars at the current tick
                const int prev_calculated,// amount of history in bars at the previous tick
                const datetime &time[],
                const double &open[],
                const double& high[],     // price array of maximums of price for the calculation of indicator
                const double& low[],      // price array of minimums of price for the calculation of indicator
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
                )
  {
      // код доступен только после оплаты
   }

   if(_Period>=PERIOD_D1 || rates_total<min_rates_total) return(0);

   ArraySetAsSeries(time,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);

   if(AutomaticallyAdjustToToday==true)
     {
      MqlDateTime tm;
      TimeToStruct(time[0],tm);

      if(tm.hour>=0 && tm.hour<TimeToAdjust)
        {
         DaysBackForHigh=H01;
         DaysBackForLow =H01;
        }
      else if(tm.hour>=DaysBackForLow && tm.hour<=H23)
        {
         DaysBackForHigh=H00;
         DaysBackForLow =H00;
        }
     }

   double iLow[1],iHigh[1];
   if(CopyLow(NULL,PERIOD_D1,DaysBackForLow,1,iLow)<1)return(0);
   if(CopyHigh(NULL,PERIOD_D1,DaysBackForHigh,1,iHigh)<1)return(0);
   range=iHigh[0]-iLow[0];

   for(int iii=0; iii<rates_total; iii++)
     {
      if(high[iii]==iHigh[0])
        {
         highFirst=true;
         break;
        }
      else if(low[iii]==iLow[0])
        {
         highFirst=false;
         break;
        }
     }

   if(prevRange!=range)
     {
      objectsExist=false;
      prevRange=range;
     }

   if(!highFirst)
     {
      fib000 = iLow[0];
      fib236 = (range * 0.236) + iLow[0];
      fib382 = (range * 0.3

Показано первые 50% кода (символов: 9680)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
968₽ ≈ $11.83