Для вычисления TR используется следующее выражение:
TRt = max{(D1), (D2), (D3)} = max{(Ht - Lt), (Ht – Ct-1), (Ct-1 – Lt)},
где Ht – максимальная цена за последний период (бар), Lt – минимальная цена за последний период (бар), Ct-1 – цена закрытия предыдущего периода (бара).
Средний истинный диапазон – показывает средний размер бара за выбранный тайм-фрейм, вычисляется как усредненное значение от истинного диапазона (TR)
ATRt = ATRt-1*(N-1)/N + TRt/N,
где ATRt и ATRt-1 – значение индикатора на последнем и предыдущем периоде (баре) соответственно, N – период усреднения. Часто при расчете индикатора, в отличии от авторского варианта, применяется простое или экспоненциальное сглаживание.
Индикатор в такой интерпретации более пригоден только для дневного тайм-фрейма, т.к. при его использовании внутри дня и при наличии гэпа, индикатор будет неинформативен приблизительно 3*N первых баров.
Типовые параметры
Значение периода усреднения выбирается N = 14 или Т = 7 для дневного тайм-фрейма.
Индикатор ATR в основном используется как вспомогательный для оценки текущей волатильности или среднего движения на рынке за выбранный тайм-фрейм. Применяется в некоторых случаях при вычислении уровня стопа.
Сигналы
- Если цена отклоняется от экстремума на M значений индикатора ATR в противоположную сторону от направления предыдущего движения, то позиция закрывается по стопу.
Автор: Уэллс Уайлдер (Welles Wilder).
Первоисточник: Welles Wilder. New Concepts in Technical Trading Systems. 1978.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "ATR";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 10);
AddSeries("ATR", DrawAs.Line, Color.LightBlue);
}
function Evaluate()
{
// AlfaDirect. 2014. OX
// Средний истинный диапазон (ATR - Average True Range).
// Автор - Уэллс Уайлдер (Welles Wilder).
var TR = 0.0;
if (CurrentIndex < 1)
ATR = Input.High[0]-Input.Low[0];
else
{
TR = ( Math.Max(Input.High[0] , Input.Close[-1]) - Math.Min(Input.Low[0], Input.Close[-1]));
ATR = ((Period-1.0)*ATR[-1] + TR)/Period;
}
}
Индикатор является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.