English Deutsch 日本語
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 69): Использование паттернов SAR и RVI

Возможности Мастера MQL5, которые вам нужно знать (Часть 69): Использование паттернов SAR и RVI

MetaTrader 5Трейдинг |
263 0
Stephen Njuki
Stephen Njuki

Введение

В этой серии мы рассмотрим параболический индикатор Stop-And-Reverse (SAR) и осциллятор индекс относительной бодрости (RVI). На этот раз пара сочетает выявление трендов с отслеживанием импульса. Как и в предыдущих статьях, мы рассматриваем 10 возможных сигнальных паттернов, которые могут быть сгенерированы путем комбинирования этих двух индикаторов, и тестируем их в созданном с помощью Мастера советнике. Итак, давайте рассмотрим определения этих двух индикаторов.

Оптимизация и тестирование проводились для символа GBPCHF за 2023 год на 4-часовом таймфрейме. Мы тестируем по одному паттерну за раз. Поскольку мы используем встроенный параметр m_patterns_used в MQL5, нам необходимо реализовать собственную карту с входным параметром PatternsUsed. Это целочисленное значение, которое служит битовой картой для комбинации паттернов, используемых в любой момент времени. В нашем случае, однако, мы используем только один паттерн за раз. Причины были изложены в предыдущих статьях. Наши паттерны индексируются от 0 до 9, и чтобы получить целочисленное значение, которое однозначно соответствует определенному паттерну, мы просто берем 2 в степени индекса паттерна. Если мы используем паттерн 0, то получаем 2 в степени 0, что дает нам 1. Если индекс паттерна равен 4, то используемое значение карты будет равно 2 в степени 4, что дает нам 16. И так далее.

Форвард-тест проводится за 2025 год, что дает нам общий период с 01.01.2023 по 01.01.2025. Этот период явно ограничен для тех, кто рассматривает возможность дальнейшего развития идеи, поскольку тестирование в идеале следует проводить на разных типах рынков, которые, как правило, охватывают несколько лет, если не десятилетий.


Параболический SAR

Индикатор был разработан для выявления трендов, а также потенциальных точек разворота. Для отображения тренда на графике отображаются точки выше или ниже цены. Точечная диаграмма ниже цены будет указывать на бычий тренд, а выше — на медвежий. Это может обеспечить дополнительное преимущество в виде установки разумного скользящего стоп-лосса в стратегиях следования за трендом. В стратегиях следования за трендом этот индикатор будет динамически корректироваться, что, вполне ожидаемо, говорит о том, что он лучше подходит для рынков с трендовым движением. Его формула состоит из двух частей. Для верхнего и нижнего буферов. Верхний буфер имеет следующий вид:

Нижний буфер определяется следующим образом:

где:

  • SARn — это значение SAR (Stop and Reverse) за текущий период,
  • SARn+1 — это значение SAR на следующий период (прогнозируемое значение SAR),
  • AF — это коэффициент ускорения, который начинается с 0,02 и увеличивается на 0,02 при каждом достижении нового значения EP, до максимального значения 0,20.
  • EP — это экстремальная точка, самая высокая точка максимума (в восходящем тренде) или самая низкая точка минимума (в нисходящем тренде), зафиксированные на данный момент.
  • EP−SARn​ или SARn​−EP — это расстояние между текущим значением SAR и экстремальной ценовой точкой, используемое для ускорения движения SAR.

Логика здесь такова: если цена пересекает уровень SAR при развороте тренда, она возвращается к противоположной экстремальной точке. Затем цикл продолжится, при этом коэффициент ускорения будет увеличиваться с каждым последующим подтверждением тренда, пока не достигнет своего заданного предела, который обычно составляет 0,2.

Индикатор отслеживает динамику рынка, сравнивая цену закрытия с ценовым диапазоном за определенный период. Рост цен указывает на бычий импульс, когда цена закрытия находится вблизи максимумов, и, наоборот, на медвежий импульс, если она находится ближе к минимумам. Кроме того, он использует сигнальную линию, представляющую собой сглаженную линию RVI, для определения точек поворота в RVI. Пересечение этой сигнальной линии снизу вверх будет сигнализировать о бычьем импульсе, а пересечение сверху вниз — о медвежьем импульсе. 

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


с:



где:

  • RVI - индекс относительной бодрости в момент времени t,
  • Closet - цена закрытия бара или свечи в момент времени t,
  • Opent - цена открытия бара в момент времени t,
  • Hight - максимальная цена в момент времени t,
  • Lowt - минимальная цена бара в момент времени t,
  • Numeratort - разница между ценой закрытия и ценой открытия (импульс),
  • Denominatort​ - разница между максимальной и минимальной ценой (диапазон колебаний),
  • SAM4 — это симметричное взвешенное скользящее среднее с использованием весов [1, 2, 2, 1].

Эта довольно педантичная формула, основанная на базовых принципах, которую мы не адаптируем строго для данной статьи, но приводим здесь для полноты картины в качестве введения в индикатор. Логика формулы заключается в вычислении разницы между ценой закрытия и ценой открытия, чтобы оценить текущую динамику цены по сравнению с преобладающим ценовым диапазоном. Сигнальная линия сглаживает помехи RVI, уменьшая шум и обеспечивая более четкий сигнал. После ознакомления с индикатором мы можем перейти к рассмотрению сигнальных паттернов.


Разворот SAR с пересечением RVI

Первый паттерн позволяет определить потенциальные развороты тренда, используя пересечение SAR с нулевой линией RVI. Первый индикатор часто указывает на изменение ценового тренда, а второй служит подтверждением направления импульса. По сути, это объединяет движение цены от максимума до минимума с следованием SAR за трендом и сигналами импульса по алгоритму RVI.

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

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && 0.0 > RVI(X() + 1) && RVI(X()) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && 0.0 < RVI(X() + 1) && RVI(X()) < 0.0)
   {  return(true);
   }
   return(false);
}

Логика нисходящего движения основана на предположении, что минимум предыдущего бара находится выше SAR в восходящем тренде, после чего происходит разворот, в результате которого текущий максимум оказывается ниже SAR, а RVI пересекает нулевую линию и опускается ниже нее. Паттерн чувствителен к таймфрейму и, пожалуй, лучше всего работает на средних таймфреймах от 1 до 4 часов, где он менее подвержен влиянию шума меньших временных интервалов и не имеет таких сильных задержек, как в крупных. Его полезность заключается в том, что он представляет собой гибрид между паттерном разворота тренда и паттерном прорыва, оказываясь эффективным при прорывах диапазона или волатильности рыночных переходов.

При использовании паттерна рекомендуется фильтровать тренд с учетом контекста. Торговые операции должны соответствовать макроэкономической ситуации. Для избежания совершения сделок на боковых рынках можно использовать фильтр волатильности с индикатором STD-DEV. Избегать сделок в часы выхода новостей можно также, используя фильтр по времени выхода новостей. Наклон RVI — еще один фильтр, который можно использовать для усиления паттерна 0 с целью получения более чистых сигналов. Использование SAR подразумевает необходимость управления стоп-лоссами, поскольку уровень SAR может служить ориентиром. Однако можно также рассмотреть стоп-лоссы на основе ATR, поскольку SAR и RVI, как правило, слишком реактивны. В целом, следует рассмотреть возможность дополнения этого сигнального паттерна другим. Мастер MQL5 легко позволяет это сделать.

Возможные недостатки нашей реализации связаны с реактивностью SAR. Индикатор сильно запаздывает при быстрых разворотах рынка или ложных прорывах, и может генерировать сигналы со значительной задержкой. Фильтр по объему или волатильности для дополнительного подтверждения отсутствует, поскольку рынки с низкой активностью переполнены ложными сигналами, а пересечение нулевой отметки RVI может быть ненадежным сигналом на рынках с боковым движением. Наши пороговые значения для входа также довольно строгие, поскольку в них отсутствует допустимая погрешность или запас прочности (no, <= или >=).

Возможные способы устранения этих недостатков отчасти просты: для стандартного отклонения от нормы можно проверить, превышает ли текущее стандартное отклонение оптимизируемый пороговый уровень. Чтобы последнее изменение величины RVI сигнализировало о достаточном уровне импульса, можно также добавить фильтр импульса, отслеживающий изменения RVI. Еще одно потенциальное улучшение - ATR для динамических стоп-уровней. Тестирование паттерна на GBPCHF с 01.01.2023 по 01.01.2025 дает нам следующий результат. Паттерн прошел форвард-тест:

r0


Поддержка SAR и трендовый RVI

Второй паттерн получает сигнал на покупку, когда минимум предыдущей свечи находится выше SAR, а RVI демонстрирует бычий импульс, при этом текущее значение выше предыдущего. Реализация на MQL5 выглядит так:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > RVI(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < RVI(X() + 1))
   {  return(true);
   }
   return(false);
}

Сигнал на продажу возникает, когда максимум последнего бара ниже SAR, а RVI указывает на медвежий импульс, при этом текущий RVI ниже предыдущего. Эта взаимодополняющая система направлена на то, чтобы выявлять развороты, обусловленные импульсом, на ранней стадии. Этот паттерн идеально подходит для торговли на разворотах или прорывах импульса, особенно на трендовых или волатильных рынках, где реакция SAR может быть довольно сильной.

Наиболее оптимально использовать этот конкретный паттерн на более длительных таймфреймах, как минимум, на часовом. Это связано с реактивным характером сигнала, который может приводить к множеству ложных открытий на коротких таймфреймах. Достоверность сигналов импульса подтверждается торговым объемом, например таким индикатором, как On-Balance-Volume. Для дополнительного подтверждения также могут использоваться STD-DEV и ATR. Еще одним возможным фильтром для этой модели является фильтр на основе свечей, например, бычье или медвежье поглощение, в зависимости от ситуации. Рекомендуется избегать выхода новостей при работе с паттерном SAR, учитывая его реактивный характер, а стоп-лосс и тейк-профит также, как правило, хорошо работают с этим паттерном, особенно при дополнении с ATR. Результаты тестирования паттерна. Паттерн не прошел форвард-тестирование:

r1

c1


Прорыв SAR с дивергенцией RVI

Наш третий паттерн сочетает в себе SAR и RVI с целью выявления ранних признаков разворота или раннего подтверждения тренда. Здесь ключевое значение имеет относительное положение цены по отношению к индексу SAR, и необходимым условием является пересечение импульса RVI. Сигналом к покупке является ситуация, когда максимум находится ниже или равен уровню SAR, за которым следует падение или разворот, когда уровень оказывается ниже минимума, что указывает на бычий разворот, а также рост RVI, способствующий усилению импульса. Цена закрытия также может немного снизиться, что может указывать на медвежью ловушку или на финальное падение перед неминуемым разворотом. В MQL5 паттерн реализуется следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI(X()) > RVI(X() + 1) && Close(X()) < Close(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI(X()) < RVI(X() + 1) && Close(X()) > Close(X() + 1))
   {  return(true);
   }
   return(false);
}

Характеристики сигнала на продажу включают в себя предыдущий минимум, который был выше или равен SAR, за которым последовал рост SAR до уровня выше максимума текущей свечи, при этом снижение RVI свидетельствует об уменьшении импульса. В этой ситуации цена закрытия также может немного вырасти, создав потенциальную ловушку для быков или точку истощения. Этот паттерн представляет собой гибридный сигнал разворота/импульса. Индекс SAR служит индикатором разворота тренда, а индекс RVI отражает силу внутреннего импульса. Дополнение в виде тщательного сравнения цен повышает достоверность анализа ценового движения.

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

Наиболее оптимальным способом работы будет применение подтверждения на нескольких таймфреймах. Этослужит своего рода защитой, учитывая резкие колебания цен на более коротких таймфреймах. Желательно подтверждение на более крупном таймфрейме. Ещё один вариант — использовать его в сочетании с фильтром волатильности. В этом случае необходим индикатор стандартного отклонения STD-DEV или ATR, чтобы подтвердить, достаточно ли места для дальнейшего движения при развороте тренда. Паттерн не следует применять при устойчивых трендах. При тренде многие коррекции могут быть интерпретированы как развороты. Проблему могут смягчить дополнительные фильтры, такие как ADX или скользящие средние. 

В рамках управления рисками при таком подходе также может потребоваться установить жесткие стоп-лоссы. Их можно разместить немного за пределами SAR, чтобы соблюсти логику разворота. В целом, целевыми уровнями могут быть уровни поддержки/сопротивления или значения R, кратные, скажем, 1,5. В идеале, тестирование стратегий на исторических данных должно проводиться с учетом проскальзывания и спредов брокера, при этом предпочтение отдается небольшим таймфреймам. Важно убедиться, что паттерн устойчив в реальных условиях исполнения, особенно при внутридневном торговле. Результаты тестирования третьего паттерна, с настройками/условиями, аналогичными уже упомянутым вариантам, дают нам следующий отчет. Паттерн не прошел форвард-тестирование:

r2

c2


Продолжение тренда SAR и разрыв RVI до нуля

Четвертый паттерн — сигнал следования за трендом, подтвержденный импульсом. В нем используется соотношение цены и SAR для определения позиционного смещения. Значение RVI относительно нулевой отметки также служит подтверждением типа импульса, будь то медвежий или бычий. Сигналом к покупке является ситуация, когда минимум предыдущего бара находится выше SAR, что указывает на отставание SAR от цены, демонстрируя бычий тренд. Затем образуется минимум текущего бара, который по-прежнему находится выше уровня SAR, что подтверждает сохранение тренда. Значение RVI для текущего и предыдущего бара должно быть выше нулевой отметки, что также является признаком устойчивого импульса. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > 0.0 && RVI(X() + 1) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < 0.0 && RVI(X() + 1) < 0.0)
   {  return(true);
   }
   return(false);
}

Аналогичным образом, условия для продажи предполагают, что предыдущий максимум будет ниже SAR, что является признаком медвежьего тренда. Кроме того, текущий максимум остается ниже уровня SAR, что указывает на сохранение тренда. Для подтверждения отрицательного импульса, показатель RVI текущего и предыдущего периодов также должен быть ниже нуля. Этот тип паттерна является сигналом подтверждения тренда. Это не разворотный паттерн, как в случае с паттерном 2, который отражает поворотные точки, и паттерном 3, который требует, чтобы импульс и цена совпадали с SAR. Идеальным рыночным контекстом для этой модели были бы трендовые или прорывные рынки, особенно после крупных коррекций. При работе с паттерном крайне важно избегать резких колебаний, следя за тем, чтобы направление RVI оставалось тем же, что и у двух последних полос.

В сценариях использования, связанных с продолжением тренда, паттерн применяется только когда уже наблюдается предыдущий тренд. Для подтверждения тренда можно также использовать фильтры, например, значение ADX выше 25 или наклон скользящей средней за более длительный период. Для более точного определения момента входа в систему можно использовать фильтры сжатия/прорыва волатильности, такие как полосы Боллинджера или низкий STD-DEV. Для правильного определения направления можно использовать комбинацию правил размещения стопов чуть ниже уровня SAR для покупок или чуть выше для продаж. Сам индикатор SAR также может служить динамическим трейлинг-стопом после входа.

Паттерн наиболее эффективен на часовом таймфрейме и выше. Тренды на таких таймфреймах, как правило, более стабильны. Следует избегать таймфреймов в 1 и 5 минут, за исключением случаев, когда они сочетаются с более длительным таймфреймом для подтверждения. Критерием выхода может быть изменение курса RVI или изменение положения SAR относительно цены. Результаты тестирования паттерна 3 представлены ниже. Паттерн прошел форвард-тест:

r3


Разворот SAR с перекупленностью/перепроданностью RVI

Наш пятый паттерн (паттерн-4) ловит разворот цены с подтверждением импульса. Взаимосвязь между SAR и ценой указывает на потенциальное изменение направления рынка. Пересечения RVI также служат фильтрами подтверждения импульса. Условия для подачи сигнала на покупку: максимум предыдущего бара находится на уровне или ниже предыдущего SAR, что указывает на медвежий тренд цены; за ним следует минимум текущего бара, находящийся на уровне или выше SAR, что указывает на разворот ниже цены для бычьего сценария. RVI также должен пересечение снизу вверх, как это отражено в нашей импровизированной функции RVI-UP. Это свидетельствует о бычьем тренде. Кроме того, для подтверждения бычьего тренда необходимо, чтобы текущий показатель RVI был положительным. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X()) && RVI(X()) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X()) && RVI(X()) < 0.0)
   {  return(true);
   }
   return(false);
}

Условия для подачи сигнала на продажу: предыдущий минимум находится на уровне или выше предыдущего SAR, что свидетельствует о бычьем тренде в прошлом; за ним следует текущий максимум, находящийся на уровне или ниже текущего SAR. Это создает медвежий сценарий. Наша функция RVI-DN также должна зафиксировать пересечение RVI в сторону снижения, что является подтверждением медвежьего импульса. Кроме того, как и в случае с сигналом на покупку, для подтверждения медвежьего настроения текущее значение RVI должно быть отрицательным.

Этот тип паттерна по своей сути представляет собой вход на разворот, основанный на импульсе. Он использует точки перегиба SAR и дополнительно усиливается за счет изменений импульса, как показывает RVI. Идеальные рыночные условия — это когда цены/рынок близки к исчерпанию своих трендов или после неудачных прорывов. Паттерн также будет наиболее эффективен, когда цена выходит за пределы зоны перекупленности или перепроданности и присутствует дивергенция импульса.

При использовании желательно избегать плоских зон SAR. Не следует использовать этот паттерн, если SAR сильно колеблется. Подтверждение с помощью дополнительных инструментов также может быть хорошей идеей, если для проверки пересечения RSI используются дополнительные индикаторы, такие как MACD или дивергенция RSI. Наиболее подходящим таймфреймом для данной модели, вероятно, будет диапазон от 1 до 4 часов, чтобы зафиксировать сильные структуры разворота. Более короткие таймфреймы неизбежно приведут к множеству ложных разворотов.

Для более точного определения времени входа можно использовать свечные паттерны или фильтры прорыва, такие как паттерны поглощения. Выходить из сделки можно, когда RVI не способен сохранить темп, или если SAR снова изменит направление после входа. Как всегда, фильтр волатильности может включать в себя STD-DEV или ATR, чтобы подавлять сигналы в условиях чрезмерно низкой волатильности. Ниже приведены результаты тестирования паттерна. Ему удалось пройти форвард-тест:

r4


Прорыв консолидации SAR с пересечением RVI

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

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(STD_DEV(X()) >= fabs(SAR(X()) - SAR(X() + __PERIOD)))
   {  if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X()))
      {  return(true);
      }
   }
   return(false);
}

Условия для продажи предполагают, что максимум предыдущего бара находится ниже SAR, что указывает на нисходящий тренд; затем те же условия повторяются на текущем баре, и максимум снова оказывается ниже SAR, что свидетельствует о сохраняющемся давлении со стороны продавцов. Это происходит одновременно с пересечением RVI вниз, что будет означать ослабление импульса. Основная идея паттерна заключается в использовании подтверждения позиции по сигналу SAR и пересечению RVI, где положение цены относительно сигнала SAR, с учетом импульса, используется при входе в сделку для минимизации ранних разворотов. Отличия от паттернов 3 и 4 заключается в том, что паттерн 5 фильтрует только продолжение SAR с соответствием RVI, но не проверяет волатильность.

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

Также крайне важно убедиться, что при использовании паттерна применяются оптимальные настройки SAR, поэтому может быть целесообразно пересмотреть параметры ускорения и максимальные значения, чтобы убедиться, что они хорошо работают с тестируемым инструментом. Интеграция с фильтрами рисков, такими как STD-DEV и ATR, также, опять же, должна приветствоваться при работе с этим паттерном. Это, в частности, позволяет избежать выхода на неактивные рынки. Ниже представлены результаты тестирования паттерна 5. Форвард-тест пройден:

r5


Тренд SAR с коррекцией RVI

Наш седьмой паттерн — это сигнал разворота на основе сжатия волатильности, который пытается определить зоны отскока цены, когда давление SAR является устойчивым, а импульс RVI — перегруженным или слабым. Логика условия покупки: максимум предыдущего бара ниже или равен предыдущему уровню SAR, то есть цена находилась ниже уровня сопротивления SAR, но теперь текущий уровень SAR ниже или равен текущему минимуму, это признак того, что уровень SAR снизился и теперь выступает в качестве уровня поддержки. Это происходит на фоне RVI, близкого к нулю, что будет сигнализировать о низкой или нейтральной динамике. Значение RVI, близкое к нулю, обычно является признаком того, что рынок готовится к потенциальному прорыву. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X()))
   {  return(true);
   }
   return(false);
}

Логика условия продажи: минимум предыдущего бара находится выше или равен предыдущему уровню поддержки (SAR), что указывает на то, что цена находилась в зоне поддержки. Затем текущий уровень SAR резко повышается или возвращается к текущему максимуму, поскольку SAR поднимается выше цены. RVI близок к нулю при низком или ослабевающем импульсе непосредственно перед разворотом.

Цель использования фильтра RVI с размером точки заключается в том, чтобы он действовал как фильтр подавления волатильности. Это помогает обозначить фазу спокойного нарастания, которая часто происходит непосредственно перед прорывом или разворотом. Стратегическая цель паттерна заключается в том, что она призвана ослабить предыдущее направление во время фазы сжатия, когда SAR пытается изменить направление, а RVI еще не имеет направленности, следовательно, это условие границы контртренда.

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

r6

c6


Тренд SAR с двойной конструкцией RVI

Паттерн 7 предназначен для обнаружения прорывов на основе импульса, подтвержденных множественными сигналами повышения/понижения RVI после позиционирования SAR. Он рассчитывает на продолжение тренда после прорыва импульса. Как правило, это переход от отскока цены к подтверждению направления тренда. Условия для покупки: минимум предыдущей свечи находится выше SAR, что указывает на удержание цены выше уровня поддержки SAR; затем текущий SAR также остается ниже минимума цены, подтверждая свою роль трейлинга. В течение периода, не превышающего входной период используемого индикатора, у нас происходят два повышения индикатора RVI. В случае бычьего сигнала это означает формирование двойного дна. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point())
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point())
   {  return(true);
   }
   return(false);
}

Условием для продажи является, наоборот, ситуация, когда предыдущий максимум свечи находится ниже SAR, что указывает на то, что цена находится ниже уровня сопротивления SAR. Далее следует сохранение текущего уровня SAR, при этом в течение периода действия индикатора дважды наблюдается пересечение RVI. Цель логики двойного подтверждения — отфильтровать ложные срабатывания и слабые импульсы. Это вводит аспект отложенного подтверждения, своего рода фильтрацию импульса, что обеспечивает более высокое качество тренда. Кроме того, в контексте соотношения риска и вознаграждения, поскольку этот паттерн предполагает поиск двойного дна или двойной вершины в индексе RVI в течение периода его действия, это говорит о том, что вход в сделку осуществляется только при сохранении импульса, что является хорошей мерой безопасности. Ниже представлены результаты тестирования. Форвард-тест пройден:

r7


Ускорение SAR с выбросом RVI

Паттерн 8 стремится получить подтверждение ускорения как за счет разницы между ценой и SAR, так и за счет импульса RVI. Он оценивает, увеличивается ли разрыв между ценой и показателем SAR. Паттерн часто служит индикатором силы тренда, при условии что RVI движется в том же направлении. Логика покупки: минимум находится выше SAR на протяжении последних двух баров, и разрыв между этим минимумом и SAR увеличивается, также наблюдается рост изменений RVI. На языке MQL5 это выглядит так:

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR_RVI::IsPattern_8(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X()))
   {  bool _double = false;
      for(int i = X() + 1; i < X() + __PERIOD + 1; i++)
      {  if(RVI_UP(i))
         {  _double = true;
            break;
         }
      }
      return(_double);
   }
   else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X()))
   {  bool _double = false;
      for(int i = X() + 1; i < X() + __PERIOD + 1; i++)
      {  if(RVI_DN(i))
         {  _double = true;
            break;
         }
      }
      return(_double);
   }
   return(false);
}

Логика продажи аналогична: два последовательных бара SAR находятся выше максимальной цены с разрывом между SAR и максимальной ценой. При этом RVI идет в сторону снижения, что является формой медвежьего ускорения. Использование разностей RVI второго порядка позволяет выявить поведение, подобное поведению второй производной. Цель состоит в том, чтобы получить выпуклую кривую или восходящий импульс, а не просто текущий импульс.

Паттерн избегает простых пересечений, таких как в паттерне 7. В нем не используются события пересечения трендов, а вместо этого делается упор на скорость изменений, что позволяет снизить влияние резких разворотов. Также предполагается, что импульс усиливается вместе с ценой, что является его основной философией. Иными словами, импульс должен расти, когда цена также указывает на направленный прорыв. Ниже представлены результаты тестирования паттерна. Форард-тест пройден:

r8



Заключение

Мы завершаем наш первый обзор паттернов Parabolic SAR и RVI. Мы не стали рассматривать паттерн 9, поскольку статья получилась бы слишком длинной. Полный исходный код для всех 10 паттернов прилагается ниже. Читатели могут свободно изучать его и вносить изменения. Код предназначен для использования с Мастером MQL5. Новички могут подробнее узнать о нем здесь. В следующей статье мы рассмотрим возможность дополнения сигнальных паттернов обучением с учителем. Мы сосредоточимся на паттернах, которые не прошли форвард-тест.


файл описание
WZ-69.mq5 Созданный Мастером советник, в заголовке которого отображаются использованные файлы
SignalWZ-69.mqh Пользовательский файл класса сигнала, используемый Мастером MQL5 при сборке советника

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/18399

Прикрепленные файлы |
WZ_69.mq5 (7.9 KB)
SignalWZ_69.mqh (20.23 KB)
Преодоление ограничений машинного обучения (Часть 3): Новый взгляд на неустранимую ошибку Преодоление ограничений машинного обучения (Часть 3): Новый взгляд на неустранимую ошибку
В этой статье мы по-новому взглянем на скрытый, геометрический источник ошибок, который незаметно формирует каждое предсказание, сделанное вашими моделями. Переосмысливая то, как мы оцениваем и применяем прогнозы машинного обучения в трейдинге, мы показываем, как эта упущенная из виду перспектива может способствовать принятию более взвешенных решений, повышению доходности и более разумному способу работы с моделями, которые, как нам казалось, мы уже понимаем.
Знакомство с языком MQL5 (Часть 35): Освоение API и функции WebRequest в языке MQL5 (IX) Знакомство с языком MQL5 (Часть 35): Освоение API и функции WebRequest в языке MQL5 (IX)
Узнайте, как обнаруживать действия пользователей в MetaTrader 5, отправлять запросы в API искусственного интеллекта, извлекать ответы и реализовывать прокрутку текста на панели.
Машинное обучение и Data Science (Часть 42): Прогнозирование временных рядов на форексе с ARIMA и Python Машинное обучение и Data Science (Часть 42): Прогнозирование временных рядов на форексе с ARIMA и Python
ARIMA (сокращение от Auto Regressive Integrated Moving Average, авторегрессионная интегрированная скользящая средняя) — это традиционная модель прогнозирования временных рядов. Благодаря способности обнаруживать всплески и колебания в данных временного ряда, эта модель может делать точные прогнозы относительно следующих значений. В этой статье мы разберемся, что это такое, как это работает, можно ли это использовать для точного прогнозирования будущих цен на рынке и многое другое.
Создание торговой панели администратора на MQL5 (Часть XII): Интеграция форекс-калькулятора Создание торговой панели администратора на MQL5 (Часть XII): Интеграция форекс-калькулятора
Точный расчет ключевых торговых показателей — неотъемлемая часть рабочего процесса каждого трейдера. В этой статье мы рассмотрим интеграцию мощного инструмента — форекс-калькулятора — в панель управления торговлей, что еще больше расширит функциональность нашей многопанельной системы администратора трейдера. Эффективное определение риска, размера позиции и потенциальной прибыли имеет важное значение при совершении сделок, и эта новая функция призвана сделать этот процесс более быстрым и интуитивно понятным прямо в панели. Присоединяйтесь к нам, чтобы изучить практическое применение MQL5 при создании продвинутых торговых панелей.