diff --git a/workflows/trading/moneyline_v11_all_filters.pinescript b/workflows/trading/moneyline_v11_all_filters.pinescript index fcf8143..d7a3a18 100644 --- a/workflows/trading/moneyline_v11_all_filters.pinescript +++ b/workflows/trading/moneyline_v11_all_filters.pinescript @@ -1,5 +1,5 @@ //@version=6 -indicator("Bullmania Money Line v11 All Filters", shorttitle="ML v11", overlay=true) +indicator("Bullmania Money Line v11.2 EMERGENCY FIX", shorttitle="ML v11.2", overlay=true) // Calculation source (Chart vs Heikin Ashi) srcMode = input.string("Chart", "Calculation source", options=["Chart","Heikin Ashi"], tooltip="Use regular chart candles or Heikin Ashi for the line calculation.") @@ -49,7 +49,7 @@ useEntryBuffer = input.bool(true, "Require entry buffer (ATR)", group=groupFilte entryBufferATR = input.float(0.10, "Buffer size (in ATR)", minval=0.0, step=0.05, group=groupFilters, tooltip="V11 OPTIMIZED: 0.10 ATR (from exhaustive sweep) - balanced flip protection.") useAdx = input.bool(true, "Use ADX trend-strength filter", group=groupFilters, tooltip="V11: Enabled by default to reduce choppy trades.") adxLen = input.int(16, "ADX Length", minval=1, group=groupFilters) -adxMin = input.int(5, "ADX minimum", minval=0, maxval=100, group=groupFilters, tooltip="V11 OPTIMIZED: 5 (from exhaustive sweep) - allows more signals with sticky trend system protecting quality.") +adxMin = input.int(18, "ADX minimum", minval=0, maxval=100, group=groupFilters, tooltip="V11.2 CRITICAL FIX: 18 minimum (all ADX <18 trades were losses: 13.2=-$20, 15.8=-$4, 17.0=-$7). Filters weak chop.") // NEW v6 FILTERS groupV6Filters = "v6 Quality Filters" @@ -62,8 +62,8 @@ volMin = input.float(0.1, "Volume min ratio", minval=0.0, step=0.1, group=groupV volMax = input.float(3.5, "Volume max ratio", minval=0.5, step=0.5, group=groupV6Filters, tooltip="Maximum volume relative to 20-bar MA.") useRsiFilter = input.bool(true, "Use RSI momentum filter", group=groupV6Filters, tooltip="Ensure momentum confirms direction.") -rsiLongMin = input.float(55, "RSI long minimum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.1 DATA-DRIVEN: 55-70 captures sweet spot (RSI 60-70 = 100% WR, +$26.97). Buffer below 60 for safety.") -rsiLongMax = input.float(70, "RSI long maximum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.1 DATA-DRIVEN: 70 max (RSI 73.5 was -$17 worst loss).") +rsiLongMin = input.float(58, "RSI long minimum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.2 TIGHTENED: 58-68 range (LONG trades at 59.5 lost -$40, need stronger momentum). Quality 95 still lost with RSI 59.5.") +rsiLongMax = input.float(68, "RSI long maximum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.2 TIGHTENED: 68 max (RSI 73.5 was -$17 loss, avoid overbought entries entirely).") rsiShortMin = input.float(30, "RSI short minimum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.1 DATA-DRIVEN: 30-70 captures winners (Both winning SHORTs at RSI 38.8 and 44). Filter was blocking good signals!") rsiShortMax = input.float(70, "RSI short maximum", minval=0, maxval=100, group=groupV6Filters, tooltip="V11.1 DATA-DRIVEN: 70 max avoids overbought chasing. User test showed 4 signals blocked with min=45!") @@ -200,7 +200,7 @@ plusDI = atrADX == 0.0 ? 0.0 : 100.0 * plusDMSmooth / atrADX minusDI = atrADX == 0.0 ? 0.0 : 100.0 * minusDMSmooth / atrADX dx = (plusDI + minusDI == 0.0) ? 0.0 : 100.0 * math.abs(plusDI - minusDI) / (plusDI + minusDI) adxVal = ta.rma(dx, adxLen) -adxOk = not useAdx or (adxVal > adxMin) +adxOk = not useAdx or (adxVal >= adxMin) // Entry buffer gates relative to current Money Line longBufferOk = not useEntryBuffer or (calcC > supertrend + entryBufferATR * atr)