FXTAA English version

Day bar info: индикатор дневного диапазона для MT4 и MT5

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

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

Дневной диапазон — максимум минус минимум за сегодня — грубое число, отвечающее на острый вопрос: сколько осталось? В сравнении с тем, что пара проходит обычно, оно говорит, есть ли у пробоя запас хода или он идёт на парах.

Читаем дневной бар с любого таймфрейма

Переключать графики не нужно. Функции iHigh, iLow и iOpen принимают таймфрейм аргументом, поэтому пятиминутка спокойно читает дневной бар напрямую.

double dHigh = iHigh(Symbol(), PERIOD_D1, 0);   // 0 = сегодня, ещё формируется
double dLow  = iLow (Symbol(), PERIOD_D1, 0);
double dOpen = iOpen(Symbol(), PERIOD_D1, 0);

double rangePts = (dHigh - dLow) / Point;

Индекс 0 — это текущий незакрытый день, поэтому значения меняются у вас на глазах. Здесь так и надо: нужен живой диапазон. А вот для среднего берите только закрытые дни, начиная с индекса 1, иначе недоделанный сегодняшний бар тянет среднее вниз.

Среднее, и почему ADR здесь лучше ATR

Average True Range учитывает гэпы. Но на вопрос «сколько пара обычно проходит внутри дня» прямее отвечает простое среднее максимум-минус-минимум, которое часто называют ADR.

double AverageDailyRange(int days)
{
   double sum = 0;
   for(int i = 1; i <= days; i++)                 // с единицы: только закрытые дни
      sum += (iHigh(Symbol(), PERIOD_D1, i) - iLow(Symbol(), PERIOD_D1, i)) / Point;
   return(sum / days);
}

Двадцать дней — привычное окно: примерно торговый месяц, достаточно длинный, чтобы сгладить единичные события, и достаточно короткий, чтобы не усреднить настоящую смену режима.

Главное число: сколько диапазона осталось

На график стоит выводить именно израсходованный диапазон в процентах от среднего.

double adr     = AverageDailyRange(20);
double used    = (iHigh(Symbol(), PERIOD_D1, 0) - iLow(Symbol(), PERIOD_D1, 0)) / Point;
double pctUsed = (adr > 0) ? used / adr * 100.0 : 0;

string label = StringFormat("O %s | диапазон %.0f п. | %.0f%% от ADR",
                 DoubleToString(iOpen(Symbol(), PERIOD_D1, 0), Digits),
                 used, pctUsed);

Где показатель вводит в заблуждение

Исчерпание диапазона — не сигнал разворота. Трендовые дни регулярно доходят до 160% ADR и продолжают идти; в этом и состоит тренд. Статистика говорит, что день необычный, но не говорит, чем он закончится.

Она ещё и несимметрична по времени. Восемьдесят процентов ADR, израсходованные к открытию Лондона, и те же восемьдесят к закрытию Нью-Йорка — совершенно разные вещи: в первом случае день толком не начинался.

Дневной диапазон — это указатель уровня топлива, а не руль. Он говорит, как далеко вы можете уехать, и никогда — в какую сторону.

Практическое применение

  1. Цели. Проекция остатка ADR от текущей цены даёт реалистичную цель вместо мечтательной.
  2. Расстояние до стопа. Стоп уже десятой доли ADR снимут шумом, что бы ни говорила фигура на графике.
  3. Фильтр сессии. Если азиатская сессия уже съела 70% ADR, у лондонского пробоя, которого вы ждёте, запас хода сильно меньше обычного.