mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-20 19:48:05 +00:00
2.8 KiB
2.8 KiB
ADX - Average Directional Index
The Average Directional Index (ADX) is a technical analysis indicator used to determine the strength of a trend. The trend can be either up or down, and this is shown by two accompanying indicators, the Negative Directional Indicator (-DI) and the Positive Directional Indicator (+DI). Therefore, ADX consists of three separate lines.
Core Concepts
- Trend Strength: ADX measures the strength of the trend, not the direction.
- Directional Movement: +DI and -DI show the direction of the trend.
- Range: ADX values range from 0 to 100. Values above 25 usually indicate a strong trend.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Period | int | 14 | The number of periods used for the calculation. |
Formula
-
Calculate True Range (TR), +DM, and -DM:
TR = \max(High - Low, |High - PreviousClose|, |Low - PreviousClose|)+DM = \text{if } (High - PreviousHigh) > (PreviousLow - Low) \text{ and } (High - PreviousHigh) > 0 \text{ then } (High - PreviousHigh) \text{ else } 0-DM = \text{if } (PreviousLow - Low) > (High - PreviousHigh) \text{ and } (PreviousLow - Low) > 0 \text{ then } (PreviousLow - Low) \text{ else } 0 -
Smooth TR, +DM, -DM: Using Wilder's Moving Average (RMA) over
Period.TR_{smooth} = RMA(TR, Period)+DM_{smooth} = RMA(+DM, Period)-DM_{smooth} = RMA(-DM, Period) -
Calculate +DI and -DI:
+DI = \frac{+DM_{smooth}}{TR_{smooth}} \times 100-DI = \frac{-DM_{smooth}}{TR_{smooth}} \times 100 -
Calculate DX:
DX = \frac{|+DI - -DI|}{+DI + -DI} \times 100 -
Calculate ADX:
ADX = RMA(DX, Period)
C# Implementation
Standard Usage
// Create ADX with period 14
var adx = new Adx(14);
// Update with TBar
var result = adx.Update(new TBar(time, open, high, low, close, volume));
Console.WriteLine($"ADX: {result.Value}");
Streaming with TBarSeries
var adx = new Adx(14);
var series = new TBarSeries();
// ... populate series ...
var results = adx.Update(series);
Batch Calculation
var results = Adx.Batch(series, 14);
Interpretation
- ADX < 20: Weak trend or non-trending market.
- ADX > 25: Strong trend.
- ADX > 40: Very strong trend.
- ADX > 50: Extremely strong trend.
Traders typically use ADX to determine whether to use a trend-following system or a range-trading system. When ADX is high, trend-following strategies are preferred. When ADX is low, range-trading strategies are preferred.
References
- Investopedia - Average Directional Index (ADX)
- Wilder, J. Welles. New Concepts in Technical Trading Systems. Trend Research, 1978.