Здравствуйте!
Я посмотрел ряд индикаторов, где есть подписи на горизонтальных линиях и понял, что существуют разные подходы.
Например, можно сделать текстовую метку, но чтобы она была выше уровня надо вычитать размер шрифта из цены, а это при масштабировании графика далеко не всегда хорошо выглядит, поскольку размер шрифта и цена имеют разные единицы измерения.
Если вы знаете, как написать качественный код, всегда дающий хороший внешний вид горизонтальных линий, то поделитесь, пожалуйста!
Пример того, что нужно получить на рисунке:
Не нужно ничего вычитать. Надо задать точку привязки текста по нижнему краю и к цене прибавлять 10 пипс или около того. Про точки привязки объектов почитайте.
считаем сколько пипсов в одном пикселе и делаем отступ на 1-2-3 пикселя...
В эвентах делаем проверку на изменение графика и, при необходимости, пересчитываем пипсо/пиксель, перерисовываем метки.
Не нужно ничего вычитать. Надо задать точку привязки текста по нижнему краю и к цене прибавлять 10 пипс или около того. Про точки привязки объектов почитайте.
Спасибо за ответ! Звучит интересно, но не понятно. Я так понимаю, что речь идёт об использовании текстового объекта (не Label).
1. Если его привязать к низу графика, то цену надо какую указывать? Или привязка никакой роли для текста не играет.
2. 10 пипсов - это очень разное расстояние в зависимости от торгуемого инструмена.
3. Нет ли у вас возможности показать РАБОЧИЙ ФРАГМЕНТ КОДА?
Спасибо за ответ! Звучит интересно, но не понятно. Я так понимаю, что речь идёт об использовании текстового объекта (не 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 , то точку привязки нужно задавать снизу-справа и дополнительно придётся пересчитывать координаты время-цена в пиксели графика Х-У, чтобы метка двигалась за ценой.
- docs.mql4.com
Текст над линиями востребован, и не ясно (позиция MQ), почему нельзя на график сразу выводить комментарий.
Текст над линиями востребован, и не ясно (позиция MQ), почему нельзя на график сразу выводить комментарий.
Почему нельзя? OBJPROP_TOOLTIP в руки и будет всё желаемое. Наводишь крыску на линию, и читаешь содержимое всплывающей подсказки.
Только беда, нельзя установить свойство видимости подсказки постоянно. Увидеть можно только при наведении крыски на объект.
- docs.mql4.com
Из написанного я понял, что вы справку так и не открывали.
Спасибо, что вы так много пишете, а по существу вопроса можете ответить? Как вычислить переменную: "price" для текста с учётом масштабирования и использования разного размера для текста, исходя из того, что расстояние от нижней границы текста до линии уровня к которой он относится должно оставаться постоянным в пикселях.
А скрины увидеть можно где видно изменение и чего надо добиться?
Предположительно: можно взять разницу между верхней границей графика и линии, перевести в пиксели и от этого плясать...
Спасибо, что вы так много пишете, а по существу вопроса можете ответить? Как вычислить переменную: "price" для текста с учётом масштабирования и использования разного размера для текста, исходя из того, что расстояние от нижней границы текста до линии уровня к которой он относится должно оставаться постоянным в пикселях.
Повторюсь: для OBJ_TEXT вам не надо рассчитывать расстояния в пикселях. Нужно указывать цену, на которой рисуете вашу линию + пару пипсов, чтобы текст был чуть приподнят над ней, ещё с новой ценой, указываете текстовому объекту эту цену (функция ObjectMove). И с каждым новым баром этот текст сдвигаете вправо, чтобы он не уплывал с графиком.
Написать код за вас? Мне это не интересно, есть уже куча примеров в кодобазе с отображением текста на графике. Изучайте, читайте справку, в общем, развивайтесь.
Только беда, нельзя установить свойство видимости подсказки постоянно. Увидеть можно только при наведении крыски на объект.
Так в этом цель... - не забыть, что за линия такая...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Я посмотрел ряд индикаторов, где есть подписи на горизонтальных линиях и понял, что существуют разные подходы.
Например, можно сделать текстовую метку, но чтобы она была выше уровня надо вычитать размер шрифта из цены, а это при масштабировании графика далеко не всегда хорошо выглядит, поскольку размер шрифта и цена имеют разные единицы измерения.
Если вы знаете, как написать качественный код, всегда дающий хороший внешний вид горизонтальных линий, то поделитесь, пожалуйста!
Пример того, что нужно получить на рисунке: