Скользящая средняя по другому индикатору в MT4
Сгладить осциллятор скользящей средней — операция в два клика, если знать, что означает каждый пункт списка «Применить к». Почти вся путаница происходит из одного неудачно названного пункта.
По умолчанию скользящая считается по цене. MT4 умеет считать её и по выходу другого индикатора — так получают сигнальную линию на RSI, сглаженный CCI или среднее от ATR.
Порядок действий
- Сначала повесьте базовый индикатор — например, RSI. Он откроется в отдельном подокне.
- Из «Навигатора» перетащите Moving Average в это подокно, а не на ценовой график. Промах мимо окна — самая частая ошибка, и предупреждения не будет.
- В открывшемся диалоге перейдите на вкладку «Параметры» и найдите внизу «Применить к».
- Выберите «Данные предыдущего индикатора».
Теперь скользящая рисуется внутри окна RSI и сглаживает RSI, а не цену.
Чем отличаются два индикаторных пункта
В списке есть и «Данные первого индикатора», и «Данные предыдущего индикатора». Это не синонимы, и разница проявляется, как только в подокне оказывается больше двух индикаторов.
| Пункт | Ссылается на |
|---|---|
| Данные первого индикатора | Индикатор, добавленный в подокно первым |
| Данные предыдущего индикатора | Индикатор, добавленный непосредственно перед этим |
С RSI и одной скользящей обе настройки дают одинаковый результат. Но добавьте вторую скользящую, желая сгладить первую, выберите «данные первого» — и молча получите ещё одно среднее от сырого RSI. Две линии, выглядящие правдоподобно и означающие не то, что вы задумали.
Порядок позиционный, а не по имени. Удалите базовый индикатор и добавьте заново — он станет в подокне *последним*, и все ссылки начнут указывать не туда. После любого удаления пересобирайте всю конструкцию.
То же самое на MQL4
Программно есть два пути. iMAOnArray усредняет любой массив, который вы заполнили сами, — это гибкий вариант:
double rsiBuf[];
ArrayResize(rsiBuf, 200);
ArraySetAsSeries(rsiBuf, true);
for(int i = 0; i < 200; i++)
rsiBuf[i] = iRSI(NULL, 0, 14, PRICE_CLOSE, i);
// сглаживание RSI по 9 периодам, текущий бар
double rsiSmoothed = iMAOnArray(rsiBuf, 0, 9, 0, MODE_SMA, 0);
Для тех немногих встроенных индикаторов, у которых есть параметр applied_price, существует и путь через константы 0–6, но iMAOnArray понятнее и работает в том числе с пользовательскими индикаторами.
Где это действительно полезно
- Сигнальная линия на RSI. Пересечения RSI со своей средней шумят меньше, чем пересечения фиксированных уровней 30/70, и подстраиваются под инструмент.
- Сглаживание ATR для расчёта объёма, чтобы лот не прыгал после одного широкого бара.
- Замедление быстрого осциллятора вроде стохастика на младших таймфреймах, где сырой выход пересекает границы постоянно.
Цена каждого слоя
Каждая ступень сглаживания добавляет запаздывание. RSI(14) уже запаздывает; среднее от него по 9 периодам запаздывает сильнее, и связка легко оказывается медленнее обычной скользящей по цене — при этом её гораздо труднее понимать.
Прежде чем добавлять слой, проверьте, не даст ли того же эффекта больший период базового индикатора: одна движущаяся часть вместо двух. Обычно даёт.