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