Как создать свою вертикальную шкалу, привязанную к ценам

 

День добрый,

Может кто уже реализовывал подобное и подкинет идею ...

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

  1. если показывать такой прямоугольник напротив каждой цены - то они будут налазить друг на друга из-за масштабирования
  2. отсюда вторая проблема - шкала цен показывает только масштабированные значения, т.е. например, каждые 5 значений - 1,5050 / 1,5055 / 1,5060 - как узнать какие цены отображаются на шкале в данный момент? Напротив какой цены рисовать прямоугольник?
  3. возможным решением проблемы было бы если бы я знал какой кол-во пикселей выделяется на отображаемый промежуток цен (1,5050 - 1,5055 = 20рх), можно ли это узнать?
  4. даже если предыдущие проблемы решены, как быть если пользователь начнет прокручивать график назад или масштабировать его, снова прямоугольники налезут друг на друга, можно ли отлавливать событие Resize / Scale в МТ?

Спасибо, Артем

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
Файлы:
Scale.png  269 kb
 

Кажись, как узнать текущий масштаб я понял, взял эту функцию с MQL4 : https://www.mql5.com/ru/forum/106546

Получилось :

double GetScale()

{
    double min = ChartGetDouble(0, CHART_PRICE_MIN);
    double max = ChartGetDouble(0, CHART_PRICE_MAX);
    int bars = int(ChartGetInteger(0, CHART_VISIBLE_BARS));

    return ((max - min) / _Point) / bars;
}
Как узнать масштаб графика по ценовой оси? - MQL4 форум
  • www.mql5.com
Как узнать масштаб графика по ценовой оси? - MQL4 форум
 

Самые пытливые умы (т.к. в кодобазе его нет), найдут во вложении к этому посту заманчивый индикаторчик - Market Profile - это очередная вклад от меня любимого в популяризацию МТ5.

К определению обычных ценовых уровней добавилось :

1. исправлено выставление дистанции между горизонтальными уровнями
2. добавлено масштабирование (индикатор выглядит идентично и подстраивается под шкалу цен при любом Zoom + или -)
3. добавлена возможность отображать несколько профилей через каждые InpProfileCount баров
4. добавлена шкала горизонтальных обьемов - теперь можно смотреть на каком уровне входили смарты + цветом показывается в какую сторону (синий - это покупки)

Файлы: