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