Objects Styler
- Утилиты
- Версия: 3.1
- Обновлено: 17 августа 2026
Objects Styler — это утилита, предоставляющая контекстно-зависимую панель для редактирования свойств стандартных графических объектов непосредственно на графике. Ключевой особенностью является мощная система шаблонов, которая позволяет пользователям сохранять, управлять и мгновенно применять сложные наборы стилей к объектам.
Основные Функциональные Возможности
Интерфейс и Взаимодействие
-
Контекстная Активация: Панель вызывается кликом (или Shift + клик) по графическому объекту. Поддерживаются все стандартные объекты и большинство их свойств.
-
Перемещаемый Интерфейс: Панель можно свободно перемещать в любую область графика.
-
Всплывающие Окна (Pop-up): Дополнительные опции, такие как выбор стиля, палитра и список таймфреймов, открываются в компактных всплывающих окнах, не перегружая основной интерфейс.
Система Управления Шаблонами
-
Сохранение и Применение Стилей: Возможность сохранить полный набор свойств объекта в виде именованного шаблона. Шаблоны применяются одним кликом.
-
Привязка к Типу Объекта: Шаблоны сохраняются для конкретного типа объекта. Например, стили, созданные для линии тренда, будут доступны только при редактировании других линий тренда.
-
Избранное (Закрепление): Часто используемые шаблоны можно закрепить для быстрого доступа. Они будут видимы всегда, а остальные — скрыты в дополнительном окне.
-
Синхронизация и Перенос:
-
Изменения в шаблонах и палитре могут автоматически синхронизироваться между всеми экземплярами индикатора на других графиках.
-
Файлы настроек сохраняются отдельно, что позволяет легко переносить их на другие компьютеры или между разными терминалами.
-
Контроль Свойств Объектов
-
Общие Свойства: Прямой доступ к редактированию цвета, толщины, стиля линии. Также доступно изменение большинства стандартных параметров: заливки, отображения на заднем плане, лучей, иконок, текста и т.д.
-
Редактирование Многоуровневых Объектов (для инструментов Фибоначчи, каналов, расширений и др.):
-
Индивидуальный контроль над значением, текстовым описанием, цветом, толщиной и стилем линии для каждого уровня.
-
Функционал для добавления и удаления уровней.
-
Цветовая Палитра
-
54 слота для быстрого доступа к цветам.
-
Визуальный редактор (HSV Picker) для точной настройки любого цвета.
-
Возможность изменять и сохранять любой цвет в палитре.
Настройки Индикатора
-
Масштабирование Интерфейса: Входной параметр для адаптации размера панели под разрешение вашего экрана.
-
Метод Активации: В настройках можно выбрать способ вызова панели (простой клик или клик с зажатой клавишей Shift).
-
Цветовые Схемы: Предустановленные светлая и темная темы, а также возможность задать полностью пользовательские цвета.
-
Режим Синхронизации: Возможность выбрать, где хранить файлы настроек: локально для каждого графика или в общей папке терминала для автоматической синхронизации.
В будущем, по запросам пользователей, могут быть добавлены дополнительные свойства и поддержка новых объектов.

Это лучшее что я видел для mt5! Выражаю огромную благодарность!!! Автор ЛУЧШИЙ!!! P.S. Было бы прикольно если добавить в меню отрезка выравнивание по горизонтали отрезка. Мне ИИ написал в виде кнопки на графике: //+------------------------------------------------------------------+
//| Line_Leveler_Button.mq5 |
//| AI Code Generator |
//+------------------------------------------------------------------+
#property copyright "AI"
#property version "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
//--- Входные параметры кнопки
input string InpButtonText = "Сделать горизонтальной"; // Текст на кнопке
input color InpButtonColor = clrWhite; // Цвет текста
input color InpBgColor = clrDarkSlateGray; // Цвет кнопки
input int InpFontSize = 10; // Размер шрифта
input int InpButtonWidth = 160; // Ширина кнопки
input int InpButtonHeight = 25; // Высота кнопки
//--- Имя объекта кнопки
string ButtonName = "Btn_Leveler_Line";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Создаем кнопку в левом верхнем углу графика
if(ObjectCreate(0, ButtonName, OBJ_BUTTON, 0, 0, 0))
{
ObjectSetInteger(0, ButtonName, OBJPROP_XDISTANCE, 15); // Отступ по оси X
ObjectSetInteger(0, ButtonName, OBJPROP_YDISTANCE, 120); // Отступ по оси Y (под имя инструмента)
ObjectSetInteger(0, ButtonName, OBJPROP_XSIZE, InpButtonWidth);
ObjectSetInteger(0, ButtonName, OBJPROP_YSIZE, InpButtonHeight);
ObjectSetInteger(0, ButtonName, OBJPROP_CORNER, CORNER_LEFT_UPPER); // Привязка к верхнему левому углу
ObjectSetString(0, ButtonName, OBJPROP_TEXT, InpButtonText);
ObjectSetString(0, ButtonName, OBJPROP_FONT, "Arial");
ObjectSetInteger(0, ButtonName, OBJPROP_FONTSIZE, InpFontSize);
ObjectSetInteger(0, ButtonName, OBJPROP_COLOR, InpButtonColor);
ObjectSetInteger(0, ButtonName, OBJPROP_BGCOLOR, InpBgColor);
ObjectSetInteger(0, ButtonName, OBJPROP_BORDER_COLOR, clrSilver);
ObjectSetInteger(0, ButtonName, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, ButtonName, OBJPROP_STATE, false); // Отжата по умолчанию
}
// Разрешаем индикатору ловить клики мыши по графику
ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Удаляем кнопку при удалении индикатора
ObjectDelete(0, ButtonName);
ChartRedraw(0);
}
//+------------------------------------------------------------------+
//| OnCalculate (обязательная функция для индикаторов) |
//+------------------------------------------------------------------+
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[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function - перехват событий мыши и кликов |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
// Проверяем, произошел ли клик по графическому объекту
if(id == CHARTEVENT_OBJECT_CLICK)
{
// Проверяем, что кликнули именно по нашей кнопке
if(sparam == ButtonName)
{
bool leveled_any = false;
// Перебираем все графические объекты, которые сейчас есть на графике
int total_objects = ObjectsTotal(0, 0, -1);
for(int i = 0; i < total_objects; i++)
{
string obj_name = ObjectName(0, i, 0, -1);
// Нам нужны только те линии, которые выделил (выбрал двойным кликом) трейдер
if(ObjectGetInteger(0, obj_name, OBJPROP_SELECTED) == true)
{
// Проверяем тип объекта. Нам нужны обычные трендовые линии (OBJ_TREND)
if(ObjectGetInteger(0, obj_name, OBJPROP_TYPE) == OBJ_TREND)
{
// Берем цену первой точки линии
double price1 = ObjectGetDouble(0, obj_name, OBJPROP_PRICE, 0);
// Принудительно присваиваем второй точке точно такую же цену
ObjectSetDouble(0, obj_name, OBJPROP_PRICE, 1, price1);
leveled_any = true;
}
}
}
// Если выровняли линию, выводим сообщение в журнал
if(leveled_any)
{
Print("Успешно: Выделенные трендовые линии выровнены горизонтально.");
}
// Возвращаем кнопку в отжатое (активное) состояние для следующего раза
ObjectSetInteger(0, ButtonName, OBJPROP_STATE, false);
ChartRedraw(0);
}
}
}
Извини! Пользовался старой версией. После обновления увидел кнопку выравнивания. Спасибо тебе большое! Ты ЛУЧШИЙ!!! Успехов тебе и вдохновения!