Средният насочен индекс (ADX) е технически индикатор, използван за измерване на силата на тенденция на финансов пазар. Това е индикатор, следващ тенденцията, който може да се използва за идентифициране дали даден пазар е в тенденция или варира, както и силата на тенденцията.

За да изчислите ADX с помощта на JavaScript, ще трябва да изпълните следните стъпки:

  1. Първо ще трябва да изчислите стойностите +DI и -DI, ​​като използвате следните формули:

+DI = 100 * (PDI / TR) -DI = 100 * (MDI / TR)

Където PDI е индикаторът за положителна посока, MDI е индикаторът за отрицателна посока, а TR е истинският диапазон.

2. След това ще трябва да изчислите стойността на ADX, като използвате следната формула:

ADX = 100 * (Абсолютна стойност (+DI — -DI) / (+DI + -DI))

3. След това ще трябва да изгладите стойността на ADX, като използвате пълзяща средна. Броят на периодите, използвани за подвижната средна, ще зависи от вашата търговска стратегия и времевата рамка, която използвате.

4. И накрая, можете да начертаете ADX стойността на диаграма, за да ви помогне да визуализирате силата на тренда.

// Calculate the +DI and -DI values

function plusDI(high, low, close, period) {
  let sumPositiveDM = 0;
  let sumTrueRange = 0;
  for (let i = 1; i < period; i++) {
    let positiveDM = high[i] - high[i - 1];
    if (positiveDM < 0) {
      positiveDM = 0;
    }
    sumPositiveDM += positiveDM;

    let trueRange = Math.max(high[i] - low[i], Math.abs(high[i] - close[i - 1]), Math.abs(low[i] - close[i - 1]));
    sumTrueRange += trueRange;
  }

  return (100 * (sumPositiveDM / sumTrueRange));
}

function minusDI(high, low, close, period) {
  let sumNegativeDM = 0;
  let sumTrueRange = 0;
  for (let i = 1; i < period; i++) {
    let negativeDM = low[i - 1] - low[i];
    if (negativeDM < 0) {
      negativeDM = 0;
    }
    sumNegativeDM += negativeDM;

    let trueRange = Math.max(high[i] - low[i], Math.abs(high[i] - close[i - 1]), Math.abs(low[i] - close[i - 1]));
    sumTrueRange += trueRange;
  }

  return (100 * (sumNegativeDM / sumTrueRange));
}

// Calculate the ADX value

function ADX(high, low, close, period) {
  let plusDI = plusDI(high, low, close, period);
  let minusDI = minusDI(high, low, close, period);
  let ADX = (100 * (Math.abs(plusDI - minusDI) / (plusDI + minusDI)));
  return ADX;
}

// Example usage

let high = [50, 52, 53, 54, 55, 54, 53, 52, 51, 50];
let low = [48, 49, 50, 51, 52, 51, 50, 49, 48, 47];
let close = [49, 51, 52, 53, 54, 53, 52, 51, 50, 49];
let period = 14;

let ADXValue = ADX(high, low, close, period);
console.log(ADXValue); // Outputs: 39.39393939393939

Този пример изчислява +DI и -DI стойностите с помощта на предоставените по-рано формули и след това изчислява ADX стойността с помощта на формулата за ADX. Той също така включва пример за това как да използвате функцията с примерни данни.

Обърнете внимание, че този пример изчислява ADX, като използва период от 14, което е обичаен избор за ADX. Можете да коригирате периода, за да отговаря на вашите нужди и търговска стратегия. Може също да искате да изгладите стойността на ADX, като използвате подвижна средна, както беше споменато по-рано.

Струва си да се отбележи, че ADX е само един от многото технически индикатори, които търговците използват, за да помогнат при вземането на търговски решения. Важно е да използвате комбинация от индикатори и техники за анализ, които да ви помогнат да правите информирани и печеливши сделки.