Можно ли нарисовать одну метку с двумя разными цветами текста на MQL5?

 

Я создал этот скрипт:

//+------------------------------------------------------------------+
//|                                                       labels.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
bool LabelCreate(const long              chart_ID=0,               // chart's ID 
                 const string            name="Label",             // label name 
                 const int               sub_window=0,             // subwindow index 
                 const int               x=0,                      // X coordinate 
                 const int               y=0,                      // Y coordinate 
                 const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring 
                 const string            text="Label",             // text 
                 const string            font="Arial",             // font 
                 const int               font_size=10,             // font size 
                 const color             clr=clrRed,               // color 
                 const double            angle=0.0,                // text slope 
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type 
                 const bool              back=false,               // in the background 
                 const bool              selection=false,          // highlight to move 
                 const bool              hidden=true,              // hidden in the object list 
                 const long              z_order=0)                // priority for mouse click 
  { 
//--- reset the error value 
   ResetLastError(); 
//--- create a text label 
   if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": failed to create text label! Error code = ",GetLastError()); 
      return(false); 
     } 
//--- set label coordinates 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- set the chart's corner, relative to which point coordinates are defined 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- set the text 
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 
//--- set text font 
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 
//--- set font size 
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 
//--- set the slope angle of the text 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); 
//--- set anchor type 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); 
//--- set color 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- display in the foreground (false) or background (true) 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- enable (true) or disable (false) the mode of moving the label by mouse 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- hide (true) or display (false) graphical object name in the object list 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- set the priority for receiving the event of a mouse click in the chart 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- successful execution 
   return(true); 
  } 
void OnStart()
  {
if(!LabelCreate(0, "1", 0, 10, 20, 0, "First Label", "Arial", 10, clrYellow))
Print("false");
if(!LabelCreate(0, "2", 0, 70, 20, 0, " ,Second Label", "Arial", 10, clrLime))
Print("false");


  }
//+------------------------------------------------------------------+


Как можно видеть, я создал две разные метки для двух текстов, так как хотел иметь два разных цвета.

Но у меня неприятности, если текст увеличивается, то мне нужно больше рисовать метками. Следовательно, я хочу знать, есть ли какой-нибудь способ создать единый ярлык с разными цветными текстами?

Пожалуйста, дайте мне знать.

 
ObjectSetInteger(chart_ID,lable2_name,OBJPROP_XDISTANCE,x+ObjectGetInteger(chart_ID,lable1_name,OBJPROP_XDISTANCE)+
                                                          ObjectGetInteger(chart_ID,lable1_name,OBJPROP_XSIZE); 

сделайте привязку метки 2 зависимой от ширины метки 1

 
Igor Zakharov :

сделайте привязку метки 2 зависимой от ширины метки 1

Я не поняла это. Как это может быть полезно? Я использовал пример двух меток. Но что, если мне нужно 100 текст для отображения, то мне нужно 100 меток. Если количество увеличивается, я должен увеличить метку.

Поэтому я пытался понять, есть ли какой-то выход, чтобы я создал одну метку и показал на ней текст другого цвета с созданием любых других объектов. Есть ли выход?

 
jaffer wilson:

Я не понял это. Как это может быть полезно? Я использовал пример двух меток. Но что, если мне нужно 100 текст для отображения, то мне нужно 100 меток. Если количество увеличивается, я должен увеличить метку.

значит будет 100 меток, OBJPROP_XDISTANCE каждой последующей = OBJPROP_XDISTANCE первой метки + сумма OBJPROP_XSIZE всех предшествующих

по вашему примеру:

void OnStart()
  {
if(!LabelCreate(0, "1", 0, 10, 20, 0, "First Label", "Arial", 10, clrYellow))
Print("false");
if(!LabelCreate(0, "2", 0, ObjectGetInteger(0,"1",OBJPROP_XDISTANCE)+ObjectGetInteger(0,"1",OBJPROP_XSIZE), 20, 0, " ,Second Label", "Arial", 10, clrLime))
 

в МТ нет функций управления текстом, это нужно делать самому.

1

 

я вас дезинформировал. вот решение

https://www.mql5.com/ru/forum/1111/page2741#comment_16390976

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.05.15
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
Причина обращения: