From 322348e50d8c6c8310b2b56886e1142866106f88 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 19 Oct 2025 20:02:53 +0200 Subject: [PATCH] v5: replace ta.adx() with manual ADX calculation using selected OHLC (calcH/L/C) --- Bullmania_Money_Line_v5.pine | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Bullmania_Money_Line_v5.pine b/Bullmania_Money_Line_v5.pine index 3b5412e..3ce59e7 100644 --- a/Bullmania_Money_Line_v5.pine +++ b/Bullmania_Money_Line_v5.pine @@ -138,8 +138,17 @@ shortOk = not useMacd or (macdLine < macdSignal) buyFlip = trend == 1 and trend[1] == -1 sellFlip = trend == -1 and trend[1] == 1 -// ADX computation and gate -adxVal = ta.adx(adxLen) +// ADX computation (manual) and gate on selected source +upMove = calcH - calcH[1] +downMove = calcL[1] - calcL +plusDM = (upMove > downMove and upMove > 0) ? upMove : 0.0 +minusDM = (downMove > upMove and downMove > 0) ? downMove : 0.0 +trADX = math.max(calcH - calcL, math.max(math.abs(calcH - calcC[1]), math.abs(calcL - calcC[1]))) +atrADX = ta.rma(trADX, adxLen) +plusDI = atrADX == 0.0 ? 0.0 : 100.0 * ta.rma(plusDM, adxLen) / atrADX +minusDI = atrADX == 0.0 ? 0.0 : 100.0 * ta.rma(minusDM, adxLen) / 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) // Entry buffer gates relative to current Money Line