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

jx_parabolicregression_stopandreverse.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Это пользовательский индикатор для MetaTrader 5, который отображает на графике линии регрессии, каналы отклонения и уровни стоп-разворота. Индикатор рассчитывает полиномиальную регрессию по ценам закрытия и строит линии поддержки и сопротивления на основе отклонений от регрессии. Также отображаются две линии стоп-разворота, которые меняют цвет в зависимости от направления тренда. Индикатор работает в окне графика и использует четыре буфера для отрисовки стрелок уровней. Настройки позволяют изменять степень регрессии, коэффициент отклонения канала и цвета линий.

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

НастройкаОписание
_RegressionDegree Степень регрессии — Степень полинома для расчета линии регрессии. Определяет сложность аппроксимирующей кривой.
_K_DeviationChannel Коэффициент отклонения канала — Коэффициент отклонения для расчета ширины канала регрессии. Влияет на расстояние линий поддержки и сопротивления от линии регрессии.
_TrendLineColor Цвет линии тренда — Цвет основной линии регрессии, отображаемой на графике.
_ResLineColor Цвет линии сопротивления — Цвет линии сопротивления второго уровня, отображаемой на графике.
_SupLineColor Цвет линии поддержки — Цвет линии поддержки второго уровня, отображаемой на графике.
_RegressionColor1 Цвет регрессии 1 — Цвет линии регрессии и канала при восходящем направлении на текущем баре.
_RegressionColor2 Цвет регрессии 2 — Цвет линии регрессии и канала при нисходящем направлении на текущем баре.
_RegressionColor3 Цвет регрессии 3 — Цвет линии регрессии и канала при восходящем направлении на прогнозных барах.
_RegressionColor4 Цвет регрессии 4 — Цвет линии регрессии и канала при нисходящем направлении на прогнозных барах.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Orange
#property indicator_color3 DeepSkyBlue
#property indicator_color4 Red

extern int _RegressionDegree=2;
extern double _K_DeviationChannel=2;
extern color _TrendLineColor=Gold;
extern color _ResLineColor = OrangeRed;
extern color _SupLineColor = DeepSkyBlue;
extern color _RegressionColor1 = Yellow;
extern color _RegressionColor2 = Lime;
extern color _RegressionColor3 = Red;
extern color _RegressionColor4 = RoyalBlue;

double _K_Fibo1 = 1.618;
double _K_Fibo2 = 2.618;

double fx,fx1;
double a[10,10],b[10],x[10],sx[20];
double sum,sum1,sq;
int p,nn,kt;

int i0,ip,pn,i0n,ipn;
long t0,tp,te,te1;
long _N_Time,_Cur_Period;

double Support1[];
double Support2[];
double Resist1[];
double Resist2[];
bool objects_initialized=false;

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

bool ObjectsInitialize()
  {

   if(p>Bars)
     {
      Comment("\n\n                    ERROR - TOO SMALL HISTORY, RETURN NOW!");
      return(false);  // then exit
     }

   kt = Period()*60;
   nn = _RegressionDegree + 1;

   t0 = Time[0];
   i0 = iBarShift(Symbol(), Period(), t0);
   ip = i0 + p;
   tp = Time[ip];
   pn = p;

   for(int j=-p/2; j<p; j++)
     {
      if(i0+j>=0)
        {
         ObjectCreate("ar"+(string)j,2,0,Time[i0+1+j],0,Time[i0+j],0);
         ObjectSet("ar"+(string)j,OBJPROP_RAY,0);
         ObjectCreate("arH"+(string)j,2,0,Time[i0+1+j],0,Time[i0+j],0);
         ObjectSet("arH"+(string)j,OBJPROP_RAY,0);
         ObjectCreate("arL"+(string)j,2,0,Time[i0+1+j],0,Time[i0+j],0);
         ObjectSet("arL"+(string)j,OBJPROP_RAY,0);
        }
     }

   ObjectCreate("LR",OBJ_TREND,0,Time[0],0,Time[0],0);
   ObjectSet("LR",OBJPROP_COLOR,_TrendLineColor);
   ObjectSet("LR",OBJPROP_RAY,1);
   ObjectSet("LR",OBJPROP_STYLE,STYLE_DASH);

   ObjectCreate("2-nd Level ResLine",OBJ_TREND,0,Time[0],0,
                Time[0],0);
   ObjectSet("2-nd Level ResLine",OBJPROP_COLOR,_ResLineColor);
   ObjectSet("2-nd Level ResLine",OBJPROP_RAY,1);
   ObjectSet("2-nd Level ResLine",OBJPROP_STYLE,STYLE_DASH);

   ObjectCreate("2-nd Level SupLine",OBJ_TREND,0,Time[0],0,
                Time[0],0);
   ObjectSet("2-nd Level SupLine",OBJPROP_COLOR,_SupLineColor);
   ObjectSet("2-nd Level SupLine",OBJPROP_RAY,1);
   ObjectSet("2-nd Level SupLine",OBJPROP_STYLE,STYLE_DASH);

   return(true);
  }

int deinit()
  {
   for(int j=p; j>=-p/2; j--)
     {
      ObjectDelete("ar"+(string)j);
      ObjectDelete("arH"+(string)j);
      ObjectDelete("arL"+(string)j);
     }
   ObjectDelete("LR");
   ObjectDelete("2-nd Level ResLine");
   ObjectDelete("2-nd Level SupLine");
   Comment("");
   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }
   if(!objects_initialized)
      objects_initialized=ObjectsInitialize();

   if(_N_Time!=Time[0] || _Cur_Period!=Period())
     {
      int i,n,k;

      if(i0n!=i0 || ipn!=ip)
        {
         p=ip-i0;
         i0n = ip;
         ipn = ip;

         if(pn<p)
           {
            for(int j=pn; j<=p; j++)
              {
               ObjectCreate("ar"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("ar"+(string)j,OBJPROP_RAY,0);
               ObjectCreate("arH"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("arH"+(string)j,OBJPROP_RAY,0);
               ObjectCreate("arL"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("arL"+(string)j,OBJPROP_RAY,0);
              }

            for(j=-pn/2; j>=-p/2; j--)
              {
               ObjectCreate("ar"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("ar"+(string)j,OBJPROP_RAY,0);
               ObjectCreate("arH"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("arH"+(string)j,OBJPROP_RAY,0);
               ObjectCreate("arL"+(string)j,2,0,Time[i0+1+j],0,
                            Time[i0+j],0);
               ObjectSet("arL"+(string)j,OBJPROP_RAY,0);
              }
            pn=p;
           }
         if(pn>p)
           {
            for(j=pn; j>=p; j--)
              {
               ObjectDelete("ar"+(string)j);
               ObjectDelete("arH"+(string)j);
               ObjectDelete("arL"+(string)j);
              }
            for(j=-p/2; j>=-pn/2; j--)
              {
               ObjectDelete("ar"+(string)j);
               ObjectDelete("arH"+(string)j);
               ObjectDelete("arL"+(string)j);
              }
            pn=p;
           }
        }

      sx[1]=p+1;

      for(i=1; i<=nn*2-2; i++)
        {
         sum=0.0;
         for(n=i0; n<=i0+p; n++)
            sum+= MathPow(n,i);
         sx[i+1]= sum;
        }

      for(i=1; i<=nn; i++)
        {
         sum=0.0;
         for(n=i0; n<=i0+p; n++)
           {
            if(i==1)
               sum+=Close[n];
            else
               sum+=Close[n]*MathPow(n,i-1);
           }
         b[i]=sum;
        }

      for(j=1; j<=nn; j++)
        {
         for(i=1; i<=nn; i++)
           {
            k=i+j-1;
            a[i,j]=sx[k];
           }
        }

      Print("nn=",nn);
      af_Gauss(nn,a,b,x);

      sq=0.0;
      for(n=p; n>=0; n--)
        {
         sum=0.0;
         for(k=1; k<=_RegressionDegree; k++)
           {
            sum+=x[k+1]*MathPow(i0+n,k);
            sum1+=x[k+1]*MathPow(i0+n+1,k);
           }
         fx = x[1]+ sum;
         sq+= MathPow(Close[n+i0] - fx,2);
        }
      sq=_K_DeviationChannel*MathSqrt(sq/(p+1));

      for(n=p; n>=-p/2; n--)
        {
         sum=0.0;
         sum1=0.0;

         for(k=1; k<=_RegressionDegree; k++)
           {
            sum+=x[k+1]*MathPow(i0+n,k);
            sum1+=x[k+1]*MathPow(i0+n+1,k);
           }
         fx=x[1]+sum;
         fx1=x[1]+sum1;

         if(n>=0 && n<p)
           {
            ObjectMove("ar"+(string)n,0,Time[n+i0+1],fx1);
            ObjectMove("ar"+(string)n,1,Time[n+i0],fx);
            ObjectMove("arH"+(string)n,0,Time[n+i0+1],fx1+sq);
            ObjectMove("arH"+(string)n,1,Time[n+i0],fx+sq

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

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

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

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

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

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

Стоимость полного кода
941,30₽ ≈ $11.50