Подписи с линиям поддержки - сопротивления

 

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

Я посмотрел ряд индикаторов, где есть подписи на горизонтальных линиях и понял, что существуют разные подходы.

Например, можно сделать текстовую метку, но чтобы она была выше уровня надо вычитать размер шрифта из цены, а это при масштабировании графика далеко не всегда хорошо выглядит, поскольку размер шрифта и цена имеют разные единицы измерения.

Если вы знаете, как написать качественный код, всегда дающий хороший внешний вид горизонтальных линий, то поделитесь, пожалуйста!

Пример того, что нужно получить на рисунке:

Жёсткая привязка надписи к линии

 
Evgeny Potapov:

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

Я посмотрел ряд индикаторов, где есть подписи на горизонтальных линиях и понял, что существуют разные подходы.

Например, можно сделать текстовую метку, но чтобы она была выше уровня надо вычитать размер шрифта из цены, а это при масштабировании графика далеко не всегда хорошо выглядит, поскольку размер шрифта и цена имеют разные единицы измерения.

Если вы знаете, как написать качественный код, всегда дающий хороший внешний вид горизонтальных линий, то поделитесь, пожалуйста!

Пример того, что нужно получить на рисунке:



Не нужно ничего вычитать. Надо задать точку привязки текста по нижнему краю и к цене прибавлять 10 пипс или около того. Про точки привязки объектов почитайте.
 

считаем сколько пипсов в одном пикселе и делаем отступ на 1-2-3 пикселя...
В эвентах делаем проверку на изменение графика и, при необходимости, пересчитываем пипсо/пиксель, перерисовываем метки.

 
Vitalie Postolache:

Не нужно ничего вычитать. Надо задать точку привязки текста по нижнему краю и к цене прибавлять 10 пипс или около того. Про точки привязки объектов почитайте.

Спасибо за ответ! Звучит интересно, но не понятно. Я так понимаю, что речь идёт об использовании текстового объекта (не Label).

1. Если его привязать к низу графика, то цену надо какую указывать? Или привязка никакой роли для текста не играет.

2. 10 пипсов - это очень разное расстояние в зависимости от торгуемого инструмена.

3. Нет ли у вас возможности показать РАБОЧИЙ ФРАГМЕНТ КОДА?

 
Evgeny Potapov:

Спасибо за ответ! Звучит интересно, но не понятно. Я так понимаю, что речь идёт об использовании текстового объекта (не Label).

1. Если его привязать к низу графика, то цену надо какую указывать? Или привязка никакой роли для текста не играет.

2. 10 пипсов - это очень разное расстояние в зависимости от торгуемого инструмена.

3. Нет ли у вас возможности показать РАБОЧИЙ ФРАГМЕНТ КОДА?


Из написанного я понял, что вы справку так и не открывали. Точка привязки задаётся не графику, а объекту. Объекты типа OBJ_LABEL и OBJ_TEXT имеют 9 точек привязки - по углам, по середине с каждой стороны и по центру. В справке даже примеры кода есть, можно и онлайн посмотреть.

Если конкретнее, то вам надо задать своему текстовому объекту точку снизу-слева, тогда текст будет отображаться на линии цены и правее последнего бара. Это если использовать OBJ_TEXT и двигать его с помощью ObjectMove().

ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER); 
ObjectMove(chart_ID,name,0,time,price);

Если же использовать OBJ_LABEL , то точку привязки нужно задавать снизу-справа и дополнительно  придётся пересчитывать координаты время-цена в пиксели графика Х-У, чтобы метка двигалась за ценой.

Типы объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
Типы объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Типы объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
 

Текст над линиями востребован, и не ясно (позиция MQ), почему нельзя на график сразу выводить комментарий.

 
-Aleks-:

Текст над линиями востребован, и не ясно (позиция MQ), почему нельзя на график сразу выводить комментарий.

Почему нельзя? OBJPROP_TOOLTIP в руки и будет всё желаемое. Наводишь крыску на линию, и читаешь содержимое всплывающей подсказки.

Только беда, нельзя установить свойство видимости подсказки постоянно. Увидеть можно только при наведении крыски на объект.

Свойства объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
Свойства объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Свойства объектов - Константы объектов - Стандартные константы, перечисления и структуры - Справочник MQL4
 
Vitalie Postolache:


Из написанного я понял, что вы справку так и не открывали.

Спасибо, что вы так много пишете, а по существу вопроса можете ответить? Как вычислить переменную: "price" для текста с учётом масштабирования и использования разного размера для текста, исходя из того, что расстояние от нижней границы текста до линии уровня к которой он относится должно оставаться постоянным в пикселях.
 
Evgeny Potapov:
Спасибо, что вы так много пишете, а по существу вопроса можете ответить? Как вычислить переменную: "price" для текста с учётом масштабирования и использования разного размера для текста, исходя из того, что расстояние от нижней границы текста до линии уровня к которой он относится должно оставаться постоянным в пикселях.

А скрины увидеть можно где видно изменение и чего надо добиться?

Предположительно: можно взять разницу между верхней границей графика и линии, перевести в пиксели и от этого плясать...

 
Evgeny Potapov:
Спасибо, что вы так много пишете, а по существу вопроса можете ответить? Как вычислить переменную: "price" для текста с учётом масштабирования и использования разного размера для текста, исходя из того, что расстояние от нижней границы текста до линии уровня к которой он относится должно оставаться постоянным в пикселях.


Повторюсь: для OBJ_TEXT вам не надо рассчитывать расстояния в пикселях. Нужно указывать цену, на которой рисуете вашу линию + пару пипсов, чтобы текст был чуть приподнят над ней, ещё с новой ценой, указываете текстовому объекту эту цену (функция ObjectMove). И с каждым новым баром этот текст сдвигаете вправо, чтобы он не уплывал с графиком.

Написать код за вас? Мне это не интересно, есть уже куча примеров в кодобазе с отображением текста на графике. Изучайте, читайте справку, в общем, развивайтесь.

 
Alexey Viktorov:

Только беда, нельзя установить свойство видимости подсказки постоянно. Увидеть можно только при наведении крыски на объект.

 Так в этом  цель... - не забыть, что за линия такая...

Причина обращения: