study(title='[RS]3 Level ZigZag Semafor V0', shorttitle='3LZZS', overlay=true) showZigZags = input(false) useAltTF1 = input(false, title='Use Alt Timeframe') tf1 = input('5', title='Alt Timeframe') tf2 = input('15', title='Alt Timeframe') tf3 = input('30', title='Alt Timeframe') zigzag() => _isUp = close >= open _isDown = close <= open _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1]) _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? high : _isDown[1] and _isUp and _direction[1] != 1 ? low : na zz1 = useAltTF1 ? (change(time(tf1)) != 0 ? security(tickerid, tf1, zigzag()) : na) : zigzag() zz2 = (change(time(tf2)) != 0 ? security(tickerid, tf2, zigzag()) : na) zz3 = (change(time(tf3)) != 0 ? security(tickerid, tf3, zigzag()) : na) plot(not showZigZags ? na : zz1, title='zigzag1', color=black, linewidth=1) plot(not showZigZags ? na : zz2, title='zigzag2', color=blue, linewidth=2) plot(not showZigZags ? na : zz3, title='zigzag3', color=red, linewidth=3) is_lvl1_high = zz1 and zz1 >= high is_lvl2_high = zz2 and zz2 >= high is_lvl3_high = zz3 and zz3 >= high is_lvl1_low = zz1 and zz1 <= low is_lvl2_low = zz2 and zz2 <= low is_lvl3_low = zz3 and zz3 <= low plotchar(series=is_lvl1_high, title='1', char='', location=location.abovebar, color=red, transp=0, text='1', textcolor=red) plotchar(series=is_lvl2_high, title='2', char='', location=location.abovebar, color=red, transp=0, text='2\n', textcolor=red) plotchar(series=is_lvl3_high, title='3', char='', location=location.abovebar, color=red, transp=0, text='3\n\n', textcolor=red) plotchar(series=is_lvl1_low, title='1', char='', location=location.belowbar, color=lime, transp=0, text='1', textcolor=lime) plotchar(series=is_lvl2_low, title='2', char='', location=location.belowbar, color=lime, transp=0, text='\n2', textcolor=lime) plotchar(series=is_lvl3_low, title='3', char='', location=location.belowbar, color=lime, transp=0, text='\n\n3', textcolor=lime)