# =========================================
# SMART DARVAS ENGINE v2 (EXTENDED + RANKED)
# ANTWERKS 04/06/2026
# =========================================
declare upper;
# =========================
# INPUTS
# =========================
input lookback = 10;
input minBarsInBox = 5;
input breakoutBuffer = 0.001;
input strongBoxBars = 6; # threshold for strong vs weak
# =========================
# CORE LEVELS
# =========================
def hh = Highest(high, lookback);
def ll = Lowest(low, lookback);
# =========================
# STABILITY (RELAXED)
# =========================
def stableHigh = AbsValue(hh - hh[1]) < TickSize();
def stableLow = AbsValue(ll - ll[1]) < TickSize();
def formingBox = stableHigh and stableLow;
# =========================
# COUNT BARS IN BOX
# =========================
rec boxBars =
if formingBox then boxBars[1] + 1
else 0;
def validBox = boxBars >= minBarsInBox;
# =========================
# LOCK BOX (EXTENDS UNTIL TRUE BREAK)
# =========================
rec boxHigh =
if validBox and !validBox[1] then hh
else if !IsNaN(boxHigh[1]) then boxHigh[1]
else Double.NaN;
rec boxLow =
if validBox and !validBox[1] then ll
else if !IsNaN(boxLow[1]) then boxLow[1]
else Double.NaN;
# =========================
# TRUE BREAK CONDITIONS
# =========================
def breakout =
close > boxHigh * (1 + breakoutBuffer);
def breakdown =
close < boxLow * (1 - breakoutBuffer);
# RESET ONLY ON TRUE BREAK
rec activeHigh =
if breakout or breakdown then Double.NaN
else if !IsNaN(boxHigh) then boxHigh
else activeHigh[1];
rec activeLow =
if breakout or breakdown then Double.NaN
else if !IsNaN(boxLow) then boxLow
else activeLow[1];
# =========================
# BOX STRENGTH
# =========================
def strongBox = boxBars >= strongBoxBars;
def weakBox = validBox and boxBars < strongBoxBars;
# =========================
# FAILED BREAKS (TRAPS)
# =========================
def failedBreakout =
high > activeHigh and close <= activeHigh;
def failedBreakdown =
low < activeLow and close >= activeLow;
# =========================
# PLOTS
# =========================
plot BoxHighPlot =
if !IsNaN(activeHigh) then activeHigh else Double.NaN;
plot BoxLowPlot =
if !IsNaN(activeLow) then activeLow else Double.NaN;
BoxHighPlot.SetLineWeight(2);
BoxLowPlot.SetLineWeight(2);
BoxHighPlot.SetDefaultColor(Color.YELLOW);
BoxLowPlot.SetDefaultColor(Color.YELLOW);
AddCloud(BoxHighPlot, BoxLowPlot, Color.DARK_GRAY, Color.DARK_GRAY);
# =========================
# LABELS (UPGRADED)
# =========================
AddLabel(yes,
if breakout then "DARVAS BREAKOUT"
else if breakdown then "DARVAS BREAKDOWN"
else if failedBreakout then "FAILED BREAKOUT"
else if failedBreakdown then "FAILED BREAKDOWN"
else if strongBox then "STRONG BOX (ACCUMULATION)"
else if weakBox then "WEAK BOX (TRANSITION)"
else "NO BOX",
if breakout then Color.GREEN
else if breakdown then Color.RED
else if failedBreakout then Color.ORANGE
else if failedBreakdown then Color.CYAN
else if strongBox then Color.GREEN
else if weakBox then Color.YELLOW
else Color.GRAY
);