Strength indicator: ADX

Financial Trading in Python

Chelsea Yang

Data Science Instructor

What is ADX?

  • Stands for "Average Directional Movement Index"
  • Developed by J. Welles Wilder
    • "New Concepts in Technical Systems" (1987)

Wells Wilder book

  • Measures the strength of a trend
    • Oscillates between 0 and 100
    • ADX <= 25: no trend
    • ADX > 25: trending market
    • ADX > 50: strong trending market
Financial Trading in Python

How is ADX calculated?

  • Derived from the smoothed averages of the difference between +DI and -DI
    • +DI (Plus Directional Index): quantify the presence of an uptrend
    • -DI (Minus Directional Index): quantify the presence of a downtrend

 

  • Calculation input:
    • high, low, and close prices of each period
Financial Trading in Python

Implementing ADX in Python

# Calculate ADX
stock_data['ADX'] = talib.ADX(stock_data['High'], stock_data['Low'], stock_data['Close'],
                              timeperiod=14)

# Print the last five rows print(stock_data.tail())
             Open   High    Low  Close   ADX
Date                                        
2020-11-24 540.40 559.99 526.20 555.38 21.16
2020-11-25 550.06 574.00 545.37 574.00 23.92
2020-11-27 581.16 598.78 578.45 585.76 26.82
2020-11-30 602.21 607.80 554.51 567.60 28.25
2020-12-01 597.59 597.85 572.05 584.76 29.58
Financial Trading in Python

Plotting ADX

import matplotlib.pyplot as plt

# Create subplots
fig, (ax1, ax2) = plt.subplots(2)

# Plot ADX with the price ax1.set_ylabel('Price') ax1.plot(stock_data['Close']) ax2.set_ylabel('ADX') ax2.plot(stock_data['ADX']) ax1.set_title('Price and ADX') plt.show()

A price plot on the top and an ADX plot on the bottom

Financial Trading in Python

Let's practice!

Financial Trading in Python

Preparing Video For Download...