Средний индекс направленности

Average Directional Index (ADX) — индикатор технического анализа, разработанный Дж. Уэллсом Уайлдером-младшим в 1978 году. Он используется для количественной оценки силы тренда на финансовом рынке, независимо от направления. ADX является частью системы Directional Movement System и обычно отображается одной линией, помогая отличать сильные и слабые тренды.

Компоненты ADX

ADX рассчитывается на основе скользящего среднего расширения ценового диапазона. Система также включает два других индикатора:

  1. Положительный индекс направленного движения (+DI): измеряет наличие и силу восходящего движения.
  2. Отрицательный индекс направленного движения (-DI): измеряет наличие и силу нисходящего движения.

Вместе ADX, +DI и -DI дают целостную картину рыночного тренда и его силы.

Расчет ADX

  1. Рассчитать True Range (TR): TR для каждого периода — максимальное из:
    • текущий High минус текущий Low
    • абсолютное значение текущего High минус предыдущий Close
    • абсолютное значение текущего Low минус предыдущий Close
  2. Рассчитать направленное движение (+DM и -DM):
    • +DM = текущий High минус предыдущий High, если это значение больше, чем текущий Low минус предыдущий Low. Иначе +DM = 0.
    • -DM = предыдущий Low минус текущий Low, если это значение больше, чем текущий High минус предыдущий High. Иначе -DM = 0.
  3. Сгладить TR, +DM и -DM обычно за 14 периодов.

  4. Рассчитать +DI и -DI: разделить сглаженные +DM и -DM на сглаженный TR.

  5. Рассчитать Directional Movement Index (DX):
    • DX = ABS(+DI - -DI) / (+DI + -DI) * 100
  6. Рассчитать ADX: сгладить DX, обычно 14-периодной скользящей средней.

Интерпретация ADX

Применение в алгоритмической торговле

В алгоритмической торговле ADX часто используется в стратегиях:

  1. Следование тренду: алгоритмы входят или выходят из сделок в зависимости от силы тренда по ADX.
  2. Фильтры волатильности: ADX может служить фильтром, позволяя входить только при достаточном движении.
  3. Управление рисками: ADX помогает корректировать размер позиции в зависимости от силы тренда.

Ограничения ADX

Хотя ADX полезен, у него есть ограничения:

Реализация в торговых алгоритмах

Пример на Python

Ниже — упрощенная реализация расчета ADX на Python с использованием pandas:

import pandas as pd

def calculate_adx(data, period=14):
    # Calculate True Range (TR)
    data['ATR'] = data['High'] - data['Low']
    data['ATR_1'] = abs(data['High'] - data['Close'].shift(1))
    data['ATR_2'] = abs(data['Low'] - data['Close'].shift(1))
    data['TrueRange'] = data[['ATR', 'ATR_1', 'ATR_2']].max(axis=1)
    
    # Calculate +DM and -DM
    data['+DM'] = data['High'].diff()
    data['-DM'] = data['Low'].diff()
    data['+DM'] = data['+DM'].apply(lambda x: x if x > 0 else 0)
    data['-DM'] = data['-DM'].apply(lambda x: abs(x) if x < 0 else 0)
    
    # Smooth the True Range and Directional Movement
    data['smoothed_TR'] = data['TrueRange'].rolling(window=period).mean()
    data['smoothed_+DM'] = data['+DM'].rolling(window=period).mean()
    data['smoothed_-DM'] = data['-DM'].rolling(window=period).mean()
    
    # Calculate +DI and -DI
    data['+DI'] = 100 * (data['smoothed_+DM'] / data['smoothed_TR'])
    data['-DI'] = 100 * (data['smoothed_-DM'] / data['smoothed_TR'])
    
    # Calculate DX
    data['DX'] = (abs(data['+DI'] - data['-DI']) / (data['+DI'] + data['-DI'])) * 100
    
    # Calculate ADX
    data['ADX'] = data['DX'].rolling(window=period).mean()
    
    return data['ADX']

# Example Data
data = pd.DataFrame{
    'High': [1.20, 1.25, 1.30, 1.35, 1.40],
    'Low': [1.10, 1.15, 1.18, 1.20, 1.25],
    'Close': [1.15, 1.20, 1.25, 1.32, 1.35]
})

adx_values = calculate_adx(data)
print(adx_values)

Популярные инструменты и платформы с поддержкой ADX

Несколько платформ поддерживают индикатор ADX. Примеры:

  1. MetaTrader: одна из самых популярных платформ со встроенными индикаторами ADX.
  2. TradeStation: комплексная платформа с поддержкой скриптов индикаторов, включая ADX.
  3. TradingView: онлайн-платформа с мощными графиками и библиотекой индикаторов, включая ADX.

Каждая из этих платформ предлагает настройки, позволяющие адаптировать ADX под стратегию.

MetaTrader: MetaTrader

TradeStation: TradeStation

TradingView: TradingView

В заключение, Average Directional Index (ADX) — важный инструмент как для ручных, так и для алгоритмических трейдеров. Он дает количественную оценку силы тренда и помогает принимать решения по входам и выходам. При правильном использовании ADX может существенно повысить эффективность стратегии.