Алгоритм без программирования кликов:
1. Определяете макс (d_Highest) и мин (d_Lowest) значения цены на видимом уч-ке и вычисляете высоту (d_Height) в ценах инструмента. OFF: теоретически можно прочесть приблизительные значения из WindowPriceMax / WindowPriceMin или ChartGetDouble(0, CHART_PRICE_MAX) / ChartGetDouble(0, CHART_PRICE_MIN). Но практически они работают хрен знает как, причём, похоже что разработчики в состав спецгруппы "хрен" не входят - вопрос про масштабирование графика мёртво висит в сервисдеске уже полгода. Поэтому надёжнее самому организовать определение Highest High и Lowest Low
2. Включаете фиксированный масштаб ChartSetInteger(0, CHART_SCALEFIX, true)
3. Устанавливаете фиксированные границы с нужным сдвигом (сдвиг - заданный в настройках % от размаха графика d_Ratio) ChartSetDouble(0, CHART_FIXED_MAX, d_Highest + d_Height * d_Ratio) / ChartSetDouble(0, CHART_FIXED_MIN, d_Lowest - d_Height * d_Ratio)
4. Запоминаете d_Highest и d_Lowest и отслеживаете их изменение - если изменение больше заданного в настройках (d_Step), обновляете фиксированные границы. Можно не отслеживать, а просто повторять всю процедуру по каждому движению цены или графика, но это потребует много больше ресурсов
Наверно это кажется сложно, но на сам деле функция занимает 8 строк + несколько строк в OnChartEvent. Но у меня это MT4 и задача другая - вертикальная центровка по цене Bid - поэтому кодом делиться не буду
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Прошу у знающих людей помощи в автоматизации процесса по фиксингу масштаба и приведению рабочего пространства графика к следующему виду:
Рис.1
В таком состоянии с графиком легко работать и он передвигается во всех четырех направлениях. Однако после смены профиля или ТФ график возвращается в первоначальное состояние.
Рис 2.
Была поставлена задача по написанию индикатора для автоматического перехода графика в изначальное рабочее состояние и поддержание его таковым (Рис.1)
Мною была найдена и частично автоматизированна эта работа:
1) Действие (1). Открываем свойства графика и прописываем (фиксированный максимум * 1,5) и (фиксированный минимум/1,5) , таким образом расширяем диапазон видимой цены.
Рис.3
Эта возможность легко реализуется в коде и с ней вопросов не возникает. Далее Ок.
2) Действие (2). График получился следующего вида:
Рис.4
Неудобоваримая кривая линия, что-бы получить снова наш график как на Рис.1, я делаю двойной клик мыши в область ценовой шкалы:
Вот тут и возникает вопрос: двойной клик не запрограммировать, а чем заменить это действие(2) я ума не приложу. Должен быть какой-то другой вариант решения этой задачи?
Напоминаю, что работа ведется в МТ5.