OPEN-SOURCE SCRIPT
Liquidity Sweep Strategy [Enhanced]

//version=5
indicator("Liquidity Sweep Strategy [Enhanced]", overlay=true)
// === USER SETTINGS ===
structureLookback = input.int(20, "Structure Lookback")
sweepSensitivity = input.int(2, "Sweep Sensitivity (Wicks Above/Below)")
showBreaks = input.bool(true, "Highlight Breaks of Structure")
showSweeps = input.bool(true, "Highlight Liquidity Sweeps")
showEntrySignals = input.bool(true, "Show Entry Signals After Sweeps")
emaLength = input.int(50, "EMA Trend Filter Length")
atrLength = input.int(14, "ATR Length")
atrMultiplier = input.float(1.2, "Minimum ATR for Valid Entry")
// === INDICATORS ===
ema = ta.ema(close, emaLength)
atr = ta.atr(atrLength)
// === HIGH/LOW STRUCTURE ===
var float lastHigh = na
var float lastLow = na
swingHigh = ta.highest(high, structureLookback) == high
swingLow = ta.lowest(low, structureLookback) == low
if swingHigh
lastHigh := high
if swingLow
lastLow := low
// === BREAK OF STRUCTURE ===
bosUp = showBreaks and swingHigh and close > lastHigh
bosDown = showBreaks and swingLow and close < lastLow
plotshape(bosUp, title="Break of Structure (Up)", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(bosDown, title="Break of Structure (Down)", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === LIQUIDITY SWEEP DETECTION ===
sweepHigh = high > lastHigh and close < lastHigh and showSweeps
sweepLow = low < lastLow and close > lastLow and showSweeps
plotshape(sweepHigh, title="Liquidity Sweep High", location=location.abovebar, color=color.orange, style=shape.xcross, size=size.small)
plotshape(sweepLow, title="Liquidity Sweep Low", location=location.belowbar, color=color.orange, style=shape.xcross, size=size.small)
// === ENTRY SIGNALS WITH CONFIRMATION ===
validShort = sweepHigh and close < open and close < ema and atr > atrMultiplier * ta.sma(close, atrLength)
validLong = sweepLow and close > open and close > ema and atr > atrMultiplier * ta.sma(close, atrLength)
entryShort = validShort and showEntrySignals
entryLong = validLong and showEntrySignals
plotshape(entryShort, title="Entry Short", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.normal)
plotshape(entryLong, title="Entry Long", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.normal)
// === ALERT CONDITIONS ===
alertcondition(entryShort, title="Short Entry Alert", message="Liquidity Sweep Short Entry with EMA + ATR Confirmation")
alertcondition(entryLong, title="Long Entry Alert", message="Liquidity Sweep Long Entry with EMA + ATR Confirmation")
// === BACKGROUND COLOR ON CONFIRMATION ===
bgcolor(bosUp or bosDown ? color.new(color.gray, 85) : na)
indicator("Liquidity Sweep Strategy [Enhanced]", overlay=true)
// === USER SETTINGS ===
structureLookback = input.int(20, "Structure Lookback")
sweepSensitivity = input.int(2, "Sweep Sensitivity (Wicks Above/Below)")
showBreaks = input.bool(true, "Highlight Breaks of Structure")
showSweeps = input.bool(true, "Highlight Liquidity Sweeps")
showEntrySignals = input.bool(true, "Show Entry Signals After Sweeps")
emaLength = input.int(50, "EMA Trend Filter Length")
atrLength = input.int(14, "ATR Length")
atrMultiplier = input.float(1.2, "Minimum ATR for Valid Entry")
// === INDICATORS ===
ema = ta.ema(close, emaLength)
atr = ta.atr(atrLength)
// === HIGH/LOW STRUCTURE ===
var float lastHigh = na
var float lastLow = na
swingHigh = ta.highest(high, structureLookback) == high
swingLow = ta.lowest(low, structureLookback) == low
if swingHigh
lastHigh := high
if swingLow
lastLow := low
// === BREAK OF STRUCTURE ===
bosUp = showBreaks and swingHigh and close > lastHigh
bosDown = showBreaks and swingLow and close < lastLow
plotshape(bosUp, title="Break of Structure (Up)", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(bosDown, title="Break of Structure (Down)", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === LIQUIDITY SWEEP DETECTION ===
sweepHigh = high > lastHigh and close < lastHigh and showSweeps
sweepLow = low < lastLow and close > lastLow and showSweeps
plotshape(sweepHigh, title="Liquidity Sweep High", location=location.abovebar, color=color.orange, style=shape.xcross, size=size.small)
plotshape(sweepLow, title="Liquidity Sweep Low", location=location.belowbar, color=color.orange, style=shape.xcross, size=size.small)
// === ENTRY SIGNALS WITH CONFIRMATION ===
validShort = sweepHigh and close < open and close < ema and atr > atrMultiplier * ta.sma(close, atrLength)
validLong = sweepLow and close > open and close > ema and atr > atrMultiplier * ta.sma(close, atrLength)
entryShort = validShort and showEntrySignals
entryLong = validLong and showEntrySignals
plotshape(entryShort, title="Entry Short", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.normal)
plotshape(entryLong, title="Entry Long", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.normal)
// === ALERT CONDITIONS ===
alertcondition(entryShort, title="Short Entry Alert", message="Liquidity Sweep Short Entry with EMA + ATR Confirmation")
alertcondition(entryLong, title="Long Entry Alert", message="Liquidity Sweep Long Entry with EMA + ATR Confirmation")
// === BACKGROUND COLOR ON CONFIRMATION ===
bgcolor(bosUp or bosDown ? color.new(color.gray, 85) : na)
Skrip sumber terbuka
Dalam semangat sebenar TradingView, pencipta skrip ini telah menjadikannya sumber terbuka supaya pedagang dapat menilai dan mengesahkan kefungsiannya. Terima kasih kepada penulis! Walaupun anda boleh menggunakannya secara percuma, ingat bahawa menerbitkan semula kod ini adalah tertakluk kepada Peraturan Dalaman kami.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.
Skrip sumber terbuka
Dalam semangat sebenar TradingView, pencipta skrip ini telah menjadikannya sumber terbuka supaya pedagang dapat menilai dan mengesahkan kefungsiannya. Terima kasih kepada penulis! Walaupun anda boleh menggunakannya secara percuma, ingat bahawa menerbitkan semula kod ini adalah tertakluk kepada Peraturan Dalaman kami.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.