Существует ли способ получить значение цвета с индексного буфера индикатора? - страница 2

 
peco:
Тоесть, если изменить цвет в пользовательской переменной, то цвет индикатора не изменится - только цвет объекта.
Почему? Можно цвет индикатора менять.
 
peco:
Кажется пробовал и такое - не получается. Тоесть, если изменить цвет в пользовательской переменной, то цвет индикатора не изменится - только цвет объекта. А цвет индикатора все равно нужно менять на вкладке Цвета в свойствах. 
Через SetIndexStyle в init()
 
peco:

Кажется пробовал и такое - не получается. Тоесть, если изменить цвет в пользовательской переменной, то цвет индикатора не изменится - только цвет объекта. А цвет индикатора все равно нужно менять на вкладке Цвета в свойствах. 

Перепроверю еще, может раньше .... постойте, а SetIndexStyle() можно применять и не во время инициализиции? Если в функции start(), тогда это решает проблему!))))



тогда tara прав - будет постоянный пересчет.....
 
peco:

Перепроверю еще, может раньше .... постойте, а SetIndexStyle() можно применять и не во время инициализиции? Если в функции start(), тогда это решает проблему!))))

Да, вроде, и в ините работает.
 
Какжется, я уже запутался.... 
TheXpert:
Почему? Можно цвет индикатора менять.



Кажется, я уже запутался..... последую совету, еще раз все перепроверю. Может, раньше по другому делал.
 

peco:

Если в функции start(), тогда это решает проблему!))))

Зачем? при изменении пользовательских настроек индикатор перегружается, достаточно в ините.
 
Не понял про постоянный пересчет. При изменении стилей буфера вы только меняете его свойства, но не пересчитываете. Цвет так можно спокойно менять в ините. В своих индикаторах я применяю функцию которая изменяет ширину гистрограммы в зависимости от масштаба графика - постоянных пересчетов не замечал...
 
peco:

... (например, на вкладке Цвета в свойствах индикатора)...

Наоборот. В окне параметров в переменной менять, использовать этот параметр для графических объектов и в ините буферу ставить цвет из этого параметра. Вкладка "цвета" не будет использоваться.
 
tara:
Не получится. Или, индикатор надо будет пересчитывать на всей истории постоянно.



С какого перепуга он будет должен пересчитываться постоянно?
 

 Наконец то разобрался! Сделал так: 

//Внешняя переменная
extern color   LevelColour = Red;

//Инициализация
SetIndexStyle(0,DRAW_ZIGZAG,STYLE_SOLID,3,LevelColour);   

Но там есть интересные моменты, оказывается. 

Текущая запись не позволит поменять цвет индикатора (индексного зигзага в данном случае), если БУДЕТ ОТКРЫТА, ДАЖЕ БЕЗ ИЗМЕНЕНИЯ ПАРАМЕТРОВ, ВКЛАДКА ЦВЕТА СВОЙСТВ ИНДИКАТОРА. Тоеть, если на панели свойст индикатора будет каким либо образом открыта вкладка Цвета (перелистыванием вкладок или с автоматическим открытием панели свойст как последней сохраненной вкладке) ,  то цвет индикатора не будет изменен, только цвет объектов.

Чтобы поменять цвет индикатора вместе с цветом объектов нужно просто поменять цвет пользовательского параметра на вкладке Общие при условии, что ни разу не будет открыта вкладка "Цвета".

И это очень хорошо, потому что такая запись позволяет не только согласованно менять цвет индикатора и объектов, но и отдельно задавать им разные цвета.

 

По поводу изменения свойст без пересчета - интересный момент, я об этом не думал, буду использовать. 

 

Спасибо всем за советы! 

Причина обращения: