English Deutsch 日本語
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 84): Использование паттернов стохастического осциллятора и FrAMA – Окончание

Возможности Мастера MQL5, которые вам нужно знать (Часть 84): Использование паттернов стохастического осциллятора и FrAMA – Окончание

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

Введение

В предыдущей статье мы рассмотрели первые пять сигнальных паттернов пары индикаторов Stochastic и FrAMA. В рамках ограниченного тестового периода все паттерны, по-видимому, показали прибыльность при форвардном тестировании: обучение проводилось в течение года, а валидация – в течение следующего года.

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

Поэтому для оставшихся пяти сигнальных паттернов этой пары индикаторов сохраняется соответствие "тип актива – рыночный архетип", использованное в предыдущей статье.


Паттерн 5 – пробой плоской линии при низкой волатильности

Шестой по счету паттерн, паттерн 5, предназначен для спокойного рынка или периодов низкой волатильности. Для этого необходимо выявлять зоны сжатия цены, в которых линия FrAMA и сама цена выравниваются перед резким выходом цены в определенном направлении. По сути, паттерн выявляет момент выхода волатильности из длительного сжатия. Такие режимы характерны для USDJPY – инструмента, протестированного в предыдущей статье. Для этой валютной пары характерно чередование резких импульсов и продолжительных консолидаций. Реализуем это на языке MQL5 следующим образом:

Сигнал BUY (паттерн 5): плоская FrAMA + пересечение Stochastic снизу вверх ниже уровня 30

p5buy

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY)
   {  return((FlatFrama(X()) && CrossUp(K(X()), D(X()), K(X() + 1), D(X() + 1)) && K(X()) < 30)  ? true : false);
   }
   else if(T == POSITION_TYPE_SELL)
   {  return((FlatFrama(X()) && CrossDown(K(X()), D(X()), K(X() + 1), D(X() + 1)) && K(X()) > 70) ? true : false);
   }
   return(false);
}

Внутренняя логика этого паттерна основана на методе FlatFrama(), код которого был приведен в предыдущей статье. Эта функция измеряет, насколько FrAMA плоская, с учетом допуска, который задается гиперпараметром m_pips. Для полноты ниже приведена эта же функция:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::FlatFrama(int ind)
{  const double tol = m_pips * m_symbol.Point();
   for(int i = ind; i < m_past+ind; i++)
      if(MathAbs(FrAMASlope(i)) > tol) return false;
   return true;
}

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

Пара USDJPY выбрана для этого паттерна, поскольку для нее характерна консолидация в узких диапазонах между макроэкономическими событиями. Такая динамика создает подходящую среду для моделей на основе всплеска волатильности. Адаптивность FrAMA подтверждает фазы консолидации USDJPY, а повторная активация Stochastic выявляет ранний направленный уклон. При обучении на этой паре такие ситуации неоднократно возникали, особенно в январе 2024 года, в период решений Банка Японии по денежно-кредитной политике. Это создало идеальные условия для торговли при низкой волатильности. Однако при форвардном тестировании после 2024 года начался ожидаемый период высокой волатильности, но характер волатильности оказался преимущественно нестабильным. Поэтому условия для таких сделок исчезли. Это выявило зависимость паттерна от конкретных рыночных режимов и частично объясняет, почему форвардное тестирование не принесло прибыли, как показано в отчете ниже.

r5

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

Паттерн 6 – возобновление тренда, формации "W" и "M"

Этот паттерн предназначен для выявления возобновления тренда после коррекции. Повторяющиеся формации моментума в виде "W" для бычьего сценария и "M" для медвежьего на Stochastic позволяют выявлять точки, где моментум снижается, стабилизируется, а затем возобновляется в направлении основного тренда. Наклон FrAMA используется как фильтр направления, поэтому действительными считаются только сигналы, согласованные с преобладающим адаптивным трендом. Теоретически это классический алгоритм продолжения тренда, который хорошо подходит для золота, где часто формируются многоэтапные направленные волны. Реализуем это на языке MQL5 следующим образом:

Сигнал SELL (паттерн 6): пик "M" на Stochastic выше уровня 80 + наклон FrAMA вверх

p6sell

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::IsPattern_6(ENUM_POSITION_TYPE T)
{  bool W = (K(X() + 2) < 20 && K(X() + 1) > K(X() + 2) && K(X()) < 20 && K(X()) > K(X() + 1));
   bool M = (K(X() + 2) > 80 && K(X() + 1) < K(X() + 2) && K(X()) > 80 && K(X()) < K(X() + 1));
   if(T == POSITION_TYPE_BUY)
   {  return((FrAMASlope(X()) < 0 && W)  ? true : false);
   }
   else if(T == POSITION_TYPE_SELL)
   {  return((FrAMASlope(X()) > 0 && M) ? true : false);
   }
   return(false);
}

Для открытия длинной позиции ищем формацию "W": линия K Stochastic формирует два минимума ниже 20, причем второй минимум выше первого. Для открытия короткой позиции ищем формацию "M": линия K Stochastic формирует два максимума выше 80. Как и в бычьем сценарии, второй максимум должен быть ниже первого. В данном случае наклон FrAMA служит фильтром рыночного режима. Он проверяет, формируются ли эти паттерны в фазе коррекции. Паттерн выявляет момент, когда пауза в моментуме исчерпана и основной тренд готов возобновиться. Он предназначен для повторного входа по ходу тренда.

Золото выбрано для тестирования этого сигнального паттерна благодаря его особенностям трендового движения. Золото часто подходит для повторного входа в позицию. На золоте часто возникают длинные импульсные волны с небольшими откатами – подходящая среда для формаций "W/M" на Stochastic. Активность институциональных и розничных участников на рынке золота часто приводит к тому, что осцилляторы моментума, включая Stochastic, показывают повторяющиеся гармонические структуры в паузах внутри тренда. Наклон FrAMA фильтрует показания Stochastic, оставляя сигналы, согласованные с основным трендом. При обучении и оптимизации сигнальный паттерн выглядел многообещающе и успешно выявлял такое волновое продолжение тренда. Однако позднее выяснилось, что этот результат зависит от стабильности циклов волатильности. При форвардном тестировании эти циклы существенно изменяются, что отражено в приведенных ниже результатах:

r6

Итак, паттерн 6 хорошо работает в структурированных трендах, как это было в 2023 году, но хуже справляется с периодами переменной волатильности, как показал 2025 год. "Ритм" золота в 2024-2025 годах изменился: откаты стали немного глубже и менее симметричными, что нарушило геометрию паттерна "W/M". Убыточное форвардное тестирование показывает ограничения статического геометрического распознавания даже при использовании двоично закодированных сигналов. Как и для паттерна 5, для паттерна 6 можно использовать адаптивный период анализа с числом баров, скорректированным по волатильности, либо динамический порог наклона FrAMA для повышения устойчивости.

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



Паттерн 7 – разворот при касании FrAMA с возвратом к среднему

Если паттерн 6 чувствителен к симметрии волатильности, то следующий паттерн, напротив, рассчитан на работу в таких условиях. Паттерн 7 использует логику отскока при возврате к среднему: она срабатывает, когда цена касается адаптивной средней FrAMA, а Stochastic выходит из экстремальной зоны. Этот сигнальный паттерн выявляет моменты, когда цена ненадолго возвращается к равновесию перед возобновлением колебательного цикла. Это разновидность стратегии "покупки на снижении" или "продажи на ралли".

Для тестирования этого паттерна выбрано золото, поскольку на нем часто чередуются направленные импульсы и спокойные периоды консолидации. Для золота характерны последовательности касаний FrAMA и отскоков от нее. Это особенно заметно при изучении графика начиная с 1980 года: периоды консолидации здесь весьма продолжительны. С апреля 1980 года по июль 2006 года золото фактически находилось в фазе консолидации. Аналогичным образом с июля 2012 года по июль 2020 года сформировался еще один диапазон консолидации. В настоящее время на старшем таймфрейме наблюдается направленное движение, а цена находится на абсолютных максимумах. На этом фоне FrAMA служит адаптивной средней, а динамика линии K Stochastic помогает точнее определять краткосрочные точки входа. Реализуем это на языке MQL5 следующим образом:

Сигнал BUY (паттерн 7): цена касается FrAMA + Stochastic поднимается выше уровня 30

p7buy

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::IsPattern_7(ENUM_POSITION_TYPE T)
{  bool touch = (Low(X()) <= FrAMA(X()) && High(X()) >= FrAMA(X()));
   if(T == POSITION_TYPE_BUY)
   {  return((touch && K(X() - 1) < 20 && K(X()) > 30)  ? true : false);
   }
   else if(T == POSITION_TYPE_SELL)
   {  return((touch && K(X() - 1) > 80 && K(X()) < 70) ? true : false);
   }
   return(false);
}

Приведенный выше код проверяет, пересекает ли диапазон свечи линию FrAMA. Это гарантирует, что цена действительно коснулась адаптивной средней. Для сигнала BUY линия K Stochastic должна подняться с уровня ниже 20 выше уровня 30. Это означает выход из зоны перепроданности. Для сигнала SELL буфер K должен развернуться вниз от уровня выше 80 и закрыться на уровне 70 или ниже. Это также сигнализирует о начале возврата к среднему из зоны перекупленности. Код определяет, коснулась ли цена средней и развернулся ли моментум. Это может быть надежным условием для контртрендовой сделки, особенно на хаотичном рынке.

Золото выбрано из-за продолжительных периодов консолидации и важности своевременного выявления их перехода в тренд. FrAMA плавно адаптируется к циклам волатильности золота: ее средний уровень пересчитывается в реальном времени. Даже на тестируемом 4-часовом таймфрейме золото после импульсных движений часто возвращается к адаптивной средней. Касания FrAMA обычно совпадают с истощением спекулятивных позиций и изменением моментума. Поэтому Stochastic подтверждает новый моментум, направленный от средней, действует как фильтр и снижает риск входа против продолжающегося тренда. После обучения в 2023-2024 годах отчет по форвардному тестированию показал прибыль, как видно ниже:

r7

Выбранные входные параметры при обучении паттерна 7 обеспечили умеренную частоту сделок – примерно одну сделку каждые 4-5 баров, то есть почти одну сделку в день. Это указывает на эффективную фильтрацию: при использовании комплексного критерия, обычно ориентированного на значение 100, оптимизатор сошелся на значении 73. Теоретически это должно указывать на стабильный вклад в общую прибыльность. В ходе тестирования эффективность, по-видимому, достигла пика с октября 2023 года по март 2024 года – в период колебательных консолидаций после тренда. Это подтверждает, что паттерн построен на логике возврата к среднему.

При форвардном тестировании сигнальный паттерн 7 оставался надежным, несмотря на изменение волатильности. Условие касания FrAMA автоматически масштабировалось в соответствии с амплитудой движения. В начале 2025 года возникло несколько типичных ситуаций: золото корректировалось внутри диапазона, затем цена пересекала FrAMA, а Stochastic разворачивался вверх. Это дало множество четких разворотов. Важно, что предыдущее значение K давало запаздывающее подтверждение, однако это не приводило к потере прибыли из-за поздних входов.

Итак, паттерн 7 показывает, что логика возврата к среднему может работать с адаптивными средними, если она представлена в виде дискретной булевой логики. То есть паттерн считается сформированным только тогда, когда одновременно выполняются несколько условий индикаторов. В сочетании с сигналом из предыдущей статьи – вероятно, с паттерном 1 – этот паттерн может образовать устойчивую основу для переключения между рыночными режимами.



Паттерн 8 – моментум пересечения средней линии при высокой волатильности

Если паттерн 4 из предыдущей статьи выявлял границы всплесков волатильности, то девятый по счету сигнальный паттерн, паттерн 8, сосредоточен на внутреннем переходе моментума после такого всплеска. Этот паттерн выявляет моменты, когда при высокой волатильности цена с новой силой вновь пересекает среднюю линию FrAMA. Это часто означает, что волатильность не только растет, но и вновь приобретает направленность.

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

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::IsPattern_8(ENUM_POSITION_TYPE T)
{  // Midline (50) cross via synthetic “moving” reference
   bool crossUpMid   = (K(X() + 1) <= 50.0 && K(X()) > 50.0);
   bool crossDownMid = (K(X() + 1) >= 50.0 && K(X()) < 50.0);
   if(T == POSITION_TYPE_BUY)
   {  return((FramaTurningUp()   && crossUpMid)  ? true : false);
   }
   else if(T == POSITION_TYPE_SELL)
   {  return((FramaTurningDown() && crossDownMid) ? true : false);
   }
   return(false);
}

Как показано выше, этот сетап сформирует булев сигнал, когда цена закрытия пересечет FrAMA в направлении, совпадающем с направленностью Stochastic относительно средней линии. Сигнал BUY формируется, когда линия K Stochastic находится выше 55, подтверждая продолжение восходящего моментума. Сигнал SELL формируется, когда линия K Stochastic пересекает уровень 45 и закрывается ниже него, подтверждая сохранение давления продавцов. Девятый паттерн помогает избегать избыточного реагирования на краткосрочные чрезмерные отклонения цены: вместо типичных экстремальных зон он использует средние уровни осциллятора. Паттерн отслеживает устойчивое продолжение движения, вызванного волатильностью.

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

Адаптивность FrAMA обеспечивает, что средняя линия будет отражать преобладающую структурную среднюю даже при смене рыночного режима. Уровень Stochastic около 50 подтверждает, имеет ли это движение потенциал для продолжения или является лишь проявлением шума. Форвардное тестирование этого паттерна принесло прибыль, как показано в отчете ниже:

r8

При оптимизации и обучении лучшие наборы входных параметров показали устойчивую прибыльность в обучающем периоде при соответствующих условиях волатильности. Наилучшие результаты были получены в двух периодах: в конце 2023 года и в начале 2024 года. Это стало результатом работы с крупными направленными движениями после длительного сжатия волатильности. Использование уровней K в диапазоне 45/55 подтвердило, что моментум пересечения средней зоны может быть более устойчивым и эффективным, чем сигналы экстремальных зон Stochastic в периоды высокой волатильности.

Форвардное тестирование принесло прибыль, особенно в начале 2025 года, когда Банк Японии повысил процентную ставку с 0,25% до 0,5%. При высоком курсе USDJPY продолжение направленного движения в тот период было неравномерным. Этот сигнальный паттерн отсеивал ложные сигналы и срабатывал только при выполнении достоверных условий пересечения моментума. Примечательно, что просадка оставалась умеренной – около 10,4%. Это подтверждает способность паттерна сохранять результативность при изменении сценариев волатильности.


Паттерн 9 – разворот при декоррелированном чрезмерном отклонении

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

Сигнал SELL (паттерн 9): восходящая FrAMA + Stochastic > 90 и снижается

p9sell

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalFrAMA_Stochastic::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY)
   {  return((FrAMASlope(X()) < 0 && K(X()) < 10 && K(X()) >= K(X() + 1))  ? true : false);
   }
   else if(T == POSITION_TYPE_SELL)
   {  return((FrAMASlope(X()) > 0 && K(X()) > 90 && K(X()) <= K(X() + 1)) ? true : false);
   }
   return(false);
}

Сигнал BUY формируется, когда цена значительно опускается ниже FrAMA, а Stochastic входит в зону глубокой перепроданности. Сигнал SELL формируется, когда цена находится значительно выше адаптивной средней, а осциллятор входит в зону крайней перекупленности. Для количественной оценки таких чрезмерных отклонений цены используется коэффициент 3x для расстояния в пунктах. Этот коэффициент обеспечивает срабатывание сигнала только при выраженных отклонениях. Осциллятор также должен подтвердить, что внутренний моментум исчерпан, чтобы сигнал указывал на высокую вероятность разворота.

Для тестирования используется индекс SPX 500: благодаря составной природе он демонстрирует синхронные чрезмерные отклонения составляющих его секторов перед возвратом к среднему. Такие чрезмерные отклонения цены, вызванные действиями участников рынка, создают подходящую среду для тестирования контртрендовых сигналов, подобных этому паттерну. Предполагается, что широкие индексы нередко демонстрируют декорреляцию, вызванную ротацией секторов: например, ценовое движение технологического и энергетического секторов расходится, хотя индекс обновляет максимумы. Однако этот паттерн, как и паттерны 5 и 6, не показал положительного результата при форвардном тестировании. Это может объясняться структурной устойчивостью SPX 500: ребалансировка ETF может ограничивать продолжительность такой декорреляции. Поэтому то, что изначально выглядит как чрезмерное отклонение цены, может быстро утратить силу и перейти в продолжение моментума. Это может приводить к преждевременным входам на разворот. Отчет по форвардному тестированию приведен ниже:

r9

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

При форвардном тестировании дело обернулось совсем иначе. В 2025 году рынок характеризовался ротацией секторов: цена регулярно превышала отклонение 3x, оставаясь в продолжительных трендах. Буфер K Stochastic в основном оставался вблизи экстремальных значений или на них, что опровергло предположение о том, что перекупленность или перепроданность означает истощение движения. Вместо выявления разворотов двоичное правило приводило ко входу против моментума при продолжении движения, вызванном макроэкономическими факторами. Итак, паттерн 9 принял сохраняющуюся волатильность за истощение движения – это типичная ошибка логики чрезмерного отклонения на динамичном рынке.



Сравнительный анализ

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

Каждый паттерн закодирован как булево условие: true возвращается только при выполнении всех его условий, иначе – false. Поэтому такой подход действует как векторизованный фильтр рыночного шума. Это позволяет динамически преобразовывать отфильтрованные условия графика в вычислительно эффективное двоичное состояние. Эти двоичные представления, то есть результаты работы паттернов, легко использовать в моделях машинного обучения. В следующей статье рассмотрим обучение на основе инференса. Они входят в пайплайн, нормализующий данные для модели прогнозирования. Результаты форвардного тестирования десяти сигнальных паттернов приведены в таблице ниже.

паттерн тип рынка тестируемый актив профит-фактор при оптимизации профит-фактор при форвардном тестировании статус комментарий
0 трендовый XAUUSD 1.66 1.48 Тест пройден успешно Устойчивое продолжение направленного движения
1 склонный к возврату к среднему XAUUSD 1.52 1.39 Тест пройден успешно Устойчивое восстановление колебаний
2 автокоррелированный SPX 500 1.58 1.33 Тест пройден успешно Выявляет синхронную ротацию
3 декоррелированный SPX 500 1.49 1.28 Тест пройден успешно Надежный контекстный фильтр
4 высокая волатильность USDJPY 1.72 1.43 Тест пройден успешно Точное выявление импульсов
5 низкая волатильность USDJPY 1.34 0.87 Тест не пройден Переобучение на спокойных рыночных режимах
6 трендовый XAUUSD 1.63 0.92 Тест не пройден Несоответствие статичного паттерна рынку
7 склонный к возврату к среднему XAUUSD 1.59 1.44 Тест пройден успешно Отличная реакция на возврат к среднему
8 высокая волатильность USDJPY 1.74 1.52 Тест пройден успешно Продолжение движения на второй фазе волатильности
9 декоррелированный SPX 500 1.47 0.84 Тест не пройден Ошибочное определение структурного истощения


Заключение

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

Прибыльные паттерны 0, 1, 2, 3, 4, 7 и 8 показали большую надежность и адаптивность. Однако представленные результаты получены на ограниченном периоде тестирования и в очень специфических рыночных условиях, поэтому их информативность ограничена. Как всегда, читателям следует самостоятельно проверять результаты, прежде чем учитывать их или опираться на них. Рыночная динамика постоянно меняется: то, что хорошо работает в одной фазе, может дать обратный результат в другой. Любые выводы необходимо проверять независимым тестированием на расширенных данных и дополнительными форвардными симуляциями до запуска в реальной торговле.

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


Отказ от ответственности

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

имя описание
WZ_83.mq5 Советник, собранный Мастером, в заголовке которого перечислены имена и расположение включенных файлов
SignalWZ_83.mqh Файл пользовательского класса сигнала, используемый Мастером MQL5 для создания советника

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

Прикрепленные файлы |
WZ_83.mq5 (8.5 KB)
SignalWZ_83.mqh (50.52 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (3)
CapeCoddah
CapeCoddah | 16 окт. 2025 в 19:40

Здравствуйте, Стивен,

Очень интересная статья, особенно паттерн 0.

Я скачал ваш код из предыдущей статьи, скомпилировал и запустил его на четырёх основных валютах, торгуемых с долларом США: EUR, GBP, CAD, JPY, на таймфрейме H4 за период с 1 января 2025 года по 10 января 2025 года, и ВСЕ стратегии принесли убыток.

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

Спасибо,

CapeCoddah

Serhii Pashchenko
Serhii Pashchenko | 5 авг. 2026 в 11:13
Здесь, на мой взгляд, важно разделить две вещи.

Тест за период с 1 по 10 января слишком короткий, чтобы по нему оценивать устойчивость стратегии. На H4 это очень небольшая выборка, и результат за несколько торговых дней может сильно зависеть от конкретного рыночного режима.

Но одновременно возникает вопрос воспроизводимости результатов статьи.

Указано, что обучение выполнялось на одном году, а validation — на следующем, причём для различных рыночных архетипов подбирались соответствующие активы. Поэтому недостаточно просто запустить исходный код на EUR, GBP, CAD и JPY с произвольными или стандартными настройками.

Для независимой проверки желательно указать по каждому паттерну:

— точный symbol;
— timeframe;
— период обучения;
— период validation;
— полный набор input-параметров;
— критерий оптимизации;
— spread, commission и режим моделирования;
— какие именно паттерны были включены;
— использовались ли разные параметры для каждого инструмента.

Также полезно пояснить технический механизм выбора паттернов. Они включаются отдельными input-переключателями, bit mask, весами сигналов или каждый паттерн реализован как отдельный класс?

Что касается объединения нескольких статей в одном советнике, это возможно архитектурно, но требуется определить не только подключение модулей, а и правила их совместной работы:

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

Поэтому главный вопрос к автору: можете ли Вы опубликовать точную конфигурацию хотя бы для одного показанного forward-test результата, чтобы другой пользователь мог воспроизвести его без скрытых предположений?
Stephen Njuki
Stephen Njuki | 14 сент. 2026 в 16:37

Здравствуйте,

Только что увидел это. Возможно, это зависит от данных брокера, которые вы используете.

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

Автоматизация торговых стратегий на MQL5 (Часть 41): Стратегия Candle Range Theory (CRT) — накопление, манипуляция и распределение (AMD) Автоматизация торговых стратегий на MQL5 (Часть 41): Стратегия Candle Range Theory (CRT) — накопление, манипуляция и распределение (AMD)
В этой статье мы разработаем на MQL5 торговую систему на основе стратегии Candle Range Theory (CRT). Она определяет диапазоны накопления на заданном таймфрейме, выявляет пробои с фильтрацией по глубине манипуляции и подтверждает разворот для открытия сделок в фазе распределения. Система поддерживает динамический или статический расчёт Stop Loss и Take Profit по соотношению риска и прибыли, необязательный трейлинг-стоп и ограничение количества позиций в каждом направлении.
Моделирование рынка: Position View (XI) Моделирование рынка: Position View (XI)
В этой статье я покажу вам, уважаемый читатель, как можновыбирать объекты, которые мы создаём на графике модифицировать индикатор позиции, чтобы он мог выполнять гораздо больше функций, чем это было предусмотрено изначально. Мы рассмотрим, как реализовать возможность перемещения цен и создания ценовых линий непосредственно на графике. Многим это покажется сложным для решения. Однако вы увидите, что мы сделаем это с минимальными усилиями. Вам нужно всего лишь немного подумать.
Изучение Стандартной библиотеки MQL5 (Часть 3): Советник на основе канала стандартного отклонения Изучение Стандартной библиотеки MQL5 (Часть 3): Советник на основе канала стандартного отклонения
В этом обсуждении мы будем разрабатывать советник, используя классы CTrade и CChartObjectStdDevChannel, и применим несколько фильтров для повышения потенциальной прибыльности. На этом этапе мы применим на практике то, что обсуждали ранее. Кроме того, я представлю еще один простой подход, который поможет вам лучше понять стандартную библиотеку MQL5 и лежащую в ее основе кодовую базу. Присоединяйтесь, чтобы посмотреть, как эти идеи работают на практике.
Автоматизация торговых стратегий на MQL5 (Часть 40): Торговля по уровням коррекции Фибоначчи с пользовательскими уровнями Автоматизация торговых стратегий на MQL5 (Часть 40): Торговля по уровням коррекции Фибоначчи с пользовательскими уровнями
В статье разрабатывается советник MQL5 для торговли по уровням коррекции Фибоначчи. Пользовательские уровни, например 50% и 61,8%, рассчитываются по диапазону дневной свечи или массиву данных за выбранный период. Направление определяется по соотношению цен закрытия и открытия; позиции открываются при пересечении уровней с ограничением числа сделок, необязательным закрытием при новом расчёте, трейлинг-стопом в пунктах и буферами SL/TP в процентах от диапазона.