THRESHER / METHODOLOGY← back to the desk

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):

ADXReadingMultiplier on raw trend score
≥ 25established trend× 1.0
18–25developing trend× 0.8
< 18chop× 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.