Как сделать невидимую линию не влияющую на масштабирование индикатора

 

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

Мне надо чтобы в индикаторе одна из линий была не видна на экране и не влияла на масштаб.

В то же время советнику должен быть доступен этот буфер индикатора (просто в нём большие числа и остальные линии превращаются в одну прямую возле нуля)

Я использую: INDICATOR_CALCULATIONS для этого буфера, DRAW_NONE,

сокращаю число отрисовок при помощи indicator_plots, по сравнению с indicator_buffers.

В результате линия индикатора не видна, но всё равно влияет на масштаб.

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

Спасибо за участие!

 
Проще написать вариант для iCustom(), специально, чтобы вызывать из советника, тогда на масштаб ничего влиять не будет. А в варианте для графика этот буфер вообще убрать, раз он только для советника.
 
evillive:
Проще написать вариант для iCustom(), специально, чтобы вызывать из советника, тогда на масштаб ничего влиять не будет. А в варианте для графика этот буфер вообще убрать, раз он только для советника.
А индикатор может определить, что он был вызван через iCustom()?
 
Eugene1:
А индикатор может определить, что он был вызван через iCustom()?

А зачем ему это?

 
evillive:

 

А зачем ему это?

Чтобы определить: показывать или не показывать буфер
 
Eugene1:
Чтобы определить: показывать или не показывать буфер
Индикаторы такого не умеют, но вы можете, как я раньше писал, сделать специальную версию индикатора под iCustom. Или встроить логику расчётов нужных данных прямо в советник. Тогда на графике ничего мешать масштабу не будет.
 
Eugene1:

Раньше невидимые буферы можно было сделать с помощью функции IndicatorBuffers.

Еще насколько я помню невидимые буферы должны быть обязательно последними по индексам

 
TheXpert:

Раньше невидимые буферы можно было сделать с помощью функции IndicatorBuffers.

Еще насколько я помню невидимые буферы должны быть обязательно последними по индексам



Так и сейчас. У меня были сомнения, что в iCustom() можно получить доступ ко всем буферам. Написал простенький скрипт, проверил. У меня есть индикатор, использующий 11 буферов, но отображаемых только четыре. Ко всем буферам можно получить доступ через iCustom()..

Почитал справку. Новичкам она не в помощь. Везде она вводит в заблуждение.

iCustom

Параметры

mode

[in]  Индекс линии индикатора. Может принимать значения от 0 до 7 и соответствовать индексу, указанному при вызове функции SetIndexBuffer().

Здесь должно быть  не "Индекс линии", а "Индекс буфера".

Текст "Может принимать значения от 0 до 7 и" надо заменить одним словом "Должен"

"Индекс линии" намекает, что мы можем получить доступ только к отображаемым буферам. Однако, это не так.

SetIndexBuffer

Параметры

index

[in]  Номер индикаторного буфера. Нумерация начинается с 0. Номер должен быть меньше значения, объявленного в #property indicator_buffers.

Неправда, что "Номер должен быть меньше значения, объявленного в #property indicator_buffers."

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

И, дать определение: "Количество буферов для расчета индикатора определяется свойством #property indicator_buffers, указывающим на количество отображаемых буферов индикатора, но, может быть увеличено путем использования функции IndicatorBuffers"

#property indicator_buffers

indicator_buffers

int

Количество буферов для расчета индикатора

Следует читать "Количество отображаемых буферов индикатора"

 
Стиль рисования DRAW_NONE поможет. Но только в последнем билде клиентского терминала MT4
 
stringo:
Стиль рисования DRAW_NONE поможет. Но только в последнем билде клиентского терминала MT4

Билд 988, работает в этом смысле точно также, как и предыдущие, ничего нового в функционале DRAW_NONE не замечено. Точно так же невидимая линия влияет на масштаб видимых (в отдельном окне).

Лучше всего скрытые буферы, те ни на что не влияют, но доступны через iCustom(). 

 

Eugene1:

...  линия индикатора не видна, но всё равно влияет на масштаб...

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