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

color levels.mq5

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

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

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

О программе

Представляет собой пользовательский индикатор для MetaTrader 4, который отображает на графике настраиваемую панель с цветными прямоугольными зонами и линейными элементами. Панель служит интерактивным интерфейсом для быстрого создания графических объектов непосредственно на чарте.

При клике на определённые элементы панели пользователь может создавать прямоугольники и трендовые линии с заданными цветами, стилями и толщиной. Позиции создаваемых объектов определяются внутренней системой координат панели.

Положение панели на графике выбирается одним из углов чарта. Все визуальные параметры — цвета, стили отрисовки и толщины линий — настраиваются через параметры ввода, что позволяет адаптировать внешний вид инструмента под предпочтения пользователя.

Индикатор не выполняет расчёт аналитических значений и не использует торговые API. Его назначение ограничивается визуальной аннотацией графика и управлением графическими объектами через панельный интерфейс.

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

НастройкаОписание
???? ??????? ??? ???????? (InpCorner) Угол размещения панели — Угол графика, в котором размещается панель индикатора.
???? ?????? ???????????? (panl_0_cl) Цвет панели — Цвет фона основной панели.
?????????? ??????? (panl_0_st) Отображение панели — Видимость и отображение основной панели на графике.
1. ???? ??????? (rect_1_cl) Цвет прямоугольника 1 — Цвет первого прямоугольной зоны на панели.
1. ????? ??????? (rect_1_st) Стиль прямоугольника 1 — Стиль обводки первого прямоугольника.
1. ??????? ??????? (rect_1_wd) Толщина прямоугольника 1 — Толщина обводки первого прямоугольника в пикселях.
2. ???? ??????? (rect_2_cl) Цвет прямоугольника 2 — Цвет второй прямоугольной зоны на панели.
2. ????? ??????? (rect_2_st) Стиль прямоугольника 2 — Стиль обводки второго прямоугольника.
2. ??????? ??????? (rect_2_wd) Толщина прямоугольника 2 — Толщина обводки второго прямоугольника в пикселях.
3. ???? ?????????????? (rect_3_cl) Цвет прямоугольника 3 — Цвет третьей прямоугольной зоны на панели.
4. ???? ?????????????? (rect_4_cl) Цвет прямоугольника 4 — Цвет четвёртой прямоугольной зоны на панели.
5. ???? ?????????????? (rect_5_cl) Цвет прямоугольника 5 — Цвет пятой прямоугольной зоны на панели.
6. ???? ????? (line_1_cl) Цвет линии 1 — Цвет первой трендовой линии, создаваемой через панель.
6. ????? ????? (line_1_st) Стиль линии 1 — Стиль линии первой трендовой линии.
6. ??????? ????? (line_1_wd) Толщина линии 1 — Толщина первой трендовой линии в пикселях.
7. ???? ????? (line_2_cl) Цвет линии 2 — Цвет второй трендовой линии, создаваемой через панель.
7. ????? ????? (line_2_st) Стиль линии 2 — Стиль линии второй трендовой линии.
7. ??????? ????? (line_2_wd) Толщина линии 2 — Толщина второй трендовой линии в пикселях.
????? ?? ??? X (x_coor) Позиция X панели — Горизонтальная позиция панели на графике в пикселях.
????? ?? ??? Y (y_coor) Позиция Y панели — Вертикальная позиция панели на графике в пикселях.
Получить полный код

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

#property version   "1.00"
#property strict
#property indicator_chart_window

extern ENUM_BASE_CORNER InpCorner   =  CORNER_LEFT_UPPER;   // ???? ??????? ??? ????????
extern color            panl_0_cl   =  clrGainsboro;        // ???? ?????? ????????????
extern bool             panl_0_st   =  true;                // ?????????? ???????
extern color            rect_1_cl   =  clrDodgerBlue;       // 1. ???? ???????
extern ENUM_LINE_STYLE  rect_1_st   =  STYLE_SOLID;         // 1. ????? ???????
extern int              rect_1_wd   =  2;                   // 1. ??????? ???????
extern color            rect_2_cl   =  clrFireBrick;        // 2. ???? ???????
extern ENUM_LINE_STYLE  rect_2_st   =  STYLE_SOLID;         // 2. ????? ???????
extern int              rect_2_wd   =  2;                   // 2. ??????? ???????
extern color            rect_3_cl   =  clrBlue;             // 3. ???? ??????????????
extern color            rect_4_cl   =  clrRed;              // 4. ???? ??????????????
extern color            rect_5_cl   =  clrDarkGray;         // 5. ???? ??????????????
extern color            line_1_cl   =  clrDodgerBlue;       // 6. ???? ?????
extern ENUM_LINE_STYLE  line_1_st   =  STYLE_SOLID;         // 6. ????? ?????
extern int              line_1_wd   =  2;                   // 6. ??????? ?????
extern color            line_2_cl   =  clrFireBrick;        // 7. ???? ?????
extern ENUM_LINE_STYLE  line_2_st   =  STYLE_SOLID;         // 7. ????? ?????
extern int              line_2_wd   =  2;                   // 7. ??????? ?????

bool              InpSelection      =  false;               // ???????? ??? ???????????
bool              InpHidden         =  true;                // ????? ? ?????? ????????
bool              InpHidden_OBJ     =  false;               // ????? ? ?????? ????????
bool              InpBackRect       =  false;               // ?????? ?? ?????? ?????

extern int x_coor = 10;    // ????? ?? ??? X
extern int y_coor = 20;    // ????? ?? ??? Y
int x_size = 155;
int y_size = 30;
int x_step = 5;
int y_panl = 20;
int x_rect = 20;
int y_rect = 20;
int y_line = 6;

string obj_name[8] = {"name_1","name_2","name_3","name_4","name_5","name_6","name_7","name_8"};

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

void OnDeinit(const int reason)
{
   Comment("");
   RectLabelDelete(0,obj_name[0]);
   RectLabelDelete(0,obj_name[1]);
   RectLabelDelete(0,obj_name[2]);
   RectLabelDelete(0,obj_name[3]);
   RectLabelDelete(0,obj_name[4]);
   RectLabelDelete(0,obj_name[5]);
   RectLabelDelete(0,obj_name[6]);
   RectLabelDelete(0,obj_name[7]);
}

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 OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   datetime dt_1     = 0;
   double   price_1  = 0;
   datetime dt_2     = 0;
   double   price_2  = 0;
   int      window   = 0;
   int      x        = 0;
   int      y        = 0;

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[1]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + y_rect + 2*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);

         y = y_coor + 2*y_rect + 3*x_step;
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);

         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,rect_1_cl,rect_1_st,rect_1_wd,false,false,true,InpHidden_OBJ,0);
      }
   }

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[2]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 2*y_rect + 3*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);

         y = y_coor + 3*y_rect + 4*x_step;
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);         

         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,rect_2_cl,rect_2_st,rect_2_wd,false,false,true,InpHidden_OBJ,0);
      }
   }   

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[3]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 3*y_rect + 4*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);

         y = y_coor + 4*y_rect + 5*x_step;
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);   

         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,rect_3_cl,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0);
      }
   }

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[4]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 4*y_rect + 5*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);

         y = y_coor + 5*y_rect + 6*x_step;
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);

         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,rect_4_cl,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0);
      }
   }

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[5]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 5*y_rect + 6*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);

         y = y_coor + 6*y_rect + 7*x_step;
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);

         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,rect_5_cl,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0);
      }
   }

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[6]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 6*y_rect + 8*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);         

         TrendCreate(0,name,0,dt_1,price_1,dt_2,price_2,line_1_cl,line_1_st,line_1_wd,InpBackRect,true,false,false,InpHidden_OBJ,0);
      }
   }

   if (id == CHARTEVENT_OBJECT_CLICK) {
      string clickedChartObject = sparam;
      if (clickedChartObject == obj_name[7]) {
         string name = "name_" + IntegerToString(MathRand() + 100,0,' ');

         y = y_coor + 6*y_rect + 10*x_step;
         ChartXYToTimePrice(0, x_coor + x_step, y, window, dt_1, price_1);
         ChartXYToTimePrice(0, x_coor + x_size, y, window, dt_2, price_2);         

         TrendCreate(0,name,0,dt_1,price_1,dt_2,price_2,line_2_cl,line_2_st,line_2_wd,InpBackRect,true,false,false,InpHidden_OBJ,0);
      }
   }
}

void CreatePanel()
{

   if (panl_0_st) {

      int x_pn = x_coor, y_pn = y_coor;
      if (InpCorner == 1)  x_pn = x_coor + x_size + x_step;
      if (InpCorner == 2)  y_pn = y_coor + y_rect + x_step;
      if (InpCorner == 3) {x_pn = x_coor + x_size + x_step; y_pn = y_coor + y_rect + x_step;}

      if (!RectLabelCreate(0,obj_name[0],0,x_pn,y_pn,x_size,y_size,panl_0_cl,BORDER_SUNKEN,InpCorner,
           clrBlack,STYLE_SOLID,2,true,InpSelection,true,0)) {
         return;
      }   
   } else {
      panl_0_cl = ChartBackColorGet(0);
   }
}

void CreateRect()
{

   int x_pn = x_coor + x_step, y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorner == 3) {x_pn = x_coor + x_size; y_pn = y_coor + y_rect;}

   if (!RectLabelCreate(0,obj_name[1],0,x_pn,y_pn,x_rect,y_rect,panl_0_cl,BORDER_FLAT,InpCorner,
        rect_1_cl,rect_1_st,rect_1_wd,InpBackRect,InpSelection,InpHidden,0)) {
      return;
   }   

   x_pn = x_coor + x_rect + 2*x_step; y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size - x_step - x_rect;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorner == 3) {x_pn = x_coor + x_size - x_step - x_rect; y_pn = y_coor + y_rect;}

   if (!RectLabelCreate(0,obj_name[2],0,x_pn,y_pn,x_rect,y_rect,panl_0_cl,BORDER_FLAT,InpCorner,
        rect_2_cl,rect_2_st,rect_2_wd,InpBackRect,InpSelection,InpHidden,0)) {
      return;
   }  

   x_pn = x_coor + 2*x_rect + 3*x_step; y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size - 2*x_step - 2*x_rect;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorner == 3) {x_pn = x_coor + x_size - 2*x_step - 2*x_rect; y_pn = y_coor + y_rect;}

   if (!RectLabelCreate(0,obj_name[3],0,x_pn,y_pn,x_rect,y_rect,rect_3_cl,BORDER_FLAT,InpCorner,
        rect_3_cl,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0)) {
      return;
   }  

   x_pn = x_coor + 3*x_rect + 4*x_step; y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size - 3*x_step - 3*x_rect;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorner == 3) {x_pn = x_coor + x_size - 3*x_step - 3*x_rect; y_pn = y_coor + y_rect;}

   if (!RectLabelCreate(0,obj_name[4],0,x_pn,y_pn,x_rect,y_rect,rect_4_cl,BORDER_FLAT,InpCorner,
        rect_4_cl,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0)) {
      return;
   }

   x_pn = x_coor + 4*x_rect + 5*x_step; y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size - 4*x_step - 4*x_rect;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorner == 3) {x_pn = x_coor + x_size - 4*x_step - 4*x_rect; y_pn = y_coor + y_rect;}

   if (!RectLabelCreate(0,obj_name[5],0,x_pn,y_pn,x_rect,y_rect,rect_5_cl,BORDER_FLAT,InpCorner,
        rect_5_cl,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0)) {
      return;
   }

   x_pn = x_coor + 5*x_rect + 6*x_step; y_pn = y_coor + x_step;
   if (InpCorner == 1)  x_pn = x_coor + x_size - 5*x_step - 5*x_rect;
   if (InpCorner == 2)  y_pn = y_coor + y_rect;
   if (InpCorne

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

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

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

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

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

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

Стоимость полного кода
1 482₽ ≈ $18.11