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

! smartmoney fractal levels v3.mq5

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

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

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

О программе

Данный индикатор предназначен для расчёта и визуализации фрактальных уровней ценовых данных на графике MetaTrader 5. Он вычисляет три уровня фракталов на основе максимумов и минимумов свечей и отображает их в виде стрелок и линий тренда.

Уровень 1 представляет базовые фракталы, определяемые по заданному количеству баров слева и справа. Уровни 2 и 3 вычисляются как «мажорные» фракталы, выявляемые по последовательностям фракталов предыдущего уровня. Каждый уровень можно отображать независимо с настраиваемыми цветами, толщиной и типом маркеров.

Индикатор позволяет рисовать горизонтальные линии от фракталов, ограничивать их отображение только активными или определёнными уровнями, а также продлевать линии тренда до нулевого бара. Дополнительно доступна настройка типа стрелок (круги, стрелки, треугольники) и отображение информационных комментариев на графике.

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

НастройкаОписание
FractalBars_LeftRight Количество баров слева и справа для определения базового фрактала
FractalArrows_Type Тип маркеров фракталов: круги, стрелки или треугольники
Draw_Fractals_WithoutLines Отключение отрисовки линий фракталов (только стрелки)
sLevels Текстовый параметр-заголовок для раздела уровней фракталов
Draw_Level1_Arrows Отображение стрелок фрактала уровня 1
Draw_Level2_Arrows Отображение стрелок фрактала уровня 2
Draw_LastLevel2_TrendLines Продление последних линий тренда уровня 2 до нулевого бара
Draw_Level3_Arrows Отображение стрелок фрактала уровня 3
TrendLines_Width Толщина линий тренда
TrendLines_Style Стиль линий тренда
sFractalLines Текстовый параметр-заголовок для раздела линий фракталов
DrawOnly_Level23Lines Отрисовка горизонтальных линий только для фракталов уровней 2 и 3
DrawOnly_AliveLines Отображение линий фракталов только до ближайшего фрактала (активных линий)
EndOfLines Условие определения конца линии фрактала: по верхней/нижней точке свечи или по телу свечи
FractalLines_Width Толщина линий фракталов
FractalLines_Style Стиль линий фракталов
Color_UpperFractal_Lines Цвет верхних линий фракталов
Color_LowerFractal_Lines Цвет нижних линий фракталов
sArrows Текстовый параметр-заголовок для раздела стрелок
Arrow_Level1_Width Толщина стрелок уровня 1
Arrow_Level1_Color_UP Цвет стрелок уровня 1, указывающих на восходящий фрактал
Arrow_Level1_Color_DN Цвет стрелок уровня 1, указывающих на нисходящий фрактал
Arrow_Level2_Width Толщина стрелок уровня 2
Arrow_Level2_Color_UP Цвет стрелок уровня 2, указывающих на восходящий фрактал
Arrow_Level2_Color_DN Цвет стрелок уровня 2, указывающих на нисходящий фрактал
Arrow_Level3_Width Толщина стрелок уровня 3
Arrow_Level3_Color_UP Цвет стрелок уровня 3, указывающих на восходящий фрактал
Arrow_Level3_Color_DN Цвет стрелок уровня 3, указывающих на нисходящий фрактал
Show_Comments Отображение информационных комментариев на графике
MaximumBarsBack Максимальное количество баров назад для расчёта фракталов
Получить полный код

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

#property strict

#include <stdlib.mqh>
#include <WinUser32.mqh>

/*+------------------------------------------------------------------+
23.04.2019  v1 - First version, with horizontal fractal lines
27.04.2019  v2 - H-Lines only for fractals Level2/3   yes/no
28.04.2019  v3 - Disable the draw of Level-1 arrows

#property indicator_chart_window

#property indicator_buffers 6

enum ENUM_ARROWS_TYPE
  {
   Circles,
   Arrows,
   Triangles,
   NONE
  };

enum ENUM_STOP_LINE
  {
   Candle_HighLow,
   Candle_Body
  };

input int               FractalBars_LeftRight   =1;
sinput ENUM_ARROWS_TYPE FractalArrows_Type      =Circles;
input bool              Draw_Fractals_WithoutLines=false;
sinput string           sLevels="Fractal levels 1, 2 and 3"; //=================================
input bool              Draw_Level1_Arrows      =false;
input bool              Draw_Level2_Arrows      =true;
sinput bool             Draw_LastLevel2_TrendLines=true;
input bool              Draw_Level3_Arrows      =true;
input int               TrendLines_Width        =2;
input ENUM_LINE_STYLE   TrendLines_Style        =STYLE_SOLID;
sinput string           sFractalLines="Fractal lines"; //=================================
input bool              DrawOnly_Level23Lines   =true;
input bool              DrawOnly_AliveLines     =false;
input ENUM_STOP_LINE    EndOfLines              =Candle_HighLow;
input int               FractalLines_Width      =1;
input ENUM_LINE_STYLE   FractalLines_Style      =STYLE_SOLID;
input color             Color_UpperFractal_Lines=clrDodgerBlue;
input color             Color_LowerFractal_Lines=clrMagenta;
sinput string           sArrows="ARROWS"; //=================================                                          
sinput int   Arrow_Level1_Width   =2;
sinput color Arrow_Level1_Color_UP=clrBlue;
sinput color Arrow_Level1_Color_DN=clrRed;
sinput int   Arrow_Level2_Width   =2;
sinput color Arrow_Level2_Color_UP=clrBlue;
sinput color Arrow_Level2_Color_DN=clrRed;
sinput int   Arrow_Level3_Width   =4;
sinput color Arrow_Level3_Color_UP=clrBlue;
sinput color Arrow_Level3_Color_DN=clrRed;

input bool Show_Comments=true;
input int MaximumBarsBack=500;

int Equals=3; //5;
int nLeftUp=1; //2;
int nRightUp=1; //2;
int nLeftDown=1; //2;
int nRightDown=1; //2;
/*=================================================================*/

string objTS="objFL_";
string CR="\n";

double Fractal1_UP[],Fractal2_UP[],Fractal3_UP[];
double Fractal1_DN[],Fractal2_DN[],Fractal3_DN[];

int cntup=0,cntdown=0,cnt=0;
int r=0,l=0,e=0;
int fup=0,fdown=0;
string shortName;
int nBars;

int ArrowCode1_UP,ArrowCode1_DN; //Level 1

int ArrowCode2_UP=164;  //Level 2 - Circle with MiddlePoint
int ArrowCode2_DN=164;
int ArrowCode3_UP=168;  //Level 3 - Rectangle
int ArrowCode3_DN=168;

datetime thisTime,oldTime;

double dailyADR,maxChannelHeight;
datetime lastTime1,lastTime2;
double lastPrice1,lastPrice2;

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

int deinit()
  {
   ObjectsDeleteAll(0,objTS);
   Comment("");

   return(0);
  }

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[])
  {
      // код доступен только после оплаты
   }

void Draw_FractalLines()
  {
   int iBar1=0,iBar2=0;
   double dPrice1=0,dPrice2=0;

   ObjectsDeleteAll(0,objTS);

   for(int i=0;i<=nBars-5;i++)
     {
      if(Fractal1_UP[i]!=EMPTY_VALUE && Fractal1_UP[i]!=0)
        {
         if(DrawOnly_Level23Lines==true && (Fractal2_UP[i]!=EMPTY_VALUE || Fractal3_UP[i]!=EMPTY_VALUE))
           {
            iBar1=i;
            dPrice1=Fractal1_UP[i];

            iBar2=0;
            for(int j=iBar1-1;j>=0;j--)
              {
               if(EndOfLines==Candle_HighLow)
                 {
                  if(dPrice1<High[j] && dPrice1>Low[j])
                    {
                     iBar2=j;
                     break;
                    }
                 }
               else
               if(EndOfLines==Candle_Body)
                 {
                  double maxBody=MathMax(Open[j],Close[j]);
                  double minBody=MathMin(Open[j],Close[j]);
                  if(dPrice1<maxBody && dPrice1>minBody)
                    {
                     iBar2=j;
                     break;
                    }
                 }
              }
            if((DrawOnly_AliveLines==false) || (DrawOnly_AliveLines==true && iBar2==0))
               Paint_TrendLine(iBar1,dPrice1,iBar2,dPrice1,Color_UpperFractal_Lines,FractalLines_Width,FractalLines_Style,"up");
           }
        }
     }

   for(int i=0;i<=nBars-5;i++)
     {
      if(Fractal1_DN[i]!=EMPTY_VALUE && Fractal1_DN[i]!=0)
        {
         if(DrawOnly_Level23Lines==true && (Fractal2_DN[i]!=EMPTY_VALUE || Fractal3_DN[i]!=EMPTY_VALUE))
           {
            iBar1=i;
            dPrice1=Fractal1_DN[i];

            iBar2=0;
            for(int j=iBar1-1;j>=0;j--)
              {
               if(EndOfLines==Candle_HighLow)
                 {
                  if(dPrice1<High[j] && dPrice1>Low[j]

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

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

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

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

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

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

Стоимость полного кода
1 158,90₽ ≈ $14.16