Objects Styler
- Utilidades
- Versión: 3.1
- Actualizado: 17 agosto 2026
Objects Styler es una utilidad que proporciona un panel contextual para editar las propiedades de los objetos gráficos estándar directamente en el gráfico. Su característica principal es un potente sistema de plantillas que permite a los usuarios guardar, gestionar y aplicar instantáneamente conjuntos complejos de estilos a los objetos.
Características principales
Interfaz e interacción
-
Activación contextual: El panel se invoca haciendo clic (o Shift + clic) en un objeto gráfico. Es compatible con todos los objetos estándar y la mayoría de sus propiedades.
-
Interfaz arrastrable: El panel se puede mover libremente a cualquier área del gráfico.
-
Ventanas emergentes: Las opciones adicionales, como la selección de estilos, la paleta de colores y la lista de marcos temporales, se abren en ventanas emergentes compactas, manteniendo la interfaz principal ordenada.
Sistema de gestión de plantillas
-
Guardar y aplicar estilos: Guarda un conjunto completo de propiedades de un objeto como una plantilla con nombre. Las plantillas se aplican con un solo clic.
-
Específico por tipo de objeto: Las plantillas se guardan para un tipo de objeto específico. Por ejemplo, los estilos creados para una línea de tendencia solo estarán disponibles al editar otras líneas de tendencia.
-
Favoritos (anclaje): Las plantillas de uso frecuente se pueden anclar para un acceso rápido. Siempre serán visibles, mientras que las demás se ocultan en una ventana adicional.
-
Sincronización y portabilidad:
-
Los cambios en las plantillas y la paleta de colores pueden sincronizarse automáticamente en todas las instancias del indicador en otros gráficos.
-
Los archivos de configuración se guardan por separado, lo que permite transferirlos fácilmente a otros equipos o terminales diferentes.
-
Control de propiedades del objeto
-
Propiedades generales: Acceso directo para editar el color, el ancho y el estilo de línea. También proporciona control sobre la mayoría de los parámetros estándar: relleno, dibujar en segundo plano, rayos, iconos, texto, etc.
-
Edición de objetos multinivel (para herramientas de Fibonacci, canales, expansiones, etc.):
-
Control individual sobre el valor, la descripción de texto, el color, el ancho y el estilo de línea para cada nivel.
-
Funcionalidad para agregar y eliminar niveles.
-
Paleta de colores
-
54 ranuras para acceso rápido a los colores.
-
Editor visual (selector HSV) para un ajuste preciso del color.
-
Posibilidad de modificar y guardar cualquier color de la paleta.
Configuración del indicador
-
Escala de interfaz: Un parámetro de entrada para adaptar el tamaño del panel a la resolución de tu pantalla.
-
Método de activación: Elige cómo invocar el panel en la configuración (un simple clic o Shift + clic).
-
Esquemas de color: Temas claros y oscuros preinstalados, más la opción de establecer colores completamente personalizados.
-
Modo de sincronización: Opción para elegir dónde almacenar los archivos de configuración: localmente para cada gráfico o en la carpeta común del terminal para sincronización automática.
En el futuro, se podrán añadir propiedades adicionales y compatibilidad con nuevos objetos según las solicitudes de los usuarios.

Это лучшее что я видел для 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);
}
}
}
Извини! Пользовался старой версией. После обновления увидел кнопку выравнивания. Спасибо тебе большое! Ты ЛУЧШИЙ!!! Успехов тебе и вдохновения!