Меняющиеся (repainting) индикаторы на Форексе

Использование технических индикаторов на Форексе очень популярно. Зачастую это пользовательские индикаторы на платформах MetaTrader, cTrader, NinjaTrader и TradingView. Рано или поздно любой трейдер сталкивается с меняющимся индикатором (англ. repainting indicator) или, во всяком случае, слышит подобное от коллег. Что значит «меняющийся индикатор»? Об этом мы и расскажем в данной статье.

Новичкам бывает трудно понять, что значит «меняющийся» или «неменяющийся» индикатор, однако на самом деле это не так сложно. Здесь главное уметь отличить такой индикатор и понять, что именно на меняющихся индикаторах строятся многие обманные стратегии и программы.

Что представляют собой меняющиеся индикаторы?

Говоря о меняющемся индикаторе, мы подразумеваем такой индикатор, который меняет свой вид и то, что уже ранее было расположено на графике. Существует два основных вида изменения индикаторов — о них ниже.

Изменение новой свечи

Практически все технические индикаторы изменяют свое значение для текущей свечи. Это нормально, поскольку во время формирования свечи постоянно меняется цена закрытия, и если индикатор работает на основе данных о таких ценах (часто цена закрытия выступает в роли цены по умолчанию), то, соответственно, он тоже изменит свое значение. Ничего страшного здесь нет, многие даже не считают такие индикаторы «меняющимися». Чтобы избежать последствий подобных изменений, нужно лишь подождать закрытия текущей и открытия новой свечи, и уже дальше принимать в расчет значение индикатора. Есть и другой способ: изменить параметр индикатора, задав цену открытия в качестве цены по умолчанию. Для примера возьмем два вида индикатора RSI: красный рассчитывается на основании цены открытия и не меняет своего значения, синий принимает в расчет цену закрытия и постоянно меняется.

Индикатор RSI меняется, если рассчитывается на основе цены закрытия, и не меняется, если берет в расчет цену открытия

Предыдущие свечи

Некоторые индикаторы меняют значение на предыдущих свечах: это значит, что алгоритм индикатора задан так, что для расчета значения нужны будущие данные. Разумеется, торговать с помощью таких индикаторов не стоит, ведь вы не можете заглянуть в будущее, чтобы узнать его актуальное и верное значение, и подобные изменения можно однозначно назвать неудачными. К примеру, можно посмотреть, меняется известный индикатор Semafor на прошлых свечах. Если бы трейдер стал действовать на основе любого из следующих сигналов, он оказался бы в очень неприятной ситуации:

Как меняется значение индикатора Semafor при появлении новых свечей

Если же посмотреть на тот же индикатор в ретроспективе, то он будет выглядеть идеально точным:

График, отображающий прошедшие данные, где индикатор Semafor выглядит идеальным после изменения всех неверных значений

Все индикаторы меняются?

Разумеется, нет. Более того, большинство индикаторов на Форексе не меняются, вне зависимости от новых или уже сформировавшихся свечей, поскольку им не нужно обращаться к будущему, они рассчитывают свое значение на основании уже полученных или текущих данных.

Почему индикаторы меняются?

Если индикатор меняет свое значение намеренно, то это, скорее всего, «обманка» от его разработчика, который пытается убедить пользователей в точности и уместности этого индикатора. Такой инструмент покажет идеальные результаты на историческом графике, но будет совершенно бесполезен (или даже вреден) в настоящем трейдинге. Дело в том, что на историческом графике индикатор уже изменил все свои значения на «нужные», и мы не видим, что он показывал в момент формирования соответствующей цены.

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

Бывает и так, что индикатор делается меняющимся специально, но без злого умысла, а, напротив, для того, чтобы упростить процесс анализа графика или "подсветить" определенные особенности ценового движения. Однако в этом случае разработчик индикатора обязан открыто объявить о том, что тот меняет свое значение, иначе это будет выглядеть как мошенничество.

Однако индикатор может меняться и вовсе случайно: например, когда его значение "заточено" на расчет цены нового бара (свечи), а не предыдущего. Такую ошибку часто совершают разработчики-новички. Свои разработки нужно тщательно тестировать, чтобы потом не получить несправедливых обвинений в мошенничестве.

Наконец, среди индикаторов, меняющих последний бар в зависимости от закрытия, максимума или минимума (см. пример с RSI выше), встречаются и такие, где это необходимо, потому что иначе просто нельзя. Хотите пользоваться таким индикатором — не проблема, только ориентируйтесь лишь на уже сформированные свечи.

Индикаторы на нескольких таймфреймах

Говоря о меняющихся индикаторах, часто забывают о таких, которые объединяют несколько таймфреймов (как правило, более длительных). Так, например, можно настроить скользящую среднюю, чтобы она отображалась на часовом графике, при этом беря значения с дневного.

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

Возьмем для примера график (см. ниже), где скользящая средняя, взятая с дневного таймфрейма, расположена на часовом. Как видите, значение средней появляется уже при первой сформированной за этот день свече (красная стрелка), тогда как в реальных условиях оно не могло бы появиться раньше первой свечи следующего дня (зеленая стрелка).

Значения скользящей средней с более крупного таймфрейма появляются до того, как они становятся известны

В общем, при торговле с помощью подобных индикаторов нужно обязательно иметь в виду, что они меняются и никогда не судить об их эффективности по графикам, где все события уже произошли.

Как узнать, что индикатор меняется?

На платформах MT4 или MT5 проще всего это сделать через Тестер стратегий, который наглядно покажет, меняется индикатор или нет. Ниже приведем пошаговую инструкцию:

  1. Откройте Тестер стратегий, нажав Ctrl+R на клавиатуре или перейдя в меню Вид->Тестер стратегий.
Как открыть Тестер стратегий в меню MetaTrader 4
  1. Перейдите на вкладку Настройки, чтобы задать параметры проверки индикатора. Переключитесь с меню Советник на Индикатор. Режим Просмотр включится автоматически. Выберите индикатор из списка и установите таймфрейм на М1 (1 мин); если индикатор не работает на этом таймфрейме, выберите минимальный доступный таймфрейм. Переключитесь с меню Модель на Каждый тик. Наконец, измените остальные настройки так, как посчитаете нужным или в том случае, если индикатор требует особых настроек.
Настройка Тестер стратегий для проверки изменяемости индикатора
  1. Проведите тест, отрегулировав скорость, чтобы было видно, меняются ли сигналы пи появлении новых свечей.
Настройка скорости Тестера стратегий при проверке изменяемости индикатора «Центр гравитации»

Пошаговая инструкция также приводится в следующем видеоролике (на английском языке):

Как видите, проверить, меняется индикатор или нет, несложно.

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

Как узнать, что индикатор меняется, если проверка на исторических данных невозможна?

Если демо-версии для проверки нет, для начала стоит просто просить об изменчивости индикатора у разработчика. В конце концов, возможно, у индикатора просто другая цель — допустим, отображать общую картину, а не напрямую давать сигналы. Если же разработчик настаивает, что индикатор не меняется, а при этом на скриншотах видно, насколько идеальные он дает сигналы (слишком идеальные), то стоит насторожиться.

Меняющиеся индикаторы бесполезны?

Не все. Например, выше мы разобрали пример, где изменение из-за последней свечи никак не мешает индикатору предоставлять правильные сведения для технического анализа. Даже индикаторы, меняющиеся сообразно уже сформированным свечам, могут быть вполне полезны, и отвергать их лишь потому, что они меняются, — не всегда правильное решение. При этом, конечно, то, что они меняются, все равно нужно держать в голове.

Примеры удачных меняющихся индикаторов

Зигзаг

Одним из самых популярных индикаторов на платформе MetaTrader является зигзаг. Это очень полезный индикатор, но надо иметь в виду, что он меняется, поэтому применять его нужно только для построения областей поддержки и сопротивления и трендовых линий.

Индикатор зигзаг меняет вершину, перемещая ее от предыдущих свечей вправо

Фрактал

Индикатор фрактал ("фракталы Билла Уильямса") также очень популярен, при этом он доступен в MT4 и MT5 по умолчанию. Фракталы строятся по очень простым правилам: фрактал вверх образуется при наличии максимума, окруженного двумя более низкими максимумами с каждой стороны, фрактал вниз — при окружении минимума более высокими минимумами, также по два с каждой стороны. Таким образом, для отображения одной стрелки фрактала нужно 5 свечей, причем две их них на момент появления фрактала еще не сформированы. Понятно, что при таких обстоятельствах индикатор может поменяться. Следовательно, необходимо дождаться формирования всех свечей, на которые опирается фрактал, и только потом рассматривать его сигналы.

Индикатор фрактал меняет стрелки при формировании новых свечей

Зигзаг и фрактал не должны вводить трейдера в заблуждение, несмотря на свою изменчивость; их роль — указание на уровни поддержки и сопротивления.

Semafor

Мы уже говорили об индикаторе Semafor, когда речь шла об изменении сигналов на основе предыдущих свечей. Semafor — это пользовательский индикатор, однако он доступен на многих платформах и является достаточно полезным. Несмотря на свою обманчивую «идеальность», он все же применяется множеством трейдеров для анализа предыдущих значений курса и поиска важных уровней. Это подтверждает и его популярность на различных трейдерских форумах. Ниже представлен график, где линии поддержки и сопротивления размечены на основе данных индикатора Semafor:

Разметка основных и вторичных линий поддержки и сопротивления с помощью индикатора Semafor

Центр гравитации

Индикатор «центр гравитации» был взят нами в качестве примера, когда мы рассматривали проверку на изменчивость с помощью Тестера стратегий. Он представляет собой разновидность канала линейной регрессии и очень полезен в двух случаях: для обнаружения направления тренда и для измерения волатильности определенного числа последних свечей. Разумеется, здесь тоже необходимо помнить об изменчивости индикатора, поэтому использовать его для получения прямых сигналов на покупку или продажу нельзя. Ниже на графике представлено четкое движение тренда вверх, период относительно низкой волатильности (между синими линиями), период высокой волатильности (между второй синей и зеленой линиями) и текущий период «нормальной» волатильности.

Индикатор «центр гравитации» указывает на направление тренда и волатильность относительно общей силы тренда

Как исправить меняющийся индикатор

Способы исправить изменчивость индикатора действительно существуют.

Для этого, однако, нужно владеть языком программирования MQL, поскольку данная операция предполагает работу с программным кодом. Единого метода для работы со всеми меняющимися индикаторами при этом нет.

Индикаторы, рассчитывающие сигналы на основе закрытия, максимума или минимума, можно исправить, запрограммировав их на выдачу результата только после закрытия текущей свечи.

В тех индикаторах, которые работают на базе еще не сформированных свечей, нужно убрать соответствующую часть кода. Однако после такой операции, к сожалению, индикатор может стать совершенно бесполезным, т.к. он начнет выдавать множество ложных сигналов, которые ранее «сглаживались» его изменчивостью.

Так или иначе, для подобных операций нужно или самому быть программистом, или нанять такового. При этом если у вас нет доступа к исходному коду (файл .mq4 или .mq5), а есть только уже скомпилированный индикатор (файл .ex4 или .ex5), то исправить что-либо у вас точно не получится.

Другие платформы

Вне всяких сомнений, платформа MetaTrader является самой популярной в «частном секторе» Форекс-трейдинга, однако проблема меняющихся индикаторов, продающихся разработчиками-мошенниками, актуальна и для других платформ. К счастью, мы уже уяснили, что не все меняющиеся индикаторы бесполезны, надо просто знать о том, что он меняется, и применять его соответственно.

cTrader

На cTrader тоже есть свои меняющиеся индикаторы — в этом плане индикаторы на базе cAlgo мало чем отличаются от MQL. Основанные на цене закрытия индикаторы также меняются в зависимости от значения последней свечи, неудачно или специально неправильно запрограммированные могут меняться и на основе предыдущих свечей. Проблема в том, что, в отличие от MetaTrader, в cTrader не предусмотрено тестирование индикаторов на исторических данных, поэтому проверить, меняется индикатор или нет, не так легко. Наиболее простой способ это сделать — посмотреть на его поведение на минимальных таймфреймах. Если вы владеете языком C#, можно также проанализировать исходный код (разумеется, если к нему есть доступ).

Ниже представлен пример поведения индикатора «зигзаг» на cTrader на тиковом графике:

Индикатор зигзаг меняется на тиковом графике cTrader

NinjaTrader

Не обходит стороной проблема меняющихся индикаторов и платформу NinjaTrader, так что если вы торгуете на этой платформе, вам тоже надо быть начеку. К счастью, здесь есть способ проверить изменчивость индикатора — функция Market Replay, которая позволяет протестировать любой индикатор на исторических данных.

Ниже приведем пример работы функции Market Replay на примере фракталов (заметьте, что сигналы появляются только при наличии двух «будущих» свечей).

Меняющийся фрактал в инструменте Market Replay от NinjaTrader

TradingView

Платформа TradingView используется для анализа графиков очень многими трейдерами, включая тех, кто торгует на Форексе и рынке криптовалют. И здесь мы наблюдаем все то же самое: индикаторы меняют свое значение и сигналы, когда формируются новые свечи. Проверить изменчивость индикаторов можно на секундном графике (см. пример с фракталами ниже) или с помощью функции Replay («перемотка»), которая работает на любом таймфрейме.

«Быстрая перемотка» фракталов в TradingView для проверки их изменчивости

Еще одна проблема в отношении меняющихся индикаторов на TradingView заключается в использовании данных более крупных таймфреймов, когда данные более «крупной» свечи применяются для прогнозирования максимального и минимального значений курсов для будущего периода. Это, однако, может сильно ввести трейдера в заблуждение.

Исправить подобное поведение, встречающееся в сценариях стратегий TradingView, можно с помощью изменения кода сценария, запрограммировав его так, чтобы сценарий обращался к более крупному таймфрейму только после окончательного формирования цикла меньшего таймфрейма (т.е., например, мы можем обратиться к графику H1, когда у нас уже есть 60 свечей минутного графика, или к графику D1, когда есть 24 свечи часового).

Технически для этого нужно изменить параметр lookahead функции security на barmerge.lookahead_on или barmerge.lookahead_off.

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

Резюме

При работе с индикаторами для определения курса заключения сделки и ее закрытия следует использовать только те индикаторы, которые не меняются, в противном случае вас ждут убыток и разочарование. Проверить перед покупкой, меняется индикатор или нет, можно с помощью инструмента Strategy Tester. Также следует требовать полного разъяснения от разработчика индикатора: не дайте себя обмануть красиво выглядящим линиям и точнейшим результатам на исторических данных.

Если меняющийся индикатор нормальный, это будет сразу видно. Изменение неудачного индикатора будут обязательно скрывать, и именно таким образом неопытные трейдеры будут нести убытки.