цветной фон, когда срабатывает условие, ПОКА не сработает другое

#pine-script

Вопрос:

Я рисую зеленые точки на индикаторе. Когда все точки станут зелеными, я хочу, чтобы фон стал зеленым. Фон должен оставаться зеленым (чтобы 1 или более точек могли стать красными), пока ВСЕ точки не станут красными. затем я хочу, чтобы фон стал красным, пока ВСЕ точки снова не станут зелеными.

прямо сейчас у меня есть это:

 bull = (ha_diff==2 and ha_diff2==2 and ha_diff3==2 and ha_diff4==2 and ha_diff5==2 and ha_diff6==2 and ha_diff7==2 and ha_diff8==2 )
bear = (ha_diff==1 and ha_diff2==1 and ha_diff3==1 and ha_diff4==1 and ha_diff5==1 and ha_diff6==1  and ha_diff7==1 and ha_diff8==1 )

plot(15, title="TF1", color=iff(ha_diff==1, red, iff(ha_diff==2, green, white)), style=circles, linewidth=5, join=true)
plot(14, title="TF2", color=iff(ha_diff2==1, red, iff(ha_diff2==2, green, white)), style=circles, linewidth=5, join=true)
plot(13, title="TF3", color=iff(ha_diff3==1, red, iff(ha_diff3==2, green, white)), style=circles, linewidth=5, join=true)
plot(12, title="TF4", color=iff(ha_diff4==1, red, iff(ha_diff4==2, green, white)), style=circles, linewidth=5, join=true)
plot(11, title="TF5", color=iff(ha_diff5==1, red, iff(ha_diff5==2, green, white)), style=circles, linewidth=5, join=true)
plot(10, title="TF6", color=iff(ha_diff6==1, red, iff(ha_diff6==2, green, white)), style=circles, linewidth=5, join=true)
plot(9, title="TF7", color=iff(ha_diff7==1, red, iff(ha_diff7==2, green, white)), style=circles, linewidth=5, join=true)
plot(8, title="TF8", color=iff(ha_diff8==1, red, iff(ha_diff8==2, green, white)), style=circles, linewidth=5, join=true)


// Colour background
backgroundColour = (bull) ? green : red

bgcolor(color=backgroundColour, transp=40,
     title="Conditionally coloured background")
 

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

кто-нибудь может помочь?

Ответ №1:

Как показано в примере ниже, назначьте цвет переменной backgroundColour только при срабатывании сигнала быка/медведя, в противном случае используйте предыдущее значение:

 // Colour background
backgroundColour = white
backgroundColour := bull ? green : bear ? red : backgroundColour[1]
 

введите описание изображения здесь