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

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

MetaTrader 5Торговые системы |
54 0
Stephen Njuki
Stephen Njuki

Введение

Мы продолжаем нашу серию. В прошлый раз мы рассматривали каналы Демарка и конвертов, а теперь поговорим о сочетании фрактального адаптивного скользящего среднего (FrAMA) и индекса силы. FrAMA, будучи скользящей средней, является индикатором, сигнализирующим о тренде, в то время как индекс силы позволяет контролировать объем и определить, имеет ли тренд устойчивость. Как и в предыдущих статьях, мы рассмотрим 10 типичных паттернов, которые могут быть получены путем сочетания этих двух индикаторов. Мы проводим обучение или оптимизацию на EURUSD H4 за 2023 год. Форвард-тестирование на символе проводится за 2024 год.


Дивергенция FrAMA и индекса силы

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

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

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) < FRM(X()) && Close(X() + 1) >  FRM(X() + 1) && 0.0 > FRC(X()) && FRC(X()) > FRC(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) > FRM(X()) && Close(X() + 1) <  FRM(X() + 1) && 0.0 < FRC(X()) && FRC(X()) < FRC(X() + 1))
   {  return(true);
   }
   return(false);
}

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

FrAMA регулирует период сглаживания на основе фрактальной геометрии, что делает его очень чувствительным к изменениям цены и одновременно позволяет фильтровать шум. С другой стороны, индекс силы измеряет силу ценового движения, умножая изменение цены на объем, который служит индикатором давления покупателей/продавцов. При расхождении бычьих и медвежьих сигналов FrAMA показывает нисходящий тренд, но индекс Force формирует более высокие минимумы, указывая на слабость текущего долгосрочного тренда. Медвежья дивергенция выглядит зеркально. Паттерн призван отражать точки колебаний или перегиба на рынке. Результаты тестирования после обучения/оптимизации представлены ниже. Паттерн не прошел форвард-тест за период в 1 год - за 2024 год;

r0


Пересечение FrAMA с подтверждением индекса силы

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

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) > FRM(X()) && Close(X() + 1) <  FRM(X() + 1) && 0.0 > FRC(X() + 1) && FRC(X()) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) < FRM(X()) && Close(X() + 1) >  FRM(X() + 1) && 0.0 < FRC(X() + 1) && FRC(X()) < 0.0)
   {  return(true);
   }
   return(false);
}

Паттерн основан на двух пересечениях. Один - для анализа изменений тренда (FrAMA), а другой — для анализа импульса, подкрепленного объемом (индекс силы). Это помогает уменьшить количество ложных сигналов на нестабильных рынках. Пересечение FrAMA также может быть реализовано с использованием быстрой и медленной FrAMA, при этом сигналы считываются из точки пересечения быстрой FrAMA, а не из цены. Например, можно рассмотреть периоды 14 и 50. Индекс силы в этом случае играет второстепенную роль, подтверждая, что изменения тренда подкрепляются объемом.

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

r1


Направление тренда FrAMA с перекупленностью/перепроданностью индекса силы

Паттерн 2 использует направление тренда FrAMA вместе с показаниями индекса силы для определения перекупленности или перепроданности. Бычий сигнал – цена выше FrAMA, что указывает на долгосрочный тренд, плюс индекс силы достигает уровня перепроданности, за которым следует коррекция. Коррекция индекса силы рассматривается как возможность для покупки. И наоборот, медвежий сигнал возникает, когда цена находится ниже FrAMA, а индекс силы достигает уровня перекупленности, а затем начинает падать, сигнализируя о коррекции. Реализуем это в MQL5 следующим образом:

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

Этот сигнальный паттерн объединяет подтверждение тренда FrAMA и экстремальные уровни индекса силы для выявления коррекций и разворотов. Идеально подходит для торговли по стратегиям возврата к среднему значению в рамках трендов. Всплески объема в зонах перекупленности/перепроданности повышают надежность сигнала. Паттерн использует четкость тренда FrAMA и взвешенные по объему экстремумы индекса силы. Корректировка пороговых значений индекса силы может производиться в зависимости от волатильности актива. В наших целях мы не использовали абсолютное пороговое значение для перекупленности/перепроданности, поскольку эти значения, как правило, коррелируют с ценовыми единицами активов. Вместо этого мы используем закономерности изменения индекса силы для определения достижения пороговых значений. Таким образом, подтверждение в виде коррекций цены от ключевых уровней поддержки или паттернов на свечных графиках может значительно повысить точность этого сигнала.

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

r2


Наклон FrAMA с сглаживанием индекса силы

Паттерн-3 использует сглаживание наклона FrAMA и индекса силы таким образом, что бычий сигнал представляет собой FrAMA с положительным наклоном под крутым углом, а индекс силы также резко возрастает в положительной зоне. Медвежий сигнал — FrAMA с отрицательным крутым наклоном, а сглаженный индекс силы отрицательный и снижается. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && FRM(X()) - FRM(X() + 1) > FRM(X() + 1) - FRM(X() + 2) && FRM(X() + 1) - FRM(X() + 2) > 0.0 && FRC(X()) - FRC(X() + 1) > FRC(X() + 1) - FRC(X() + 2) && FRC(X() + 1) - FRC(X() + 2) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_BUY && FRM(X()) - FRM(X() + 1) < FRM(X() + 1) - FRM(X() + 2) && FRM(X() + 1) - FRM(X() + 2) < 0.0 && FRC(X()) - FRC(X() + 1) < FRC(X() + 1) - FRC(X() + 2) && FRC(X() + 1) - FRC(X() + 2) < 0.0)
   {  return(true);
   }
   return(false);
}

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

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

r3

При внедрении метод расчета наклона FrAMA можно варьировать, если скорость изменения не считается достаточно чувствительной. Использование периода от 13 до 21 при применении подхода, основанного на скорости изменения, может обеспечить больший баланс между реакцией на изменения и снижением уровня шума. Вход в сделку следует осуществлять, когда оба индикатора совпадают, то есть оба имеют положительный или отрицательный наклон. Выход из тренда можно определить как момент выравнивания наклона кривой FrAMA или изменения направления индекса силы, что указывает на истощение тренда.


Прорыв FrAMA с резким увеличением объема индекса силы

Паттерн 4 использует прорыв FrAMA и всплеск индекса силы. Бычий сигнал возникает, когда цена уверенно пробивает FrAMA снизу вверх, как правило, более чем на 1 процент. В это время индекс силы также покажет резкий положительный скачок, примерно вдвое превышающий среднее значение индекса силы, что будет свидетельствовать о высоком объеме покупок. Медвежий сигнал возникает, когда цена пробивает FrAMA на значительный процент ниже, а также когда индекс силы показывает резкий отрицательный скачок, опять же, в 2 раза, что указывает на большой объем продаж. В MQL5 паттерн реализуется следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) > FRM(X()) && Close(X() + 1) <  FRM(X() + 1) && Close(X()) - Close(X() + 1) >= High(X() + 1) - Low(X() + 1) && FRC(X()) >= 2.0 * FRC(X() + 1) && FRC(X() + 1) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) < FRM(X()) && Close(X() + 1) >  FRM(X() + 1) && Close(X()) - Close(X() + 1) <= High(X() + 1) - Low(X() + 1) && FRC(X()) <= 2.0 * FRC(X() + 1) && FRC(X() + 1) < 0.0)
   {  return(true);
   }
   return(false);
}

Паттерн выявляет прорывы, когда цена резко движется выше или ниже FrAMA, а индекс силы подтверждает этот прорыв резким увеличением объема. В условиях нестабильного рынка это, как правило, весьма вероятная ситуация. Прорыв FrAMA сигнализирует о новом тренде, а индекс силы выступает в качестве фильтра для подтверждения. Сочетание индикаторов в этом паттерне идеально подходит для волатильных активов, таких как криптовалюты или акции компаний с малой капитализацией, где всплески объема предшествуют устойчивым движениям. Адаптивность FrAMA обеспечивает своевременное обнаружение прорывов, а индекс силы отфильтровывает ложные прорывы.

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

r4


Поддержка/сопротивление FrAMA с разворотом индекса силы

Паттерн 5 использует FrAMA в качестве поддержки/сопротивления с разворотом индекса силы. Бычий сигнал — это отскок цены от FrAMA, динамического уровня поддержки. В этом случае цена приблизится к FrAMA сверху или коснется ее, а затем отскочит. В таких случаях индекс силы пересекает свою нулевую линию или, в качестве альтернативного варианта, свою экспоненциальную скользящую среднюю с периодом 5/13. Это свидетельствует о росте объема покупок.

Медвежий сигнал возникает, когда цена отталкивается от FrAMA как от динамического сопротивления, то есть когда цена касается или приближается к FrAMA в нисходящем тренде. Индекс силы пересекает нулевую линию или экспоненциальную скользящую среднюю (EMA), что означает рост объема продаж. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) >= FRM(X()) && Close(X() + 1) <=  FRM(X() + 1) && Close(X() + 2) >=  FRM(X() + 2) && FRC(X()) > 0.0 && FRC(X() + 1) < 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) <= FRM(X()) && Close(X() + 1) >=  FRM(X() + 1) && Close(X() + 2) <=  FRM(X() + 2) && FRC(X()) < 0.0 && FRC(X() + 1) > 0.0)
   {  return(true);
   }
   return(false);
}

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

Необходимо провести проверку паттерна на исторических данных, чтобы определить надежность FrAMA в качестве поддержки/сопротивления. Если вам нужны более быстрые подтверждения индекса силы, можно рассмотреть реализацию, использующую экспоненциальную скользящую среднюю силы (Force EMA). Паттерн также можно комбинировать с макростатическими зонами поддержки/сопротивления для достижения более высокой степени слияния. Торговать следует в периоды низкого объема, поскольку индекс силы может отставать. Паттерн также не проходит форвард-тест при обучении за 2023 год и тестировании за 2024 год. Отчет о тестировании за оба периода:

r5


Продолжение тренда FrAMA с коррекцией индекса силы

Паттерн 6 (седьмой по счету) основан на продолжении тренда FrAMA с коррекциями индекса силы. Бычий сигнал возникает, когда цена остается выше FrAMA, подтверждая бычий тренд, а индекс силы снижается к нулевой отметке, возможно, немного опускаясь в отрицательную сторону, но затем восстанавливается после этого снижения и становится положительным. Движение индекса силы обусловлено возобновлением покупательского давления.

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

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) > FRM(X()) && Close(X() + 1) >  FRM(X() + 1) && Close(X() + 2) >  FRM(X() + 2) && FRC(X()) > 0.0 && FRC(X() + 1) <= 0.0 && FRC(X() + 2) >= 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) < FRM(X()) && Close(X() + 1) <  FRM(X() + 1) && Close(X() + 2) <  FRM(X() + 2) && FRC(X()) < 0.0 && FRC(X() + 1) >= 0.0 && FRC(X() + 2) <= 0.0)
   {  return(true);
   }
   return(false);
}

Паттерн также идеально подходит для входа в тренды после коррекции, поскольку FrAMA обеспечивает устойчивость тренда, а индекс силы подтверждает объем. При использовании важно дождаться, пока индекс силы восстановится примерно до нулевого значения, прежде чем принимать какие-либо решения, поскольку тренд, как правило, бывает устойчив. В качестве дополнения можно использовать уровни Фибоначчи, где откаты совпадают с зонами коррекции. Стоп-лоссы можно устанавливать на основе последних экстремальных значений колебаний или ориентируясь на FrAMA.

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

r6

Как обучение, так и тестирование проводились в течение одного года, что, строго говоря, недостаточно для того, чтобы делать долгосрочные выводы. Это особенно касается паттернов, которые не прошли форвард-тест.


Сокращение волатильности FrAMA с расширением индекса силы

Наш восьмой паттерн сочетает в себе сокращение волатильности FrAMA с трендами индекса силы. Бычий сигнал возникает, когда FrAMA выравнивается, что подтверждается либо низким наклоном, либо узким ценовым диапазоном, а индекс силы резко растет от уровня, близкого к нулю, к уровням перекупленности. Медвежий сигнал также возникает, когда FrAMA выравнивается, а индекс силы значительно падает с нуля до уровня перепроданности.

Осциллятор индекса силы отличается от RSI или стохастика тем, что его экстремальные уровни не определяются абсолютными значениями. Экстремальные значения варьируются от актива к активу. Это делает наше определение регионов перекупленности и перепроданности несколько проблематичным с точки зрения программирования. Тем не менее, реализуем паттерн на MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && fabs(FRM(X()) -  FRM(X() + 5)) <= fabs(Close(X()) - Close(X() + 1))  && FRC(X()) > 0.0 && FRC(X() + 1) < 0.0 && FRC(X()) - FRC(X() + 1) >= 2.0 * fabs(FRC(X() + 1)))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && fabs(FRM(X()) -  FRM(X() + 5)) >= fabs(Close(X()) - Close(X() + 1))  && FRC(X()) < 0.0 && FRC(X() + 1) > 0.0 && FRC(X()) - FRC(X() + 1) <= -2.0 * fabs(FRC(X() + 1)))
   {  return(true);
   }
   return(false);
}

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

Оценить пологость FrAMA можно также, рассматривая ее наклон или сравнивая ее изменения с другим индикатором, например, ATR. Здесь ключевое значение имеют пороговые значения индекса силы, и необходимо найти способ его определения, который в нашем случае заключается в оценке величины перемещения относительно нулевой границы. Сочетание этой модели с полосами Боллинджера или каналом Келтнера может помочь подтвердить сокращение волатильности. Стоп-лоссы можно установить в диапазоне консолидации. Этот паттерн также не прошел форвард-тест. Отчет приведен ниже:

r7


Сила тренда FrAMA с фильтром дивергенции индекса силы

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

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_8(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) > Close(X() + 1)  && FRC(X()) > FRC(X() + 1) && FRM(X()) - FRM(X() + 1) >= 2.0 * FRM(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) < Close(X() + 1)  && FRC(X()) < FRC(X() + 1) && FRM(X()) - FRM(X() + 1) <= -2.0 * FRM(X() + 1))
   {  return(true);
   }
   return(false);
}

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

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

r8


Мультитаймфреймная FrAMA с выравниванием индекса силы

Паттерн 9 использует основные принципы работы наших двух индикаторов на двух таймфреймах. Бычий сигнал возникает, когда FrAMA растет как на коротком, так и на длинном таймфреймах, а индекс силы также находится чуть выше нулевой отметки на обоих таймфреймах. Мы внедрили паттерн в целях тестирования, чтобы увеличить таймфрейм до дневного в дополнение к нашему базовому периоду тестирования в 4 часа. В качестве медвежьего сигнала мы увидим медвежий тренд в FrAMA как на основном, так и на более крупном таймфреймах, при этом индекс силы также будет ниже нуля на обоих таймфреймах. Реализация в MQL5:

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalFRM_FRC::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()) > Close(X() + 1) && FRC(X()) > FRC(X() + 1) && FRM(X()) > FRM(X() + 1) && FRC(X()) > FRC(X() + 1) && FRM(X()) > FRM(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()) < Close(X() + 1) && FRC(X()) < FRC(X() + 1) && FRM(X()) < FRM(X() + 1) && FRC(X()) < FRC(X() + 1) && FRM(X()) < FRM(X() + 1))
   {  return(true);
   }
   return(false);
}

Сочетание этих базовых сигналов от двух индикаторов на двух таймфреймах указывает на высокую вероятность успешных сделок. Паттерн 9 усиливает взаимосвязь, согласовывая тренд и объем. Он идеально подходит для свинг-трейдинга и позиционной торговли. Максимальная взаимосвязь способствует уменьшению числа ложных сигналов. Это один из двух паттернов, которые прошли форвард-тест. Тестирование, проведенное в течение 2024 года после оптимизации/обучения в течение 2023 года, дает нам следующий отчет.

r9

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

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

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


Почему сочетание FrAMA и индекса силы может быть проблематичным?

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

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

Вместо того чтобы использовать FrAMA в паре с индексом силы, возможно, лучше рассмотреть вариант его сочетания с другим индикатором, который отражает ортогональную информацию, например, уровни поддержки/сопротивления или импульса. Это могут быть полосы Боллинджера и индекс относительной силы (RSI) соответственно. Подобные комбинации могут обеспечить поступление в модель разнообразных входных данных, что улучшит ее способность прогнозировать движение цен.

Еще одним недостатком может быть сильная зависимость индекса силы от торгового объема, из-за которой мы не можем использовать или получить доступ к реальному объему и, следовательно, вынуждены довольствоваться тиковым. Этот компромисс, безусловно, снижает надежность индекса силы. Кроме того, из-за FrAMA наблюдается задержка и несоответствие чувствительности. Адаптивное сглаживание FrAMA может конфликтовать с быстрой реакцией индекса силы на изменения цен и объемов, что может приводить к противоречивым сигналам в периоды волатильности.

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


Заключение

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

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

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

Прикрепленные файлы |
SignalWZ_65.mqh (20.1 KB)
wz_65.mq5 (7.82 KB)
Особенности написания Пользовательских Индикаторов Особенности написания Пользовательских Индикаторов
Написание пользовательских индикаторов в торговой системе MetaTrader 4
Моделирование рынка (Часть 18): Первые шаги на SQL (I) Моделирование рынка (Часть 18): Первые шаги на SQL (I)
Неважно, какую программу SQL мы будем использовать: MySQL, SQL Server, SQLite, OpenSQL или другую. У всех есть что-то общее, а этот общий элемент — язык SQL. Даже если мы не собираемся использовать WorkBench, можно манипулировать или работать с базой данных непосредственно в MetaEditor или через MQL5 для выполнения действий в MetaTrader 5, но для этого вам понадобятся знания SQL. Итак, здесь мы выучим, как минимум, основы.
Особенности написания экспертов Особенности написания экспертов
Написание и тестирование экспертов в торговой системе MetaTrader 4.
Индикатор CandleCode: Формализация свечных моделей в MQL5 Индикатор CandleCode: Формализация свечных моделей в MQL5
В статье показана практическая реализация CandleCode для MetaTrader 5: расчет кодов свечей по методу Лиховидова с адаптацией порогов к волатильности (Bollinger Bands) и гистограммное отображение. Дополнительно представлен советник, который строит базу исторических паттернов по ZigZag, сравнивает их с текущим "слепком" через ATR и выдает статистику совпадений на панели.