MQL5 Простая инфо панель - как?

 

Здравствуйте все!

Такое дело: я при тестировании советников использую выводы Comment через функцию fComments() куда подставляю самые разные значения, которые нужно отследить.

Но выглядит это всё на экране плохо читаемо :(

Подскажите, как можно сделать в коде советника простейшую инфопанель в виде прямоугольника с фоном и в него выводить значения из функции fComments()?

void fComment()

  {

 Comment(

           "Сделка: "+DirString+"\n"+ 

  "Направление тренда: "+TrendString+"\n"+ 

(string)fWorkTime() 

// и прочие, которые меняются в зависимости от цели тестирования 

 }

 

Используйте OBJ_LABEL. В Oninit() создаёте объект. А когда нужно менять текст в объекте - вызываете функцию LabelTextChange. 

Вот стандартный пример из справки: - Вам же нужно убрать лишнее (убрать перемещение объекта). 

Файлы:
OBJ_LABEL.mq5  13 kb
 
Vladimir Karputov:   Используйте OBJ_LABEL. В Oninit() создаёте объект...
Случайное удаление созданного в OnInit объекта нарушает работу. Так что лучше проверять наличие объекта перед выводом информации и при необходимости создавать
 
LRA:
Случайное удаление созданного в OnInit объекта нарушает работу. Так что лучше проверять наличие объекта перед выводом информации и при необходимости создавать
Всё верно. Только это называется НЮАНСЫ, которые нужно уже самостоятельно предусмотреть :). А идея от этого не изменяется - первый раз создаётся объект в OnInit(), далее уже советник MQL5 должен самостоятельно следить за созданным объектом.
 
Vladimir Karputov:

Вот стандартный пример из справки: - Вам же нужно убрать лишнее (убрать перемещение объекта). 

Владимир, благодарю Вас! Спасибо за материал - всё удалось ;)
 

Здравствуйте все!

По материалу Vladimir Karputov рисую прямоугольник

ObjectCreate(0,"Fon",OBJ_RECTANGLE_LABEL,0,0,0)) 
ObjectSetInteger(0, "Fon", OBJPROP_CORNER, 0); // угол
ObjectSetInteger(0, "Fon", OBJPROP_XDISTANCE, 40); // X
ObjectSetInteger(0, "Fon", OBJPROP_YDISTANCE, 21); // Y
ObjectSetInteger(0, "Fon", OBJPROP_XSIZE, 170); // ширина
ObjectSetInteger(0, "Fon", OBJPROP_YSIZE, 190); // высота
ObjectSetInteger(0, "Fon", OBJPROP_BGCOLOR, Silver); // цвет

Подскажите, пожалуйста, как его сделать с прозрачностью (например 70%)? Хочется видеть график в случае когда он попадает под прямоугольник.

 
kofesutra:

Здравствуйте все!

По материалу Vladimir Karputov рисую прямоугольник

Подскажите, пожалуйста, как его сделать с прозрачностью (например 70%)? Хочется видеть график в случае когда он попадает под прямоугольник.


Вроде графические объекты нельзя рисовать с прозрачностью, но зато графическому объекту можно задать свойство "рисовать на заднем плане", что-то вроде этого:

//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

(взято из OBJ_RECTANGLE_LABEL). Вот как это выглядит:

OBJ_RECTANGLE_LABEL на заднем плане

 
Vladimir Karputov:

зато графическому объекту можно задать свойство "рисовать на заднем плане"

Владимир, спасибо! 

Это не подходит, так как поверх прямоугольника пишутся мои всякие буквы.

 
kofesutra:

Владимир, спасибо! 

Это не подходит, так как поверх прямоугольника пишутся мои всякие буквы.


В таком случае рисуйте на канвасе (CCanvas) - там можно делать и фон с прозрачностью и шрифт с прозрачностью и всякие графические загогулины с прозрачностью. Мои примеры:

 
Vladimir Karputov:


В таком случае рисуйте на канвасе (CCanvas) - там можно делать и фон с прозрачностью и шрифт с прозрачностью и всякие графические загогулины с прозрачностью. Мои примеры:


Владимир, Вы как всегда здорово помогли! Спасибо огромное! Всё получилось.
 
kofesutra:

Владимир, Вы как всегда здорово помогли! Спасибо огромное! Всё получилось.

Спасибо. А что именно получилось? Можно полюбопытствовать на результаты титанической деятельности по перелопачиванию кучи информации форума и документации? :)