! smartmoney fractal levels v4.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «! 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.