Directional Movement indicator implemented in Pine script. Use it to customize ADX behavior.
study("Directional Movement", shorttitle="DMI") adxlen = input(17, title="ADX Smoothing") dilen = input(17, title="DI Length") dirmov(len) => up = change(high) down = -change(low) truerange = rma(tr, len) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [adx, plus, minus] [sig, up, down] = adx(dilen, adxlen) plot(sig, color=red, title="ADX") plot(up, color=blue, title="+DI") plot(down, color=orange, title="-DI")