Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии - страница 29

 
Vitaly Muzichenko # :


Спасибо.
 
Alain Verleyen #:
Спасибо.
У вас это работает?
 
Vitaly Muzichenko # :
У вас это работает?

С номером 5482 проблем нет.

 
Alain Verleyen #:

Как это воспроизвести?


Вот текст на основе документации, тестирующий шрифт Wingdings для создаваемой кнопки:

//+------------------------------------------------------------------+
//|                                                  Test_button.mq5 |
//|                                  Copyright 2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property description "Скрипт создает кнопку на графике." 
//--- покажем окно входных параметров при запуске скрипта 
#property script_show_inputs 
//--- входные параметры скрипта 
input string           InpName="Button";            // Имя кнопки 
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Угол графика для привязки 
//input string           InpFont="Arial";             // Шрифт 
input string           InpText="h";                 // Текст
input string           InpFont="Wingdings";         // Шрифт 
input int              InpFontSize=14;              // Размер шрифта 
input color            InpColor=clrBlack;           // Цвет текста 
input color            InpBackColor=C'236,233,216'; // Цвет фона 
input color            InpBorderColor=clrNONE;      // Цвет границы 
input bool             InpState=false;              // Нажата/Отжата 
input bool             InpBack=false;               // Объект на заднем плане 
input bool             InpSelection=false;          // Выделить для перемещений 
input bool             InpHidden=true;              // Скрыт в списке объектов 
input long             InpZOrder=0;                 // Приоритет на нажатие мышью 
//+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(const long              chart_ID=0,               // ID графика 
                  const string            name="Button",            // имя кнопки 
                  const int               sub_window=0,             // номер подокна 
                  const int               x=0,                      // координата по оси X 
                  const int               y=0,                      // координата по оси Y 
                  const int               width=50,                 // ширина кнопки 
                  const int               height=18,                // высота кнопки 
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                  const string            text="Button",            // текст 
                  const string            font="Arial",             // шрифт 
                  const int               font_size=10,             // размер шрифта 
                  const color             clr=clrBlack,             // цвет текста 
                  const color             back_clr=C'236,233,216',  // цвет фона 
                  const color             border_clr=clrNONE,       // цвет границы 
                  const bool              state=false,              // нажата/отжата 
                  const bool              back=false,               // на заднем плане 
                  const bool              selection=false,          // выделить для перемещений 
                  const bool              hidden=true,              // скрыт в списке объектов 
                  const long              z_order=0)                // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим кнопку 
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать кнопку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим координаты кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размер кнопки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим текст 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- установим шрифт текста 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- установим размер шрифта 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 
//--- установим цвет текста 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим цвет границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- переведем кнопку в заданное состояние 
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 
//--- включим (true) или отключим (false) режим перемещения кнопки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Перемещает кнопку                                                | 
//+------------------------------------------------------------------+ 
bool ButtonMove(const long   chart_ID=0,    // ID графика 
                const string name="Button", // имя кнопки 
                const int    x=0,           // координата по оси X 
                const int    y=0)           // координата по оси Y 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- переместим кнопку 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось переместить X-координату кнопки! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось переместить Y-координату кнопки! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Изменяет размер кнопки                                           | 
//+------------------------------------------------------------------+ 
bool ButtonChangeSize(const long   chart_ID=0,    // ID графика 
                      const string name="Button", // имя кнопки 
                      const int    width=50,      // ширина кнопки 
                      const int    height=18)     // высота кнопки 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- изменим размеры кнопки 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось изменить ширину кнопки! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось изменить высоту кнопки! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Изменяет угол графика для привязки кнопки                        | 
//+------------------------------------------------------------------+ 
bool ButtonChangeCorner(const long             chart_ID=0,               // ID графика 
                        const string           name="Button",            // имя кнопки 
                        const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER) // угол графика для привязки 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- изменим угол привязки 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось изменить угол привязки! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Изменяет текст кнопки                                            | 
//+------------------------------------------------------------------+ 
bool ButtonTextChange(const long   chart_ID=0,    // ID графика 
                      const string name="Button", // имя кнопки 
                      const string text="Text")   // текст 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- изменим текст объекта 
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось изменить текст! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Удаляет кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonDelete(const long   chart_ID=0,    // ID графика 
                  const string name="Button") // имя кнопки 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- удалим кнопку 
   if(!ObjectDelete(chart_ID,name)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось удалить кнопку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  } 
//+------------------------------------------------------------------+ 
//| Script program start function                                    | 
//+------------------------------------------------------------------+ 
void OnStart() 
  { 
//--- размеры окна графика 
   long x_distance; 
   long y_distance; 
//--- определим размеры окна 
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance)) 
     { 
      Print("Не удалось получить ширину графика! Код ошибки = ",GetLastError()); 
      return; 
     } 
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance)) 
     { 
      Print("Не удалось получить высоту графика! Код ошибки = ",GetLastError()); 
      return; 
     } 
//--- определим шаг для изменения размеров кнопки 
   int x_step=(int)x_distance/32; 
   int y_step=(int)y_distance/32; 
//--- установим координаты кнопки и ее размер 
   int x=(int)x_distance/32; 
   int y=(int)y_distance/32; 
   int x_size=(int)x_distance*2/16; 
   int y_size=(int)y_distance*2/16; 
//--- создадим кнопку 
   if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,InpText,InpFont,InpFontSize, 
      InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder)) 
     { 
      return; 
     } 
//--- перерисуем график 
   ChartRedraw(); 
//--- в цикле уменьшаем кнопку 
   int i=0; 
   //while(i<13) 
     { 
      //--- задержка в полсекунды 
      Sleep(500); 
      //--- переведем кнопку в нажатое состояние 
      ObjectSetInteger(0,InpName,OBJPROP_STATE,true); 
      //--- перерисуем график и подождем 0.2 секунды 
      ChartRedraw(); 
      Sleep(200); 
      //--- переопределим координаты и размер кнопки 
      x+=x_step; 
      y+=y_step; 
      x_size-=x_step*2; 
      y_size-=y_step*2; 
      //--- уменьшим кнопку 
      ButtonMove(0,InpName,x,y); 
      ButtonChangeSize(0,InpName,x_size,y_size); 
      //--- вернем кнопку в ненажатое состояние 
      ObjectSetInteger(0,InpName,OBJPROP_STATE,false); 
      //--- перерисуем график 
      ChartRedraw(); 
      //--- проверим факт принудительного завершения скрипта 
      if(IsStopped()) 
         return; 
      //--- увеличим счетчик цикла 
      i++; 
     } 
//--- задержка в полсекунды 
   Sleep(500); 
//--- удалим кнопку 
   //ButtonDelete(0,InpName); 
   ChartRedraw(); 
//--- подождем 1 секунду 
   Sleep(1000); 
//--- 
  }

А вот результат для символа "h"


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2025.12.14
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Alain Verleyen #:

С номером 5482 проблем нет.

--

Проблема не решена

 
Сегодня было обновление. 

Ничего не изменилось, ошибка сталась - знаков на кнопках онлайн графика - нет, в тестере - есть.

Онлайн кнопки



В тестере:
 
Ivan Butko #:
Сегодня было обновление. 
А у меня обновления не видит. Интересненько..
 
Vitaly Muzichenko # :

--

Проблема не решена

Странно, у меня проблем нет.


Файлы:
 
Aleksander Gladkov # :

Вот текст на основе документации, тестирующий шрифт Wingdings для создаваемой кнопки:

А вот результат для символа "h"


Подтверждено. Сообщено.

Спасибо.

 
Ivan Butko #:
Сегодня было обновление. 

Ничего не изменилось, ошибка сталась - знаков на кнопках онлайн графика - нет, в тестере - есть.

Онлайн кнопки



В тестере:
So it's OBJ_BUTTON with text using Windgings as here https://www.mql5.com/ru/forum/497682/page29#comment_58734102 ?