А куда добавить? Добавил - выдало 25 ошибок.
Вот после таких высказываний прямо нагрубить хочется ...
![Frown :( :(](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Однако у меня в очередной раз хорошее настроение, поэтому разъясню, разжую - если после этого не поймете, то программирование не твой конёк ...
![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Итак:
1) нам надо масштабировать подвальный индюк, а в большинстве случаев не один - масштабирование надо сделать так, чтобы нуль был всегда по середине.
2) тут отступление надо сделать: значения подвальных могут быть совершенно различными, чтобы их масштабировать их надо привести к единому виду, так чтобы среднее их значение была равно нулю - к примеру всем известный RSI имеет значения от 0 до 100, чтобы сделать и него нуль по середине надо из всех значений вычесть 50, тогда его значения будут в диапазоне от -50 до 50.
3) чтобы сделать нуль по середине, надо чтобы верх и низ графика имел одинаковые значения по амплитуде.
4) в приведённом ранее листинге это делается следующим образом:
4.1)
![1601351341138.png 1601351341138.png](https://forexsystemru.com/data/attachments/352/352411-892e7f3eac3a1b1aad86dba36528bb37.jpg)
Этот код выдран из индюшка у которого в подвале изображаются две линии SE и SE2. Эти четыре строчки ищут в массивах этих двух линий минимальные и максимальные индексы значений обоих линий. Глубина поиска ограничена значениями нулевого индекса (самый крайний правый бар) и максимально видимого в окне (самый левый видимый в окне бар). Почему индексы - да потому что только такую возможность даёт язык MQL4.
4.2)
![1601351626811.png 1601351626811.png](https://forexsystemru.com/data/attachments/352/352412-de86018f9fca40682c32dfbe894de5a9.jpg)
Поскольку у нас две линии в индюшке, то масштабировать надо обе, т.е. нам надо найти максимальные и минимальные значения. На прошлом шаге были найдены индексы этих значений. Теперь получаем сами значения линий и сравниваем между собой, тем самым получаем абсолютные значения индикатора - максимальное и минимальное в видимом окне.
4.3)
![1601351808801.png 1601351808801.png](https://forexsystemru.com/data/attachments/352/352413-38d36d9ff6633df6e5f386c04ffe51d8.jpg)
Далее нам надо масштабировать так чтобы сверху и снизу нуля было одинаковое расстояние. Но на прошлом шаге мы определили максимальное и минимальное значение, которые могут быть разными. Этой строчкой вычисляется максимальное между найденными на прошлом шаге. Т.к. минимум у нас отрицателен, то сравнивание только абсолютные значения между собой.
4.4)
![1601352004146.png 1601352004146.png](https://forexsystemru.com/data/attachments/352/352414-e359694d7af5a120cdde01fe02a4f730.jpg)
Этими строчками устанавливаются диапазон отображения подвального графика - его минимальное и максимальное значение. Чуть позже я понял, что конструкция std+/-0.1 применима только для индикаторов со значениями в диапазоне -1 ... +1. Лучше использовать следующую конструкции: для минимального значения std*0.9, для максимального std*1.1
Ну вот и всё ...
![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Ничего вроде сложного.
С уважением, RomFil