Objects Styler
- 유틸리티
- 버전: 3.1
- 업데이트됨: 17 8월 2026
Objects Styler 는 차트에서 직접 표준 그래픽 개체의 속성을 편집할 수 있는 상황 인식 패널 을 제공하는 유틸리티입니다. 핵심 기능은 사용자가 복잡한 스타일 세트를 개체에 저장하고 관리하며 즉시 적용할 수 있는 강력한 템플릿 시스템 입니다.
주요 기능
인터페이스 및 상호작용
-
상황별 활성화: 그래픽 개체를 클릭하거나 (또는 Shift + 클릭) 하면 패널이 호출됩니다. 모든 표준 개체와 대부분의 속성을 지원합니다.
-
드래그 가능한 인터페이스: 패널을 차트의 어느 영역으로든 자유롭게 이동할 수 있습니다.
-
팝업 창: 스타일 선택, 색상 팔레트, 타임프레임 목록과 같은 추가 옵션은 컴팩트한 팝업 창에서 열려 기본 인터페이스를 깔끔하게 유지합니다.
템플릿 관리 시스템
-
스타일 저장 및 적용: 개체의 전체 속성 세트를 이름이 지정된 템플릿으로 저장합니다. 템플릿은 한 번의 클릭으로 적용됩니다.
-
개체 유형별: 템플릿은 특정 개체 유형에 맞게 저장됩니다. 예를 들어, 추세선에 대해 만든 스타일은 다른 추세선을 편집할 때만 사용할 수 있습니다.
-
즐겨찾기 (고정): 자주 사용하는 템플릿은 빠른 접근을 위해 고정할 수 있습니다. 고정된 템플릿은 항상 표시되고 나머지는 추가 창에 숨겨집니다.
-
동기화 및 이식성:
-
템플릿 및 색상 팔레트에 대한 변경 사항은 다른 차트에 있는 인디케이터의 모든 인스턴스에 자동으로 동기화될 수 있습니다.
-
설정 파일은 별도로 저장되므로 다른 컴퓨터나 다른 터미널로 쉽게 전송할 수 있습니다.
-
개체 속성 제어
-
일반 속성: 색상, 너비 및 선 스타일을 편집하기 위한 직접 접근. 채우기, 배경에서 그리기, 레이, 아이콘, 텍스트 등 대부분의 표준 매개변수도 제어할 수 있습니다.
-
다중 레벨 개체 편집 (피보나치 도구, 채널, 확장 등):
-
각 레벨의 값, 텍스트 설명, 색상, 너비 및 선 스타일에 대한 개별 제어.
-
레벨 추가 및 제거 기능.
-
색상 팔레트
-
54개 슬롯 으로 색상에 빠르게 접근할 수 있습니다.
-
시각적 편집기 (HSV 피커) 로 정밀한 색상 조정이 가능합니다.
-
팔레트에서 원하는 색상을 수정하고 저장할 수 있습니다.
인디케이터 설정
-
인터페이스 크기 조정: 화면 해상도에 맞게 패널 크기를 조정하는 입력 매개변수입니다.
-
활성화 방법: 설정에서 패널 호출 방법을 선택합니다 (단순 클릭 또는 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);
}
}
}
Извини! Пользовался старой версией. После обновления увидел кнопку выравнивания. Спасибо тебе большое! Ты ЛУЧШИЙ!!! Успехов тебе и вдохновения!