Можно ли изменять цвет линии в буфере индикатора в процессе его работы?

 

Прогресс двигают любознательность и лень. В данном случае мне любопытно знать, можно ли, используя SetIndexStyle в секции Start, менять цвет

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

надо будет занимать два буфера в цветных  индикаторах. 

 
granit77:

Прогресс двигают любознательность и лень. В данном случае мне любопытно знать, можно ли, используя SetIndexStyle в секции Start, менять цвет

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

надо будет занимать два буфера в цветных индикаторах.

Лень хорошая вещь. Прогресс двигает. Осталось найти желающих проверить гипотезу.

 

У меня есть желание, но лень... Осталось найти желающих, но неленивых... :-)

 

Ктобы мого подумать об этом. Оказывается можно. Работает!!! Только вся линия цвет меняет.

В начало Start'а. DRAW_ARROW заменить на DRAW_LINE, если надо.

   static int z1;
   
         if(z1==0){
            SetIndexStyle(0,DRAW_ARROW,0,1,Red);
            z1=1;
         }
         else{
            SetIndexStyle(0,DRAW_ARROW,0,1,Yellow); 
            z1=0;
         }
 
А зачем нам вся? При этом мы ничего не решаем.
 

Можно ;)

granit77 писал (а):

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

Однако счастливый человек :) :) и времени полно у человека и спрашивать есть еще желание, но зачем оно ему нужно - еще и не знает.

Уважаемый granit77 - меняю код индюка меняющего свой цвет на каждом тике на рецепт вашего счастья:

#property indicator_chart_window
#property indicator_buffers 1
 
extern int Color1 = Red;
extern int Color2 = Blue;
 
double b[]; bool state=false;
 
int init() 
{ 
  SetIndexBuffer(0,b);
  return(0); 
}
 
int start()
{
  // присвоим что нибудь - лень писать чтото содержательное
  for(int i=0;i<Bars;i++) b[i]=Ask+Point*10; 
  
  // собственно переключаем
  state = !state; 
  
  // рисуем нужным цветом
  if(state) SetIndexStyle(0,DRAW_LINE,DRAW_LINE,4,Color1);
  else      SetIndexStyle(0,DRAW_LINE,DRAW_LINE,4,Color2); 
}
 
ForexTools:

Однако счастливый человек :) :) и времени полно у человека и спрашивать есть еще желание, но зачем оно ему нужно - еще и не знает.

Уважаемый granit77 - меняю код индюка меняющего свой цвет на каждом тике на рецепт вашего счастья:

Любопытство - это антипод необходимости. Ему как раз и свойственно отсутствие конкретной выгоды, так что я последователен.

Рецепт счастья выставляю на аукцион, выигрышный лот получит код индикатора с одним буфером, который оставляет цвет на истории, а не меняет цвет всей линии на каждом тике.

Integer, ForexTools, спасибо за коды, но, похоже, задача до конца неразрешима. Я и задал вопрос в надежде, что есть какой-либо хитрый способ оставить цвет в истории.

 

Интересно смотреть на смену цвета. Релаксация.

 
Vinin:

Интересно смотреть на смену цвета. Релаксация.

:-) еще на воду - огонь и работающих людей



идеальный случай это пожар

 
YuraZ:
Vinin:

Интересно смотреть на смену цвета. Релаксация.

:-) еще на воду - огонь и работающих людей


идеальный случай это пожар

Для этого надо вставать, куда-то идти. А тут все под рукой.

 
granit77:

выигрышный лот получит код индикатора с одним буфером, который оставляет цвет на истории, а не меняет цвет всей линии на каждом тике

В такой постановке задача не разрешима в принципе ибо: цвет задается не для бара а для всего буфера.

Если хочется красить именно бары - придется делать объектами (у меня нечто подобное сделано в индикаторе ft.TradingEvents) там под барами я строю рысочки разной толщины и цвета в зависимости от важности новости и валюты. Но это уже без буферов - каждая рысочка - отдельный объект.

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