Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Понравилась статья? Поделись ею с друзьями!
Evgeny Potapov
1628
Evgeny Potapov 2016.07.27 06:01 

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

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

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

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

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

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

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

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

Vitalie Postolache
11084
Vitalie Postolache 2016.07.27 07:49  
Проще написать вариант для iCustom(), специально, чтобы вызывать из советника, тогда на масштаб ничего влиять не будет. А в варианте для графика этот буфер вообще убрать, раз он только для советника.
Evgeny Potapov
1628
Evgeny Potapov 2016.07.27 08:00  
evillive:
Проще написать вариант для iCustom(), специально, чтобы вызывать из советника, тогда на масштаб ничего влиять не будет. А в варианте для графика этот буфер вообще убрать, раз он только для советника.
А индикатор может определить, что он был вызван через iCustom()?
Vitalie Postolache
11084
Vitalie Postolache 2016.07.27 08:25  
Eugene1:
А индикатор может определить, что он был вызван через iCustom()?

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

Evgeny Potapov
1628
Evgeny Potapov 2016.07.27 08:27  
evillive:

 

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

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

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

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

Mislaid
557
Mislaid 2016.07.28 01:37  
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

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

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

Slawa
Модератор
6679
Slawa 2016.07.29 09:29  
Стиль рисования DRAW_NONE поможет. Но только в последнем билде клиентского терминала MT4
Vitalie Postolache
11084
Vitalie Postolache 2016.07.29 16:23  
stringo:
Стиль рисования DRAW_NONE поможет. Но только в последнем билде клиентского терминала MT4

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

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

Алексей Тарабанов
7220
Алексей Тарабанов 2016.07.30 18:17  

Eugene1:

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

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