OPEN-SOURCE SCRIPT

Swing Break Indicator

101
//version=5
indicator("Swing Break Indicator", overlay=true)

// Input for swing length
swingLength = input(5, title="Swing Length")

// Identify swing high and swing low
swingHigh = ta.highest(high, swingLength)
swingLow = ta.lowest(low, swingLength)

// Store previous swing values
var float prevSwingHigh = na
var float prevSwingLow = na
var float lastSwingHigh = na
var float lastSwingLow = na

if high == swingHigh
prevSwingHigh := lastSwingHigh
lastSwingHigh := swingHigh

if low == swingLow
prevSwingLow := lastSwingLow
lastSwingLow := swingLow

// Conditions for Buy and Sell signals
buySignal = low < prevSwingHigh and ta.crossover(low, prevSwingHigh)
sellSignal = high > prevSwingLow and ta.crossunder(high, prevSwingLow)

// Plot Buy and Sell labels
labelPosition = 20 // Offset for label placement
if buySignal
label.new(bar_index, low - labelPosition * syminfo.mintick, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down)
if sellSignal
label.new(bar_index, high + labelPosition * syminfo.mintick, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up)

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.