FXTAA English version

Свечи: простой индикатор волатильности для Forex

Расстояние от максимума до минимума — самая честная оценка волатильности из доступных на графике. Ей не нужны параметры, и она ничего не скрывает. Именно поэтому разобраться стоит с неё, а не с ATR.

Обновлено: 2026-09-22

Волатильность — это не направление. Она показывает, какой путь цена проходит за единицу времени, а от этого зависит, насколько широким должен быть стоп, каким может быть объём и есть ли у стратегии вообще пространство для работы.

Сырой диапазон против ATR

Сырой диапазон свечи — это High - Low. Average True Range добавляет две вещи: усреднение по N барам и учёт гэпов через максимум из трёх расстояний — текущий диапазон, от прошлого закрытия до текущего максимума и от прошлого закрытия до текущего минимума.

На форексе поправка на гэпы значит куда меньше, чем на акциях: рынок торгуется непрерывно с вечера воскресенья до вечера пятницы. Единственное место, где она существенна, — выходные, и там существенна сильно.

Сырой диапазонATR
ПараметрыНетПериод (обычно 14)
Реакция на один барМгновеннаяРазмыта усреднением
Учёт гэповНетДа
Для чего годитсяУвидеть, что только что произошлоОбъём и стопы

Минимальный индикатор диапазона

Он рисует диапазон каждого бара гистограммой и раскрашивает её по тому, превышает ли бар недавнее среднее. В этом сравнении и есть вся ценность: абсолютное число пунктов без контекста ничего не значит.

// CandleRange.mq4 — диапазон бара в сравнении с собственным средним
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 clrSteelBlue
#property indicator_color2 clrIndianRed

input int AvgPeriod = 20;

double normal[], elevated[];

int OnInit()
{
   SetIndexBuffer(0, normal);   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   SetIndexBuffer(1, elevated); SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   IndicatorShortName("Range(" + IntegerToString(AvgPeriod) + ")");
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total, const int prev_calculated,
                const datetime &time[], const double &open[],
                const double &high[], const double &low[],
                const double &close[], const long &tick_volume[],
                const long &volume[], const int &spread[])
{
   int start = MathMax(prev_calculated - 1, AvgPeriod);

   for(int i = start; i < rates_total; i++)
   {
      int bar = rates_total - 1 - i;          // индекс серии
      double range = (high[i] - low[i]) / Point;

      double sum = 0;
      for(int k = 1; k <= AvgPeriod; k++)
         sum += (high[i-k] - low[i-k]) / Point;
      double avg = sum / AvgPeriod;

      normal[bar]   = (range <= avg) ? range : EMPTY_VALUE;
      elevated[bar] = (range >  avg) ? range : EMPTY_VALUE;
   }
   return(rates_total);
}

Нормировка, чтобы числа сравнивались

Сорок пунктов на USDJPY и сорок на EURCHF — разные вещи, как и сорок в августе против сорока в октябре. Разделите текущий диапазон на среднее, и получите безразмерное отношение, сравнимое между парами и периодами.

Расчёт объёма позиции

Стандартное применение — инверсия: рискуем фиксированной суммой, волатильность задаёт расстояние до стопа, а расстояние задаёт объём. Так сумма риска остаётся постоянной, пока рынок меняется под вами.

// объём из фиксированного риска и стопа по волатильности
double riskMoney  = AccountBalance() * 0.01;          // 1% от баланса
double atrPips    = iATR(NULL, 0, 14, 1) / Point;
double stopPips   = atrPips * 1.5;                     // стоп = 1.5 x ATR
double pipValue   = MarketInfo(Symbol(), MODE_TICKVALUE);
double lots       = riskMoney / (stopPips * pipValue);

lots = MathFloor(lots / MarketInfo(Symbol(), MODE_LOTSTEP))
       * MarketInfo(Symbol(), MODE_LOTSTEP);

Обратите внимание на 1 последним аргументом iATR — это закрытый бар. С нулём читается формирующийся бар, диапазон которого растёт на глазах, и объём позиции начинает зависеть от того, в какую секунду вы нажали кнопку.

Структура сессий видна сразу

Постройте средний диапазон по часам суток, и форма рынка проявится сама: тихая азиатская сессия, расширение на открытии Лондона, максимальные диапазоны в перекрытии Лондона и Нью-Йорка, спад после.

Это самый дешёвый полезный фильтр в трейдинге. Пробойная система на азиатском диапазоне и пробойная система на открытии Лондона — не одна и та же система, даже если код идентичен.

Где заканчивается честность

Диапазон сообщает о том, что уже произошло. Прогностического содержания в нём нет: за сжатием рано или поздно следует расширение, но «рано или поздно» — это не сделка. Относитесь к нему как к измерительному прибору для расчёта объёма и фильтрации, а не как к генератору сигналов.