Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1148

 

Как узнать размеры Label с учетом размера шрифта и длины текста? Для позиционирования его относительно других элементов

ObjectGetInteger(0,"label",OBJPROP_XSIZE,0);

Дает 0

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д.  Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
 
Maksym Mudrakov:

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

Если запустить в тестере стратегий этот советник, то в визуализаторе откроються графики EURUSD, GBPUSD, USDJPY, но

выдаст, что графиков всего 1.

Это проблема с получением хендла окон визуализатора. И победить её никак.

 
Roman Sharanov:

Как узнать размеры Label с учетом размера шрифта и длины текста? Для позиционирования его относительно других элементов

Дает 0

я использую моноширинные шрифты, например "Courier New", тогда ширина каждого символа будет приблизительно равна размеру шрифта.
 
штатно - никак. косвенно - через длину строки и размер шрифта.
 
Igor Zakharov:
штатно - никак. косвенно - через длину строки и размер шрифта.

Имеете в виду это?

bool  TextGetSize( 
   const string       text,          // строка текста 
   uint&               width,        // ширина буфера в точках 
   uint&               height        // высота буфера в точках 
   );
 
Alexey Viktorov:

Имеете в виду это?

но тут шрифт не учтен

 
Roman Sharanov:

но тут шрифт не учтен

Так это в паре должно быть с этим

bool  TextSetFont( 
   const string  name,            // имя шрифта или путь к файлу шрифта на диске 
   int           size,            // размер шрифта 
   uint          flags,           // комбинация флагов 
   int           orientation=0    // угол наклона текста 
   );

Я не использовал это вне ресурсов, но думаю никаких проблем не должно быть. 

Есть текст, заданы имя, размер и тип шрифта. Следующей строкой кода определили размер высоты и ширины текста. А дальше где использовать полученные значения никого не интересует... Я так думаю.

 
Alexey Viktorov:

Так это в паре должно быть с этим

Я не использовал это вне ресурсов, но думаю никаких проблем не должно быть. 

Есть текст, заданы имя, размер и тип шрифта. Следующей строкой кода определили размер высоты и ширины текста. А дальше где использовать полученные значения никого не интересует... Я так думаю.

Проверил, работает.

void TextSize( uint     &width,
               uint     &height,
               string   text, 
               string   fontName, 
               uint     flags, 
               int      fontSize, 
               int      orientation=0){
   TextSetFont(fontName,fontSize,flags,orientation);
   TextGetSize(text,width,height);
}
 

Скрипт для проверки:

//+------------------------------------------------------------------+
//|                                            Script Text Width.mq5 |
//|                                                   Copyright 2019 |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs

input string Text="Some text";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(){
   uint w, h;
   TextSize(w,h,Text,"Courier New",FW_NORMAL,14);
   Comment(
      Text,"\n",
      "Width: ",w,"\n",
      "Height: ",h
   );
}
//+------------------------------------------------------------------+
void TextSize( uint     &width,
               uint     &height,
               string   text, 
               string   fontName, 
               uint     flags, 
               int      fontSize, 
               int      orientation=0){
   TextSetFont(fontName,fontSize,flags,orientation);
   TextGetSize(text,width,height);
}
 

Понял, благодарю

Еще такой вопрос, как задать ТФ для отладки на реальных данных? Для символа я понял - поместить в самый верх окна обзора рынка, а вот ТФ хоть что ты делай открывает Н1