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

! smartmoney fractal levels v4.mq5

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

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

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

О программе

Индикатор «SmartMoney Fractal Levels» представляет собой аналитический инструмент для MetaTrader 5, основанный на расчёте фрактальных уровней цены в трёх иерархических уровнях. Он определяет фракталы верхушек и впадин по максимумам High и минимумам Low, а затем выстраивает уровни 2 и 3 на основе уже найденных уровней предыдущей ступени.

Уровень 1 рассчитывается непосредственно по ценовым данным с configurable количеством баров слева и справа. Уровни 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 уровня, а не 1 уровня
DrawOnly_AliveLines Отображать только активные фрактальные линии (без пересечения текущей цены)
EndOfLines Тип завершения фрактальных линий: по верхней/нижней цене свечи (High/Low) или по телу свечи (Open/Close)
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 Максимальное количество баров назад, анализируемых индикатором
Button_Window Номер окна, в котором размещается кнопка (0 — основное окно графика)
Button_Corner Угол графика, в котором размещается кнопка
Button_X Горизонтальная координата кнопки от угла графика
Button_Y Вертикальная координата кнопки от угла графика
Button_Width Ширина кнопки включения/выключения в пикселях
Button_Height Высота кнопки включения/выключения в пикселях
Button_FontSize Размер шрифта текста на кнопке
Button_BrdrColor Цвет рамки кнопки включения/выключения
Button_OffBckColor Цвет фона кнопки в выключенном состоянии
Button_OnBckColor Цвет фона кнопки во включённом состоянии
Button_OffTxtColor Цвет текста кнопки в выключенном состоянии
Button_OnTxtColor Цвет текста кнопки во включённом состоянии
Получить полный код

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

#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
07.12.2022  v4 - On/Off button added

#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;
input int                 Button_Window              = 0;  
input ENUM_BASE_CORNER    Button_Corner              = 3;  
input int                 Button_X                   = 522;
input int                 Button_Y                   = 99;
input int                 Button_Width               = 99;
input int                 Button_Height              = 36;
input int                 Button_FontSize            = 10;
input color               Button_BrdrColor           = clrChocolate;
input color               Button_OffBckColor         = C'40,40,40';
input color               Button_OnBckColor          = clrGreen;
input color               Button_OffTxtColor         = clrRed;
input color               Button_OnTxtColor          = clrChocolate;

string ButTxtOn = "SM Fractal On";
string ButTxtOff = "SM Fractal Off";
string ONOFButtName="ExtBar_Button";
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;

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
 {

   if(id==CHARTEVENT_OBJECT_CLICK)
     { 
     if(sparam==ONOFButtName&&
        ObjectGetString(0,sparam,OBJPROP_TEXT)==ButTxtOff)
      {
      ObjectSetString(0,sparam,OBJPROP_TEXT,ButTxtOn);
      ObjectSetInteger(0,sparam,OBJPROP_BGCOLOR,Button_OnBckColor);
      ObjectSetInteger(0,sparam,OBJPROP_COLOR,Button_OnTxtColor);
      ObjectSetInteger(0,sparam,OBJPROP_STATE,true);
      SetIndexStyle(0,DRAW_ARROW);
      SetIndexStyle(1,DRAW_ARROW);
      SetIndexStyle(2,DRAW_ARROW);
      SetIndexStyle(3,DRAW_ARROW);
      SetIndexStyle(4,DRAW_ARROW);
      SetIndexStyle(5,DRAW_ARROW);
   if(FractalArrows_Type==NONE)
     {
      SetIndexStyle(0,DRAW_NONE);
      SetIndexStyle(1,DRAW_NONE);
      SetIndexStyle(2,DRAW_NONE);
      SetIndexStyle(3,DRAW_NONE);
      SetIndexStyle(4,DRAW_NONE);
      SetIndexStyle(5,DRAW_NONE);
     }

   if(Draw_Level1_Arrows==false)
     {
      SetIndexStyle(0,DRAW_NONE);
      SetIndexStyle(1,DRAW_NONE);
      SetIndexLabel(0,NULL);
      SetIndexLabel(1,NULL);
     }

   SetIndexLabel(2,NULL);
   SetIndexLabel(3,NULL);
   SetIndexLabel(4,NULL);
   SetIndexLabel(5,NULL);
      }
     else
     if(sparam==ONOFButtName&&
        ObjectGetString(0,sparam,OBJPROP_TEXT)==ButTxtOn)
      {      
      ObjectSetString(0,sparam,OBJPROP_TEXT,ButTxtOff);
      ObjectSetInteger(0,sparam,OBJPROP_BGCOLOR,Button_OffBckColor);
      ObjectSetInteger(0,sparam,OBJPROP_COLOR,Button_OffTxtColor);
      ObjectSetInteger(0,sparam,OBJPROP_STATE,true);
      ObjectsDeleteAll(0,objTS);
      SetIndexStyle(0,DRAW_NONE);
      SetIndexStyle(1,DRAW_NONE);
      SetIndexStyle(2,DRAW_NONE);
      SetIndexStyle(3,DRAW_NONE);
      SetIndexStyle(4,DRAW_NONE);
      SetIndexStyle(5,DRAW_NONE);
      }
     }

 }

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

int deinit()
  {
   ObjectsDeleteAll(0,objTS);
   ObjectDelete(0,ONOFButtName);
   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;
                    }
                 }
              }
  

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

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

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

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

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

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

Стоимость полного кода
1 473,70₽ ≈ $18.01