English Deutsch 日本語
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 67): Использование паттернов TRIX и процентного диапазона Уильямса

Возможности Мастера MQL5, которые вам нужно знать (Часть 67): Использование паттернов TRIX и процентного диапазона Уильямса

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

Введение

Мы продолжаем нашу серию статей, посвященных изучению сигнальных паттернов, генерируемых парными техническими индикаторами. В прошлый раз мы рассматривали фрактальное адаптивное скользящее среднее в сочетании с осциллятором индекса силы. В этой статье мы рассмотрим осциллятор тройного экспоненциального скользящего среднего (Triple Exponential Moving Average Oscillator, TRIX) в сочетании с другим осциллятором — процентным диапазоном Уильямса (Williams Percent Range, WPR). Индикатор TRIX, являясь осциллятором скользящих средних, служит индикатором, сигнализирующим о тренде, а процентный диапазон Уильямса дополняет его, указывая на уровни поддержки и сопротивления.

Мы рассматриваем 10 типичных паттернов, которые могут быть сгенерированы путем комбинирования этих двух индикаторов, как мы делали в предыдущих статьях, и проводим обучение или оптимизацию с использованием CHFJPY на 4-часовом таймфрейме за 2023 год. Форвард-тестирование на символе проводится за 2024 год.

В основе TRIX лежит осциллятор импульса, который сглаживает цену с помощью тройной экспоненциальной скользящей средней. Индикатор лучше всего подходит для выявления трендов путем сглаживания или фильтрации шума. Это достигается путем измерения скорости изменения тройного сглаженного скользящего среднего. Помимо подтверждения тренда, он также предоставляет сигналы дивергенции. TRIX вычисляется путем трехкратного применения экспоненциального усреднения (EMA). Затем производится расчет процентного изменения. Формула выглядит следующим образом:

trix_form

где:

  • EMA₁ - первая EMA, примененная к цене (например, цене закрытия) за период N.
  • EMA₂ - вторая EMA, примененная к EMA₁.
  • EMA₃ - третья EMA, примененная к EMA₂.
  • TriX Line - процентное изменение тройной сглаженной EMA (осциллятор импульса).

В стандартных настройках TRIX период часто устанавливается на 15. Для наших тестов мы использовали значение 3, поскольку оно оказалось достаточно чувствительным, учитывая небольшой период тестирования в один год. Для определения этого параметра мы используем константный параметр __PERIOD в заголовке класса пользовательского сигнала.

#define __PERIOD 3
class CSignalTRX_WPR : public CExpertSignal
{
protected:
   CiTriX            m_trix;
   CiWPR             m_wpr;
   int               m_patterns_used;
   //--- adjusted parameters

   //--- "weights" of market models (0-100)
   int               m_pattern_0;      // model 0
   int               m_pattern_1;      // model 1

...


   int               m_pattern_9;      // model 9
   //
   //int               m_patterns_usage;   //

public:
   CSignalTRX_WPR(void);
   ~CSignalTRX_WPR(void);
   //--- methods of setting adjustable parameters
   //--- methods of adjusting "weights" of market models
   void              Pattern_0(int value)
   {  m_pattern_0 = value;
   }
   void              Pattern_1(int value)
   {  m_pattern_1 = value;
   }
   void              Pattern_2(int value)
   {  m_pattern_2 = value;
   }


...

   void              PatternsUsed(int value)
   {  m_patterns_used = value;
      PatternsUsage(value);
   }
   //--- method of verification of settings
   virtual bool      ValidationSettings(void);
   //--- method of creating the oscillator and timeseries
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int       LongCondition(void) override;
   virtual int       ShortCondition(void) override;
   virtual double    Direction(void) override;

protected:
   //--- method of initialization of the oscillator
   bool              InitTRX_WPR(CIndicators *indicators);
   //--- methods of getting data
   double            TRX(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(ind));
   }
   double            TRX_MAX(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(m_trix.Maximum(0, ind, __PERIOD)));
   }
   double            TRX_MIN(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(m_trix.Minimum(0, ind, __PERIOD)));
   }
   double            WPR(int ind)
   {  //
      m_wpr.Refresh(-1);
      return(m_wpr.Main(ind));
   }
   double            Close(int ind)
   {  //
      m_close.Refresh(-1);
      return(m_close.GetData(ind));
   }
   double            High(int ind)
   {  //
      m_high.Refresh(-1);
      return(m_high.GetData(ind));
   }
   double            Low(int ind)
   {  //
      m_low.Refresh(-1);
      return(m_low.GetData(ind));
   }
   long              Volume(int ind)
   {  //
      m_tick_volume.Refresh(-1);
      return(m_tick_volume.GetData(ind));
   }
   int               X()
   {  //
      return(StartIndex());
   }
   //--- methods to check for patterns
   bool              IsPattern_0(ENUM_POSITION_TYPE T);
   bool              IsPattern_1(ENUM_POSITION_TYPE T);

...


   bool              IsPattern_9(ENUM_POSITION_TYPE T);
};

В MQL5 этот индикатор встроен в функцию, поэтому от нас потребуется минимальное количество кода. Мы реализуем его из класса CiTRIX. Его интерпретация зависит от положения или абсолютного значения. Положительный TRIX является признаком бычьего тренда или восходящего движения цены. Отрицательный TRIX указывает на нисходящий тренд цены. Нулевая линия также является ключевым порогом, пересечение которого часто указывает на разворот тренда.

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

WPR — это осциллятор уровней поддержки/сопротивления, который отмечает ценовые зоны перекупленности и перепроданности. Разработанный Ларри Уильямсом, индикатор сравнивает текущую цену закрытия с диапазоном максимумов и минимумов за определенный период. Его основная цель может заключаться в выявлении ключевых точек разворота на рынке. Таким образом, этот метод наиболее эффективен на нетрендовых рынках. Формула выглядит следующим образом:

wpr_form

где:

  • Highest_N — самая высокая цена за последние N периодов.
  • Lowest_N — самая низкая цена за последние N периодов.
  • Close_today — текущая цена закрытия.
  • × (-100) - инвертирует значение для упрощения интерпретации (шкала от 0 до -100).

В обеих общих формулах значение today (сегодня) совпадает со значениями текущего/последнего ценового бара. Today было просто адаптировано из дневного таймфрейма. Обычно используемый период ретроспективного анализа равен 14, но мы используем аналогичный период для осциллятора TRIX, который равен 3, как указано выше. Вы можете свободно настраивать эти параметры и даже задавать индивидуальные периоды для обоих показателей. Значения от -80 до -100 указывают на то, что актив находится на уровне поддержки. Это потенциальная возможность для покупки. Значения в диапазоне от -20 до 0 указывают на то, что цена актива находится на уровне сопротивления. Это указывает на возможность продажи. Пересечение порогового значения -50 может указывать на изменение тренда. 

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

Таким образом, теперь мы можем рассмотреть 10 типов паттернов. Все тестовые операции проводились на валютной паре CHFJPY на 4-часовом таймфрейме в период с 01.01.2023 по 01.01.2025. 2023 год — это период обучения или оптимизации, а 2024 год — период форвард-теста.


Пересечение TRIX и разворот WPR

Первая модель, которую мы рассматриваем, предполагает пересечение нулевой линии TRIX и разворот WPR либо от уровня поддержки, либо от уровня сопротивления. Когда TRIX пересекает свою нулевую линию, это означает разворот на бычий тренд, поскольку тройная сглаженная EMA ускоряется вверх. Одновременно, если WPR поднимается выше -80 снизу вверх, это указывает на выход цены из зоны перепроданности или отскок от уровня поддержки. Это часто означает нарастание покупательского давления, и вместе эти два сигнала подтверждают потенциальный разворот или продолжение тренда с уменьшенным риском ложного прорыва. 

При реализации этого подхода, помимо пересечения TRIX, можно также искать пересечение с возрастающим наклоном для более надежного подтверждения. Также важно обеспечить, чтобы показатель WPR поднялся выше -80, но остался ниже -50, чтобы избежать преждевременного входа в слабые развороты. Подтверждение в виде всплесков объема или пробития ценой ключевого уровня сопротивления также может служить дополнительным аргументом в пользу уверенности. На нестабильных рынках риски всегда будут присутствовать, поэтому использование дополнительных фильтров, таких как скользящие средние, может помочь. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && -80.0 > WPR(X() + 1) && WPR(X()) > -80.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && 0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && -20.0 > WPR(X()) && WPR(X() + 1) > -20.0)
   {  return(true);
   }
   return(false);
}

Медвежий сигнал возникает, когда TRIX пересекает нулевую отметку ниже нуля, что является признаком медвежьего тренда, поскольку сглаженная EMA замедляется. Одновременно с этим, WPR опускается ниже -20 с уровня выше, что будет означать выход цены из зоны перекупленности или сопротивления, а также усиление давления со стороны продавцов. Такое сочетание обычно указывает на потенциальный разворот тренда или продолжение нисходящего движения. Соответствующие рекомендации отражают приведенные выше бычьи точки, где можно сдержать нарастание нисходящего тренда, чтобы обеспечить усиление медвежьего импульса, а показатель WPR должен быть ниже -20, но еще не ниже -50.

Также следует проводить проверки на пробой уровня поддержки или снижение объема длинных позиций для дополнительной проверки. Риски на рынках с резкими колебаниями или боковым движением цены можно снизить с помощью линий тренда или RSI. Ниже представлены результаты наших испытаний, проведенных с 01.01.2023 по 01.01.2025, при этом обучение проводилось только в 2023 году:

r0


Дивергенция цен TRIX и экстремальные значения WPR

Следующая модель основана на дивергенции между ценой и TRIX при экстремальном значении WPR. Бычий сигнал возникает, когда цена формирует более низкие минимумы, но TRIX формирует более высокие минимумы, что указывает на ослабление медвежьего импульса. В сочетании с тем, что WPR находится ниже уровня поддержки -80, это говорит о том, что цена перепродана и, вероятно, произойдет разворот вверх. Это подтверждается бычьим трендом индекса TRIX. При использовании метода для обеспечения надежности необходимо выявлять расхождения как минимум в двух ценовых колебаниях. Также целесообразно дождаться, пока WPR начнет расти с уровня ниже -80, чтобы подтвердить наличие покупательского давления.

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

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > Low(X()) && -80.0 > WPR(X()) && TRX(X()) > TRX(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()) > High(X() + 1) && WPR(X()) > -20.0 && TRX(X() + 1) > TRX(X()))
   {  return(true);
   }
   return(false);
}

Медвежий сигнал регистрируется, когда мы наблюдаем отрицательную дивергенцию TRIX с WPR в зоне сопротивления/перекупленности. Эта отрицательная дивергенция возникает, когда цена формирует более высокие максимумы, а TRIX — более низкие, что свидетельствует об ослаблении бычьего импульса. Значение WPR выше -20 указывает на зону сопротивления и предполагает потенциальный разворот тренда. Это часто является сигналом к продаже с высокой вероятностью. При реализации этого метода часто бывает полезно подтвердить расхождение между несколькими пиками для повышения точности. Также предпочтительнее подождать, пока показатель WPR не опустится ниже -20 после появления более чем одного бара.

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

r1


Пересечение TRIX и положение WPR

Бычий сигнал для следующего паттерна — это пересечение TRIX нулевой линии выше сигнальной, что указывает на переход к бычьему тренду, в то время как WPR находится выше -50, что подразумевает, что цена находится в нейтральной зоне или зоне сопротивления. Данная ситуация подтверждает тезис об усилении бычьего тренда с меньшей вероятностью коррекции. Если пересечение TRIX происходит на склоне с возрастающим наклоном, это признак сильного сигнала. Показатель WPR должен быть выше -50, но ниже -20, поскольку мы ищем нейтральные зоны, приближающиеся к сопротивлению. Дополнительное подтверждение можно получить, пробив ценой ключевые скользящие средние или проверив индикатор ADX. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && WPR(X()) > -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && 0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && -50.0 > WPR(X()))
   {  return(true);
   }
   return(false);
}

Медвежий паттерн — это пересечение TRIX нулевой линии сверху вниз, при этом WPR находится ниже -50. Это указывает на нисходящую тенденцию и сохраняющееся давление со стороны продавцов. Этот аргумент, как и в случае с бычьим зеркальным отражением, основан на меньшей вероятности разворота, учитывая, что цена находится в нейтральной точке и вдали от уровня поддержки. Как и в случае с другими описанными выше паттернами, отслеживание возрастающей крутизны TRIX способствует получению сильного сигнала. Показатель WPR также должен быть ниже -50, но пока не ниже -80. Нестабильные рынки, как и в бычьем случае, не сочетаются с паттерном, поэтому его следует применять на трендовых рынках. Результаты наших тестов для паттерна 2 следующие:

r2


Тренд TRIX и выход WPR

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

Пересечение WPR уровня -80 можно подтвердить, используя другой индикатор импульса, сигнализирующий о восходящем импульсе. В качестве подтверждения также можно использовать ценовые паттерны поглощения в восходящем движении или всплески объема. Ограничением паттерна являются слабые уровни поддержки, которые могут оказаться неэффективными. Проверка на более крупном таймфрейме может оказаться весьма полезной при работе с паттерном. Реализация в MQL5 выглядит так:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) >= 0.0 && TRX(X() + 1) <= 0.0 && TRX(X() + 2) >= 0.0 && WPR(X() + 1) < -80.0 && WPR(X()) > -80.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) <= 0.0 && TRX(X() + 1) >= 0.0 && TRX(X()) <= 0.0 && WPR(X()) < -20.0 && WPR(X() + 1) > -20.0)
   {  return(true);
   }
   return(false);
}

Медвежий сигнал указывает на то, что TRIX находится в диапазоне перед прорывом вниз, а WPR пересекает уровень -20 сверху и закрывается ниже него. Это подтверждает медвежье движение. Консолидация индекса TRIX с последующим прорывом вниз сигнализирует о достижении им уровня сопротивления. Ослабление бычьего импульса. Движение WPR также подтверждает давление со стороны продавцов. Подтверждение TRIX для предыдущих пиков, как и в случае с бычьим трендом, может препятствовать генерации сигналов. Важно дождаться, пока показатель WPR останется ниже -20, чтобы избежать ложных сигналов. Медвежье движение цены, например, медвежье поглощение, также может сыграть в этом свою роль. В условиях сильного тренда на рынке использование этого паттерна может быть очень сложным, поэтому пользователям необходимо быть внимательными и дополнять его другими индикаторами, такими как RSI. Результаты тестирования паттерна представлены ниже:

r3


Прорыв TRIX и нейтральный выход WPR

В пятом паттерне бычий сигнал указывает на то, что TRIX, как и в паттерне 3, пробивает сопротивление, в то время как WPR находится в диапазоне от -50 до -20. Это, как правило, подтверждает, что цена находится в бычьей или нейтральной зоне, и, следовательно, указывает на устойчивый прорыв. При использовании паттерна наклон и объем TRIX могут использоваться как подтверждение. Отслеживание прорывов цен на графике, особенно с помощью ключевых индикаторов, таких как скользящие средние, может быть использовано в различных целях. Паттерн характерен только для трендовых рынков, на волатильных рынках могут возникать ложные сигналы. Реализация на MQL5 выглядит так:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && TRX(X()) == TRX_MAX(X()) && WPR(X()) > -50.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && TRX(X()) == TRX_MIN(X()) && WPR(X()) > -80.0 && WPR(X()) < -50.0)
   {  return(true);
   }
   return(false);
}

Медвежий сигнал — это пробой TRIX ниже уровня поддержки, при этом WPR находится в нейтральной или медвежьей зоне. Если уровень TRIX опустится ниже "исторического" уровня поддержки, такого как предыдущий минимум или даже нулевая линия, это может указывать на ускорение медвежьего импульса. Показатель WPR будет находиться в диапазоне от -50 до -80, что соответствует нейтральной или медвежьей зоне и подтверждает обоснованность пробоя. Необходимо снова учитывать наклон кривой TRIX в точке пробоя, а коэффициент WPR должен быть ниже -50, но не перепродан, чтобы выбрать оптимальное время для сделки. Дополнительным подтверждением может служить пробой цены на графике, например, ниже скользящей средней. Паттерн плохо работает на нестабильных рынках. Результаты тестирования:

r4


Разворот TRIX и выход WPR

Бычий сигнал паттерна проявляется в том, что индекс TRIX достигает экстремально высокого пика, как правило, значительно выше нулевой отметки, а затем разворачивается вниз, в то время как индекс WPR падает ниже -20. Это, как правило, указывает на то, что цена больше не перекуплена, и, следовательно, вероятна здоровая коррекция или продолжение тренда. При таком паттерне крайне важно проследить снижение коэффициента WPR до уровня -50, но не ниже, чтобы исключить состояние перепроданности. Также следует обращать внимание на то, насколько цена удерживает ключевые уровни поддержки или находится в паритете с важной скользящей средней.

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

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) >  TRX(X()) && TRX(X() + 1) == TRX_MAX(X()) && WPR(X() + 1) > -20.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) > TRX(X() + 1) && TRX(X() + 1) <  TRX(X()) && TRX(X() + 1) == TRX_MIN(X()) && WPR(X()) > -80.0 && WPR(X() + 1) < -80.0)
   {  return(true);
   }
   return(false);
}

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

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

r5


Продолжение TRIX и средний WPR

Бычий сигнал - TRIX продолжит оставаться выше нуля, а WPR находится в среднем диапазоне от -50 до -20. Это сигнализирует об устойчивом бычьем тренде, потенциально имеющем потенциал для роста. Объяснение этому заключается в том, что когда TRIX остается выше нуля с положительным наклоном, это служит подтверждением продолжающегося бычьего тренда. Дополнительный показатель WPR в среднем диапазоне также указывает на то, что цена не является ни перекупленной, ни перепроданной. Это позволяет предположить, что тренд потенциально может продолжиться без непосредственной угрозы разворота.

Использование паттерна предполагает отслеживание того, чтобы TRIX сохранял постоянный восходящий наклон без резких разворотов. Для обеспечения оптимального продолжения тренда показатель WPR также должен оставаться в диапазоне от -50 до -20. Подтверждение цены путем следования по линии тренда или удержания выше ключевой скользящей средней может быть дополнительным аргументом. Ограничениями этой модели являются то, что сигналы среднего диапазона могут ослабевать на рынках с низкой волатильностью. Реализация на MQL5:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X() + 2) > TRX(X() + 1) && TRX(X() + 1) > TRX(X()) && TRX(X()) > 0.0 && WPR(X()) > -80.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) < TRX(X()) && TRX(X()) < 0.0 && WPR(X()) > -80.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   return(false);
}

Медвежий паттерн, характеризующийся сохранением уровня TRIX ниже нуля и нахождением WPR в среднем диапазоне, сигнализирует об устойчивом медвежьем тренде. Обоснование заключается в том, что показатель TRIX, остающийся ниже нуля с отрицательным наклоном, как правило, подтверждает медвежий тренд. Показатель WPR в диапазоне от -50 до -80 также свидетельствует о том, что цена еще не перепродана. Это может означать, что нисходящий тренд может продолжиться без немедленного разворота. При применении этого медвежьего паттерна, как уже упоминалось в отношении большинства паттернов выше, наклон TRIX имеет решающее значение. Он должен неизменно стремиться к снижению.

Также необходимо следить за показателем WPR, чтобы он оставался в ключевом диапазоне от -50 до -80. Удержание цены на ключевой скользящей средней или уровне поддержки подтверждает правильность паттерна, а ее ограничения, как уже упоминалось в случае с бычьим зеркальным вариантом, заключаются в слабости сигнала в среднем диапазоне, который может сохраняться в течение длительных периодов времени. Результаты тестирования:

r6


Консолидация TRIX плюс WPR в зоне

Бычий паттерн предполагает прорыв из зоны консолидации TRIX с WPR в бычьей зоне поддержки, что сигнализирует о новом восходящем тренде со значительным импульсом. Это подтверждается тем, что движение TRIX в боковом направлении или консолидация вблизи нулевой линии с последующим прорывом вверх указывает на новый бычий тренд. А показатель WPR выше -50 подтверждает бычий импульс, что говорит о вероятности его сохранения. В идеале необходимо определить консолидацию TRIX в максимально узком диапазоне, близком к нулевой отметке, на протяжении нескольких баров/периодов.

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

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && fabs(Close(X()) - Close(X() + 1)) >= TRX_MAX(X() + 1) - TRX_MIN(X() + 1) && TRX_MAX(X() + 1) > 0.0 && TRX_MIN(X() + 1) < 0.0 && TRX_MAX(X() + 1) < TRX(X()) && WPR(X()) >= -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && fabs(Close(X()) - Close(X() + 1)) >= TRX_MAX(X() + 1) - TRX_MIN(X() + 1) && TRX_MAX(X() + 1) > 0.0 && TRX_MIN(X() + 1) < 0.0 && TRX_MIN(X() + 1) > TRX(X()) && WPR(X()) <= -80.0)
   {  return(true);
   }
   return(false);
}

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

При применении строгих проверок для узкой консолидации TRIX необходимо подтверждение в виде наличия достаточного количества сделок. Коэффициент WPR должен быть ниже -50, но не перепродан, чтобы выбрать оптимальное время для сделки. Ложные прорывы на нестабильных рынках остаются основным риском для паттерна. Результаты наших тестов для паттерна 7 следующие:

r7


Разворот TRIX на нулевой линии с экстремальным WPR

Предпоследняя модель демонстрирует бычий сигнал: TRIX разворачивается вверх на нулевой линии, а WPR находится в зоне перепроданности. Это сильный бычий разворот от нейтрального тренда. Причина, по которой паттерн может быть бычьим, в том, что разворот TRIX вверх от нулевой линии указывает на переход от нейтрального к бычьему импульсу. Показатель WPR ниже -80 также подтверждает перепроданность рынка. Таким образом, это указывает на высокую вероятность разворота тренда по мере усиления покупательского давления.

Для использования этой модели требуется надлежащее подтверждение разворота TRIX, что может потребовать анализа более чем одного бара. Также уверенности может добавить ожидание того, что показатель WPR явно поднимется выше -80 более чем на одном графике. В качестве дополнительных фильтров поддержки могут выступать бычьи свечные паттерны или колебания цены на ключевых уровнях поддержки, как уже указывалось в отношении других паттернов выше. Ограничением для данной модели являются трендовые рынки. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_8(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) > TRX(X() + 1) && TRX(X() + 1) > 0.0 && TRX(X() + 2) > TRX(X() + 1) && WPR(X()) < -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) < 0.0 && TRX(X()) < TRX(X() + 1) && WPR(X()) > -50.0)
   {  return(true);
   }
   return(false);
}

Медвежий паттерн предполагает разворот TRIX вниз при приближении к нулю, а WPR указывает на то, что цена находится в зоне перекупленности или на уровне сопротивления. Разворот TRIX с нулевой отметки подтверждает сдвиг рыночных настроений в сторону медвежьих. Значение WPR выше -20 также подтверждает перекупленность, что способствует формированию высоковероятного разворота, поскольку давление со стороны продавцов усиливается. Подтверждение разворота тренда TRIX должно быть четким и выражено либо наклоном графика, либо количеством баров после разворота.

Ожидание падения WPR ниже -20 и дополнение его медвежьими свечными паттернами или уровнями сопротивления также может привести к формированию более убедительных паттернов. Ограничения для этой модели, как и для бычьего варианта, составляют трендовые рынки. Результаты тестирования представлены ниже. Как и в случае со всеми паттернами, протестированными в этой статье, тестовый запуск был произведен с 01.01.2023 по 2025.01.01 после обучения/оптимизации с 2023.01.01 по 2024.01.01. Использовался символ CHFJPY H4.

r8


Двойное дно/вершина TRIX и перепроданность/перекупленность WPR

В заключительном паттерне бычий сигнал указывает на формирование двойного дна у TRIX, а WPR сигнализирует о сильном бычьем развороте. Этот уровень поддержки призван подтвердить, что цена достигла своего минимума. Объяснение этому аргументу заключается в том, что двойное дно, представляющее собой две чередующиеся точки на уровне поддержки, который часто находится ниже нуля, подобно консолидации, указывает на потенциальный разворот от медвежьего к бычьему тренду. WPR на уровне поддержки -80 подтверждает зону перепроданности и ожидающийся разворот. 

При использовании следует также учитывать, что двойное дно находится близко к нулевой линии или в отрицательной зоне. Это требование значительно затрудняет получение сигналов, поскольку двойные минимумы TRIX редко возникают на чередующихся барах. Как и в случае с другими паттернами, подтверждающими сигналами могут быть формирование ценой двойного дна или прорыв уровня сопротивления. Недостатком модели являются нестабильные и волатильные рынки. Реализация на MQL5:

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) >= 0.0 && TRX(X() + 1) <= 0.0 && TRX(X() + 2) >= 0.0 && TRX(X() + 3) <= 0.0 && TRX(X() + 4) >= 0.0 && WPR(X()) <= -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 4) <= 0.0 && TRX(X() + 3) >= 0.0 && TRX(X() + 2) <= 0.0 && TRX(X() + 1) >= 0.0 && TRX(X()) <= 0.0 && WPR(X()) >= -50.0)
   {  return(true);
   }
   return(false);
}

Медвежий паттерн характеризуется двойной вершиной TRIX, снова расположенной на нулевой границе или чуть выше нее в положительной зоне. Это часто свидетельствует об ослаблении бычьего импульса. Превышение показателя WPR уровня -20 подтверждает перекупленность и также поддерживает сценарий нисходящего разворота. Практические рекомендации включают в себя большую часть того, что мы уже упоминали в отношении других паттернов, описанных выше. Наклон, запаздывающие значения и дополнительные индикаторы. Риски, описанные здесь, связаны с резкими колебаниями цен на рынках. Результаты тестирования финального паттерна не привели к совершению ни одной сделки, поскольку условия входа оказались слишком ограничительными. И это несмотря на очень короткий период индикатора!


Заключение

Мы проанализировали паттерны и сигналы, полученные в результате объединения TRIX и процентного диапазона Уильямса. Для целей тестирования мы использовали чрезмерно короткие периоды индикатора, чтобы получить достаточное количество сделок за короткий тестовый период в один год. Это говорит о том, что данная пара индикаторов не так чувствительна или активна, как рассмотренные ранее. Поэтому при работе с этой парой индикаторов обязательно требуется дополнительное тестирование. По результатам проведенных нами тестов, только паттерны 1, 4 и 5 прошли форвард-тест.


файл описание
wz-67.mq5 Созданный Мастером советник, в заголовке которого отображаются использованные файлы
SignalWZ_67.mqh Файл класса пользовательского сигнала, используемый Мастером

Инструкции по использованию файлов класса пользовательского сигнала можно найти здесь.

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

Прикрепленные файлы |
SignalWZ_67.mqh (19.78 KB)
wz-67.mq5 (7.82 KB)
Моделирование рынка (Часть 19): Первые шаги на SQL (II) Моделирование рынка (Часть 19): Первые шаги на SQL (II)
Как мы объясняли в первой статье о SQL, нет смысла тратить время на программирование процедур для выполнения того, что уже включено в SQL. Однако, если не знать самых основ, вы не сможете ничего сделать с помощью SQL, чтобы воспользоваться всеми преимуществами, которые предлагает этот инструмент. Поэтому в данной статье мы рассмотрим, как выполнять основные задачи в базах данных.
Конструктор советников MQL5 (Часть 1): Простой статический шаблон Конструктор советников MQL5 (Часть 1): Простой статический шаблон
В статье разбирается пример многоцелевого шаблона торгового робота, который подойдет как для создания собственных стратегий, так и в качестве кодовой базы для работы на фрилансе. Ключевая особенность решения — торговля по барам, при этом код уже оснащен встроенными режимами усреднения, мартингейла и длительного удержания позиций. Материал будет наиболее полезен новичкам, которые хотят написать свои простые стратегии или познакомиться с распространенными торговыми техниками.
Трейдинг с экономическим календарем MQL5 (Часть 10): Перетаскиваемая панель и hover-эффекты на кнопках Трейдинг с экономическим календарем MQL5 (Часть 10): Перетаскиваемая панель и hover-эффекты на кнопках
Мы продолжаем улучшать возможности торговли с экономическим календарем MQL5 и сегодня добавим перетаскиваемую панель, которая позволит перемещать элементы, чтобы при необходимости лучше видеть график. Также добавим эффекты при наведении курсора на кнопки, чтобы еще больше улучшить работу с панелью.
Архитектура системы машинного обучения в MetaTrader 5 (Часть 1): Утечка данных и исправление меток времени Архитектура системы машинного обучения в MetaTrader 5 (Часть 1): Утечка данных и исправление меток времени
Прежде чем мы сможем даже начать использовать машинное обучение в нашей торговле на MetaTrader 5, крайне важно разобраться с одной из самых недооцененных ловушек — утечкой данных. Эта статья раскрывает, как утечка данных, в частности ловушка с временными метками в MetaTrader 5, может исказить производительность нашей модели и привести к ненадежным торговым сигналам. Углубляясь в механику этой проблемы и предлагая стратегии ее предотвращения, мы прокладываем путь к созданию надежных моделей машинного обучения, которые будут давать достоверные прогнозы в условиях реальной торговли.