Search code examples
pine-scriptalerttradingview-api

How can I modify my TradingView Pine Script to generate alerts upon color change for Heiken Ashi candles?


I have tried to add a simple buy / sell alert to the following script in heiken ashi , the challenge is to get a buy alert when the trend (heiken) candles change from Red to green and sell alert when the candles change from green to red. I am getting alerts for all candles but I was expecting the alert on change in color . Here is the code...

//@version=2
study(title = "Smoothed Heiken Ashi Candles", shorttitle="Smoothed Ha Candles", overlay=true)

len=input(10)
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=input(10)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

col=o2>c2 ? red : lime
plotcandle(o2, h2, l2, c2, title="heikin smoothed", color=col)

alertcondition( c2 , title="Buy",  message="green buy")
alertcondition( o2 , title="Sell", message="red sell")

I tried to get to solve the problem but have so far not able to , ay help welcome .


Solution

  • You set the color with the below statement.

    col=o2>c2 ? red : lime
    

    So, use it together with the history reference operator [] to see if there is a change in color.

    is_red = o2 > c2
    is_green = not is_red
    
    is_new_red = not is_red[1] and is_red
    is_new_green = not is_green[1] and is_green
    
    plotshape(is_new_red, "Sell", shape.labeldown, location.abovebar, red, 0, 0, "Sell", white)
    plotshape(is_new_green, "Buy", shape.labelup, location.belowbar, lime, 0, 0, "Buy", white)
    
    alertcondition(is_new_red, "Sell", "green buy")
    alertcondition(is_new_red, "Sell", "red sell")