ADX (Аverage directional movement index)
Индикатор Аverage directional movement index (ADX) –Средний показатель направленного движения цены, был разработан известным аналитиком Уэллсом Уайлдером в качестве индикатора силы тренда. В настоящее время ADX считается одним из лучших технических индикаторов. Трейдеры используют его для подтверждения сигнала входа в рынок, а так же как дополнительный сигнал для закрытия части или всей позиции.
Вводные данные
declare lower; // declare - декларация (команда обработчику кода) в языке thinkScript®, отвечающая за базовые операции, выполняемые с графиками, такие как, изменение режима пересчета или установка минимального значения диаграммы до нуля. Для определения данной декларации в языке зарезервированы специальные слова, в данном случае lower, что позволяет разместить отображение данного индикатора под отображением объемов на графике, в отдельном окне. Стоит отметить, что если зарезервированное слово lower заменить на другое зарезервированное слово upper, то данный индикатор будет отображаться на самом графике, если бы индикатор использовал в своих расчетах объем, произошло бы отображение на графике объема.
input length = 14; //Количество баров, используемых для расчета среднего значения, выбрано Уайлдером именно 14, т.к. он считал 14 дней важным полуциклом, т.к. полный цикл, как полагал он, равен 28 торговым дням, независимые тестирования на различных данных показали, что оптимальное значение, показывающее наибольшую прибыль, находится в диапазоне от предложенного Уайлдером 14 дней, до 20 дней.
input averageType = AverageType.WILDERS; // тип скользящей средней по методике Дж. Уеллеса Уайлдера младшего (известный изобретатель индикатора направленного движения и RSI), как и предыдущее значение, эти параметры могут быть изменены в настройках индикатора.
plot ADX = DMI(length, averageType).ADX; //функция принимающая вводные данные, она же и является основным текстом программы, механизм расчета следующий:
ADX = SUM ((+DI - (-DI)) / (+DI + (-DI)), N) / N
где:
N — количество периодов, используемых для расчета;
SUM (..., N) — сумма за N периодов;
+DI — значение индикатора позитивного направления движения цен (positive directional index);
-DI — значение индикатора негативного направления движения цен (negative directional index).
ADX.setDefaultColor(GetColor(5)); //цвет графика отображаемого индикатором, может быть изменен в настройках.
Чем больше ADX, тем направленное движение рынка наиболее сильное. Верно и обратное, чем меньше ADX, тем движение рынка происходило менее направлено. Стоит отметить, что под понятием «направленности» понимается направление как вниз, так и вверх, из чего следует, что индикатор ADX не показывает растущий и падающий рынки, а лишь измеряет величину тренда, «умолчав» о его направление. Для индикатора является абсолютно-нормальным отчетливо расти в то время как цены падают, потому что своим подъемом он отражает увеличивающуюся силу нисходящего тренда. Из этого можно сделать вывод - назначение индикатора состоит в том, чтобы измерять силу тренда, а не его направление.
ADXR (Аverage directional movement index rating)
ADXR является "сглаженной" версией индикатора ADX
Вводные данные
declare lower;
input length = 14;
input averageType = AverageType.WILDERS;
plot ADX = DMI(length, averageType).ADX;
plot ADXR = (ADX + ADX[length - 1]) / 2;
ADX.SetDefaultColor(GetColor(5));
ADXR.SetDefaultColor(GetColor(0));
Как видно из кода – ADXR повторяет весь код индикатора ADR, добавляя лишь одну строчку, в которой индикатору ADX придается дополнительное сглаживание, самим Уайлдером, сумма ADX и ADX значение диапазона баров уменьшенное на единицу – деленная на 2, для возможности использования данного индикатора при вычислении по методу сравнения рынков, называемом Индекс выбора товаров (CSI), который также был разработан Уайлдером для нахождения акций для краткосрочной торговли с наиболее высоким потенциалом прибыльности.
ADXCrossover
Индикатор ADXCrossover является модификацией индикатора ADX, который определяет пороговое значение индикатора ADX и показывает на графике точку после пересечения которой, вероятней всего, будет наблюдаться сильное ценовое движение.
Показания данного индикатора рекомендуется использовать в качестве дополнения к существующей торговой системе для подтверждения предположений при принятии торговых решений.
Вводные данные
input length = 14;
input crossingType = {default above, below}; // определение двух возможных значений ADX пересечений выше или ниже порогового уровня
input threshold = 20; //пороговый уровень – в данном случае 20. Уайлдер при разработке индикатора ADX указал, что ADX должен расти и быть равным 25 или более, если данное значение попадает в диапазон между 20 и 25, он ввел дополнительный критерий открытия позиции — три последовательных увеличения зна- чения ADX в зоне выше 20.
input averageType = AverageType.WILDERS;
plot signal = crosses(DMI(length, averageType).ADX, threshold, crossingType == CrossingType.above); //функция crosses проверяет истинность данного выражения, ADX больше порогового значения и при его истинности продолжает программу далее
Ниже следующий код выполняется лишь частично в зависимости от того, какое значение crossing type выбрано в настройках данного индикатора, при значении above – рисуется стрелка вверх розового цвета, при значении below- бирюзового цвета стрелка вниз, что и является отображением пересечения ADX порогового значения выбранного в настройках индикатора.
signal.DefineColor("Above", GetColor(0));
signal.DefineColor("Below", GetColor(1));
signal.AssignValueColor(if crossingType == CrossingType.above then signal.color("Above") else signal.color("Below"));
signal.SetPaintingStrategy(if crossingType == CrossingType.above
then PaintingStrategy.BOOLEAN_ARROW_UP
else PaintingStrategy.BOOLEAN_ARROW_DOWN);