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

fibos.mq5

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

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

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

О программе

Индикатор для MetaTrader 5, отображающий уровни Фибоначчи на графике цены. Он определяет экстремумы (минимум и максимум) за заданный диапазон баров и строит на их основе линию тренда и объект Фибоначчи с настраиваемыми процентными уровнями. Результат визуализируется вертикальными линиями, трендовой линией и набором горизонтальных уровней Фибоначчи в окне графика.

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

НастройкаОписание
HighToLow Высокий к низкому — Переключатель направления: при включении уровни рассчитываются от максимума к минимуму, при выключении — от минимума к максимуму
Fibo_Level_1 Fibo_Level_1 — Значение первого промежуточного уровня Фибоначчи
Fibo_Level_2 Fibo_Level_2 — Значение второго промежуточного уровня Фибоначчи
Fibo_Level_3 Fibo_Level_3 — Значение третьего промежуточного уровня Фибоначчи
Fibo_Level_4 Fibo_Level_4 — Значение четвёртого промежуточного уровня Фибоначчи
Fibo_Level_5 Fibo_Level_5 — Значение пятого промежуточного уровня Фибоначчи
Fibo_Level_6 Fibo_Level_6 — Значение шестого промежуточного уровня Фибоначчи
StartBar StartBar — Начальный бар, с которого начинается поиск экстремумов
BarsBack BarsBack — Количество баров назад для определения максимальной и минимальной цены
Pause Pause — При включении приостанавливает перерисовку и обновление уровней индикатора
Получить полный код

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

#property version   "1.00"

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_plots   8

input bool  HighToLow  = true;
input double Fibo_Level_1 = 0.236;
input double Fibo_Level_2 = 0.382;
input double Fibo_Level_3 = 0.500;
input double Fibo_Level_4 = 0.618;
input double Fibo_Level_5 = 0.764;
input double Fibo_Level_6 = 0.886;
input int    StartBar     = 0;
input int    BarsBack     = 20;
input bool   Pause        = false;
color VerticalLinesColor = clrRed;
color FiboLinesColors = clrBlue;

double Fibo_Level_0 = 0.000;
double Fibo_Level_7 = 1.000;

double f_1[];
double f_2[];
double f_3[];
double f_4[];
double f_5[];
double f_6[];
double f_7[];
double f_8[];

#define MODE_OPEN 0
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_CLOSE 3
#define MODE_VOLUME 4 
#define MODE_TIME 5
#define MODE_REAL_VOLUME 5

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

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[])
{
      // код доступен только после оплаты
   }
   if(Pause==false)
   {
      int LowBar = 0, HighBar= 0;
      double LowValue = 0 ,HighValue = 0;

      int lowest_bar = iLowest(NULL,0,MODE_LOW,BarsBack,StartBar);
      int highest_bar = iHighest(NULL,0,MODE_HIGH,BarsBack,StartBar);

      double higher_point = 0;
      double lower_point = 0;
      HighValue=High(highest_bar);
      LowValue=Low(lowest_bar);

      if(HighToLow)
      {
         DrawVerticalLine("v_u_hl",highest_bar,VerticalLinesColor);
         DrawVerticalLine("v_l_hl",lowest_bar,VerticalLinesColor);

         if(ObjectFind(0,"trend_hl")<0)
         ObjectCreate(0,"trend_hl",OBJ_TREND,0,Time(highest_bar),HighValue,Time(lowest_bar),LowValue);
         ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,0,Time(highest_bar));
         ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,1,Time(lowest_bar));
         ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,0,HighValue);
         ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,1,LowValue);
         ObjectSetInteger(0,"trend_hl",OBJPROP_COLOR,VerticalLinesColor);
         ObjectSetInteger(0,"trend_hl",OBJPROP_STYLE,STYLE_DOT);
         ObjectSetInteger(0,"trend_hl",OBJPROP_RAY,false);

         if(ObjectFind(0,"Fibo_hl")<0)
         ObjectCreate(0,"Fibo_hl",OBJ_FIBO,0,0,HighValue,0,LowValue);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,0,HighValue);
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,1,LowValue);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_TIME,0,Time(highest_bar));
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_TIME,1,Time(lowest_bar));
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_COLOR,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,0,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,1,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,2,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,3,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,4,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,5,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,6,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELCOLOR,7,FiboLinesColors);
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_LEVELS,8);
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,0,Fibo_Level_0);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,1,Fibo_Level_1); 
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,2,Fibo_Level_2);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,3,Fibo_Level_3);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,4,Fibo_Level_4);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,5,Fibo_Level_5); 
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,6,Fibo_Level_6);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_LEVELVALUE,7,Fibo_Level_7); 
         ObjectSetInteger(0,"Fibo_hl",OBJPROP_RAY_RIGHT,true);
         ChartRedraw();           

         for(int i=prev_calculated;i<rates_total;i++)
         {
            f_8[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_7,_Digits);
            f_7[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_6,_Digits);
            f_6[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_5,_Digits);
            f_5[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_4,_Digits);
            f_4[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_3,_Digits);
            f_3[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_2,_Digits);
            f_2[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_1,_Digits);
            f_1[i] = NormalizeDouble(LowValue+(HighValue-LowValue)*Fibo_Level_0,_Digits);
         }
      }
      else //LowToHigh
      {
         DrawVerticalLine("v_u_hl",highest_bar,VerticalLinesColor);
         DrawVerticalLine("v_l_hl",lowest_bar,VerticalLinesColor);

         if(ObjectFind(0,"trend_hl")<0)
         ObjectCreate(0,"trend_hl",OBJ_TREND,0,Time(lowest_bar),LowValue,Time(highest_bar),HighValue);
         ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,0,Time(lowest_bar));
         ObjectSetInteger(0,"trend_hl",OBJPROP_TIME,1,Time(highest_bar));
         ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,0,LowValue);
         ObjectSetDouble(0,"trend_hl",OBJPROP_PRICE,1,HighValue);
         ObjectSetInteger(0,"trend_hl",OBJPROP_STYLE,STYLE_DOT);
         ObjectSetInteger(0,"trend_hl",OBJPROP_RAY,false);    

         if(ObjectFind(0,"Fibo_hl")<0)
         ObjectCreate(0,"Fibo_hl",OBJ_FIBO,0,0,LowValue,0,HighValue);  
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,0,LowValue);
         ObjectSetDouble(0,"Fibo_hl",OBJPROP_PRICE,1,HighValue);
         ObjectSetInt

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

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

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

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

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

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

Стоимость полного кода
1 147,60₽ ≈ $14.03