Читая форумы и статьи по программированию, я заметил, что на валютном рынке некоторые алгоритмы и формулы настолько прочно западают в сердца и умы трейдеров, что люди к ним неоднократно возвращаются и пытаются как-то улучшить. Именно такой парадокс наблюдается и с индикаторами SSA, которые сегодня встречаются в самых разных ипостасях.
Чтобы никого зря не обнадёживать и не вынуждать читать теоретические выкладки, хочу сразу сказать, что все «оригинальные» индикаторы SSA, размещённые в базе данных MQL5, являются по своей сути информационным мусором. Выглядят они действительно красиво, но их разметка перерисовывается.
По этой причине я сначала рассмотрю некоторые оригинальные версии экспертов, а затем выложу индикатор Singular Spectrum Analysis без перерисовки, чтобы каждый мог оценить истинную эффективность подобного анализа.
Скачать же все алгоритмы SSA для МТ4 можно здесь:
Сокращённая аббревиатура SSA произошла от длинного термина Singular Spectrum Analysis, что в переводе значит «Анализ сингулярного спектра». Как нетрудно догадаться, этот метод имеет прямое отношение к сложным математическим формулам, никак не связанным с валютным рынком, поэтому уже по этой причине к нему нужно относиться с долей здорового скептицизма.
Основная идея анализа сингулярного спектра состоит в разложении ряда динамики на высокочастотные и низкочастотные составляющие. В реальном секторе этот подход хорошо себя зарекомендовал при выявлении сезонных циклов, а на рынках трейдеры пытаются использовать его для подавления шума, т.е. выделения трендовой компоненты.
Но, как это обычно и бывает при изучении временных рядов, выше головы прыгнуть не удалось. Да, индикатор SSA способен распознавать тренды, но его оценки запаздывают относительно реальной тенденции.
Иначе говоря, если в текущий момент времени разложить ценовой ряд на компоненты и убрать высокочастотную составляющую, мы просто увидим, в каком направлении развивался тренд последние N свечей.
В общем, выводы получаются примерно такие же, как при использовании скользящих средних (констатация свершившегося факта). Однако разработчики индикаторов SSA подумали и решили, что столь красивую и насыщенную специальной терминологией гипотезу обязательно нужно «натянуть» на рынок, даже если она с ним плохо согласуется. В результате на свет появились алгоритмы, якобы предсказывающие ценовые развороты.
Простейший из них называется индикатор SSA Normalized. Он представлен в виде плавного осциллятора, значения которого обычно колеблются в диапазоне от -0,6 до +0,6. На первый взгляд, картинка смотрится красиво, ведь линия меняет направление как раз перед реальным разворотом тренда.
Но в реальности он сильно перерисовывается, да так, что открывать позиции по излому линии вообще невозможно – слишком уж много образуется ложных точек входа, т.е. сначала сигнал вроде бы есть, а стоит цене пройти несколько свечей, как разворотом уже и не пахнет.
Немного позже появился модифицированный вариант осциллятора Traders_Dynamic CB SSA Norm Index AA 1-01 (далее просто Traders_Dynamic). В отличие от SSA Normalized, он уже не так сильно «рисует» и более гибок в настройке.
Важная деталь – чтобы алгоритмы SSA работали, необходимо установить библиотеку libSSA.dll. Для этого заходим в MetaTrader4, выполняем команду «Файл - Открыть каталог данных» и в раскрывшейся папке ищем директорию «MQL4 – Libraries». Сюда и копируем упомянутый файл (не исключено, что он там уже будет, так как в некоторых сборках программы он встречается по умолчанию).
По задумке авторов индикатора сделка на покупку заключается в тот момент, когда основная линия пересекает пунктирную снизу вверх, а ордер на продажу открывается по обратному сигналу.
Некоторые трейдеры ещё используют индикаторы SSA для поиска перекупленности/перепроданности. Именно для этой цели разработчики добавили в разметку Traders_Dynamic сигнальные горизонтальные уровни.
Если бы этот осциллятор реально работал так, как выглядит его историческая разметка, можно было бы считать, что «Грааль» найден, но перерисовка и здесь всё испортила. Да, она не такая сильная, как в оригинальном эксперте SSA, но проблем от этого меньше не стало.
По этой причине в код Traders_Dynamic были внесены поправки, фиксирующие значение каждого его бара. К сожалению, данная модификация не работает на истории, поэтому, чтобы получить объективную картину, нужно либо ставить его на график и набирать статистику (т.е. все значения, рассчитанные в реальном времени, будут правильными), либо можно просто прогнать его в тестере, что мы и сделаем.
На графике ниже в первом окне представлен модифицированный Traders_Dynamic, полученный в тестере, который в процессе работы не перерисовывается. А ниже расположен обычный индикатор SSA, установленный стандартным способом.
Полагаю, разница видна невооружённым глазом – сигналы правильного индикатора SSA запаздывают относительно «рисовальщика» как минимум на 5 свечей. Это значит, что если открыть сделку по обычной разметке, основанной на анализе сингулярного спектра, есть шанс того, что в ближайшие 5 баров этот сигнал просто исчезнет из истории, а трейдер останется с убыточной контртрендовой позицией.
В сухом остатке мы получаем не самую радужную картину. Если говорить кратко, то остаётся два варианта, имеющих под собой практическую ценность.
Первый – можно использовать модифицированный осциллятор, но в этом случае придётся смириться с тем, что он будет запаздывать точно так, как и другие индикаторы.
И второй вариант – сосредоточиться только на анализе перекупленности/перепроданности. Пожалуй, это единственное направление, где перерисовка не оказывает существенного влияния на результат.