Methodology · Indicators · I.6
Average Directional Index (ADX, with +DI / −DI)
Measures: trend strength, direction-agnostic. The engine's answer to "is there even a trend here worth following, or is this chop?"
Formula:
Directional movement per bar:
upMove = H_t − H_(t−1)
downMove = L_(t−1) − L_t
+DM = upMove if upMove > downMove and upMove > 0, else 0
−DM = downMove if downMove > upMove and downMove > 0, else 0
Wilder-smooth TR, +DM, −DM over n
(seed = sum of first n; then S_t = S_(t−1) − S_(t−1)/n + x_t)
+DI = 100 × S(+DM) / S(TR)
−DI = 100 × S(−DM) / S(TR)
DX = 100 × |+DI − −DI| / (+DI + −DI)
ADX = Wilder average of DX over n
Parameters: n = 14.
How Thresher uses it (Trend family quality multiplier):
| ADX | Reading | Multiplier on raw trend score |
|---|---|---|
| ≥ 25 | established trend | × 1.0 |
| 18–25 | developing trend | × 0.8 |
| < 18 | chop | × 0.5, sets choppy flag (−12 confidence) |
Note the engine uses ADX to discount, never to generate, direction — +DI/−DI crossovers are notoriously noisy and are not used as signals.
Limitations: ADX is doubly smoothed and therefore very slow — it confirms trends late and announces their death late. Acceptable here because its only job is regime classification, where lag is tolerable.