Стратегия форекс «Пробойный Фрактал»

Стратегия форекс «Пробойный Фрактал»

Стратегия форекс «Пробойный Фрактал» — простая пробойная торговая система форекс для валютной пары EURUSD (H1), основанная на 2-х индикаторах: скользящей средней и фракталах , а так же правилах входа в рынок и выхода из него; стратегию прислал трейдер Алексеев Алекс и так же она была доработана и оптимизирована по параметрам программистом, который к ней так же и написал советник форекс (тест смотрите в конце стратегии форекс).

Рекомендую выбрать для торговли одного из Брокеров Forex с терминалом МetaTrader 4 ⇒

Прежде всего устанавливаем на график валютной пары EURUSD (H1) следующие индикаторы форекс:

1) скользящую среднюю Moving Average: метод МА — Smoothed, применить к Close, период 135

2) Фракталы Билла Вильямса

Условия заключения сделок в стратегии форекс «Пробойный Фрактал» достаточно просты:

Рассмотрим 2 варианта, на покупки и продажу более подробно.

Для заключения сделок на ПОКУПКУ:

1) Цена находится выше скользящей средней — торгуем только на покупку и другие варианты сделок не рассматриваем!

2) при образовании фрактала вверх выше установленной скользящей средней с периодом 135, ставим отложенный Buy Stop ордер на покупку на уровень фрактала

3) Устанавливаем тэйк-профит на расстоянии 115 пунктов (для 4-х значного Брокера форекс, типа Forex4you, для 5-ти значных брокеров, типа Альпари, необходимо к всем параметрам стратегии добавить 0 в конце, то есть будет 1150 пунктов)

Стратегия форекс

4) стоп-лосс устанавливаем на расстоянии 65 пунктов / 650 (для пятизнака)

5) если ордер не открылся (активировался) и образовался новый фрактал на графике, то удаляем отложенный ордер и устанавливаем новый, по последнему фракталу с теми же параметрами.

6) ордера на покупку при достижении прибыли в 30 /300 пунктов устанавливаем на трейлинг-стоп

Для сделок на ПРОДАЖУ:

1) Цена находится ниже установленной скользящей средней — торгуем только на продажу и другие варианты сделок не рассматриваем!

2) при образовании фрактала вниз ниже установленной скользящей средней, устанавливаем отложенный ордер Sell Stop на продажу на уровень фрактала

3) Устанавливаем тэйк-профит на расстоянии 120 пунктов / 1200 пунктов

Пробойный Фрактал - сделки на продажу

4) стоп-лосс устанавливаем на расстоянии 35 пунктов от отложенного ордера / 350

5) если ордер не открылся и образовался новый фрактал на графике, то удаляем отложенный ордер и устанавливаем новый, по последнему фракталу с теми же параметрами для сделок на продажу.

6) ордера на продажу при достижении прибыли в 80 /800 пунктов устанавливаем на трейлинг-стоп

Дополнительное условия стратегии форекс:

1) Открытие ордеров происходит ТОЛЬКО с 6.00 до 12.00 по времени терминала Альпари (не зависимо от зимнего или летнего времени), в другое время не торгуем и если ордера не активировались до этого времени, удаляем их!

2) Можно открывать несколько ордеров в одном направлении, если есть еще не закрытые, но при этом рекомендовано торговать минимальным лотом.

  • К этой стратегии форекс вы можете скачать шаблон MetaTrader 4 — probojnij_fractal.tpl (предварительно разархивируйте шаблон!)

Видео стратегия форекс «Пробойный Фрактал»:

К этой стратегии Вы можете СКАЧАТЬ абсолютно бесплатно — Советник форекс FRAC

Тест советника форекс FRAC

Если следовать всем правилам стратегии форекс, то с 2010 года при тесте советника форекс FRAC на интервале H1 , лот 0.1 (фиксированный), получам следующий отчет:

Разработка торговой системы по индикатору фракталов Fractals

Разработка торговой системы по индикатору фракталов Fractals

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

  1. Определение Фракталов
  2. Стратегии по индикатору Fractals
  3. Схемы стратегий на основе индикатора Fractals
  4. Торговые системы, работающие по фракталам
  5. Заключение

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

Для написания кодов в статье будем использовать язык программирования MQL5 (MetaQuotes Language), встроенный в торговый терминал MetaTrader 5. Если вы не знаете, как загрузить или использовать MetaTrader 5 и MQL5, почитайте раздел «Как написать MQL5-код в редакторе MetaEditor» в ранней статье. Кстати, читателям я советую самостоятельно применять все, о чем мы здесь говорим, особенно если ваша цель — развивать навыки написания кодов.

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

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

Определение Фракталов

Индикатор фракталов Fractals разработал Билл Вильямс. Он создал его как попытку предсказать потенциальное движение цены на основе бычьих или медвежьих сигналов. Бычий сигнал указывает на потенциальное движение вверх, а медвежий сигнал указывает на потенциальное движение вниз. Можно сказать, что индикатор пытается предугадать максимумы и минимумы на графике. Сигналы отображаются на графике в виде стрелок выше и ниже цены.

Индикатор формирует стрелки двух типов: стрелки восходящего фрактала и нисходящего. Так на основе каких расчетов индикатор генерирует соответствующие сигналы и стрелки?

Для этого индикатор ищет определенные паттерны, сформированные в направлении роста или падения.

Вот такой паттерн должен сформироваться для фрактала вверх:

  • Серия из минимум пяти последовательных свечей или баров.
  • Самый высокий максимум из пяти свечей должен быть в центре (третья свеча).
  • Максимумы с каждой стороны это центральной свечи должны быть ниже.
  • После закрытия пятой свечи в таком формировании над третьей свечой появится направленная вверх фрактальная стрелка.

Для формирования противоположного фрактала вниз паттерн будет таким:

  • Серия из минимум пяти последовательных свечей или баров.
  • Самый низкий минимум из пяти свечей должен быть в центре (третья свеча).
  • Минимумы с каждой стороны это центральной свечи должны быть выше.
  • После закрытия пятой свечи в таком формировании над третьей свечой появится направленная вниз фрактальная стрелка.

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

Вставка —> Индикаторы —> Bill Williams —> Fractals

 Запуск встроенного индикатора Fractals

После выбора индикатора из списка откроется окно параметров:

 Параметры индикатора Fractals

1 — цвет стрелок

Выбираем подходящие настройки, нажимаем OK, и индикатор запустится на графике:

 Индикатор Fractals на графике

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

Стратегии по индикатору Fractals

Далее рассмотрим примеры простых стратегий на основе индикатора Fractals, которые помогут понять, как можно использовать этот индикатор. Будем использовать фракталы отдельно, а затем посмотрим варианты использования его в комбинации с другими техническими индикаторами. Такой подход позволит получить больше информации и сделать сигналы более точными.

Стратегия первая: максимумы и минимумы фракталов

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

Стрелка внизу —> Fractals Low

Стрелка сверху —> Fractals High

Стратегия вторая: Fractals и скользящая средняя

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

Цена закрытия > MA + появилась нижняя стрелка —> сигнал на покупку

Стратегия третья: Fractals и Alligator

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

Линия губ > линии зубов и челюстей, линия зубов > линии челюстей, цена закрытия > линии зубов, нижняя стрелка Fractals —> сигнал на покупку

Схемы стратегий на основе индикатора Fractals

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

1. Фрактальные максимумы и минимумы

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

В другом случае, если значение fracDown выше нуля или если его значение непустое, а fracUp — пустое, торговая система должна вернуть сигнал минимума в виде комментария на графике со следующими значениями:

Схема такой стратегии показана на рисунке ниже:

Схема стратегии Fractals максимумы и минимумы

2. Fractals и скользящая средняя

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

    • Цена закрытия
    • Значение экспоненциальной скользящей средней EMA
    • Значение fracDown
    • Значение fracUp

    Если цена закрытия выше значения EMA, а значение fracDown непустое, сигнал, возвращаемый системой, будет таким:

      • Покупка
      • Текущая EMA
      • Минимум Fractals: n

      И наоборот, если цена закрытия ниже значения средней EMA, а значение fracUp непустое, система вернет противоположный сигнал и выведет значения:

        • Продажа
        • Текущая EMA
        • Максимум Fractals: n

        Так выглядит схема для разработки этой системы:

        Схема стратегии Frac и MA

        3. Fractals и Alligator

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

          • Значение линии губ
          • Значение линии зубов
          • Значение линии челюстей
          • Цена закрытия
          • Значение fracDown
          • Значение fracUp

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

            • Покупка
            • Значение Jaws n
            • Значение Teeth n
            • Значение Lips n
            • Минимум Fractals: n

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

              • Продажа
              • Значение Jaws n
              • Значение Teeth n
              • Значение Lips n
              • Максимум Fractals: n

              Так выглядит схема для разработки этой системы:

              Схема стратегии Frac и Alligator

              Торговые системы, работающие по фракталам

              В этом разделе мы с вами шаг за шагом разберем, как написать на MQL5 торговые системы на основе показателей от этого индикатора и использовать их в MetaTrader 5. Начнем с простой системы Fractals, которая будет выводить на график комментарий со значениями индикатора фракталов.

              Для этого создадим массивы для фракталов вверх и вниз с помощью функции double.

              double fracUpArray[]; double fracDownArray[];

              Устанавливаем сортировку данных в массиве с помощью функции ArraySetAsSeries: Параметры функции:

              • array[] — созданные массивы fracUpArray и fracDownArray.
              • flag — флаг установим true.
              ArraySetAsSeries(fracUpArray,true); ArraySetAsSeries(fracDownArray,true);

              Определяем индикатор фракталов с помощью функции iFractals, которая возвращает хэндл индикатора. Параметры функции:

              • symbol — символ для расчетов; _Symbol означает символ текущего графика.
              • period — период для расчетов, _Period означает текущий таймфрейм.
              int fracDef=iFractals(_Symbol,_Period);

              Получаем данные и сохраняем результат с помощью функции CopyBuffer. Параметры функции:

              • indicator_handle — хендл индикатора, fracDef
              • buffer_num — индикаторные буферы, у нас это будут UPPER_LINE для верхних и LOWER_LINE для нижних.
              • start_pos — установим позицию начала расчета, укажем 0
              • count — количество данных для копирования, укажем 3
              • buffer[] — массив, в который будут скопированы данные (fracUpArray, fracDownArray).
              CopyBuffer(fracDef,UPPER_LINE,2,1,fracUpArray); CopyBuffer(fracDef,LOWER_LINE,2,1,fracDownArray);

              Получаем значения максимума и минимума фракталов.

              double fracUpValue=NormalizeDouble(fracUpArray[0],5); double fracDownValue=NormalizeDouble(fracDownArray[0],5);

              Возвращаем ноль, если у fracUpValue и fracDownValue пустые значения.

              if(fracUpValue==EMPTY_VALUE) fracUpValue = 0; if(fracDownValue==EMPTY_VALUE) fracDownValue = 0;

              Используем функцию Comment для создания комментария к графику с текущим значением фракталов:

              Comment("Fractals Up Value string">"n", "Fractals Down Value code">//+------------------------------------------------------------------+ //| Simple Fractals System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() < //creating price array double fracUpArray[]; double fracDownArray[]; //Sorting data ArraySetAsSeries(fracUpArray,true); ArraySetAsSeries(fracDownArray,true); //define frac int fracDef=iFractals(_Symbol,_Period); //define data and store result CopyBuffer(fracDef,UPPER_LINE,2,1,fracUpArray); CopyBuffer(fracDef,LOWER_LINE,2,1,fracDownArray); //get values of fracUp and fracDown double fracUpValue=NormalizeDouble(fracUpArray[0],5); double fracDownValue=NormalizeDouble(fracDownArray[0],5); //returning zero if there is empty value of fracUp if(fracUpValue==EMPTY_VALUE) fracUpValue = 0; //returning zero if there is empty value of fracDown if(fracDownValue==EMPTY_VALUE) fracDownValue = 0; //comment on the chart Comment("Fractals Up Value string">"n", "Fractals Down Value comment">//+------------------------------------------------------------------+ 

              После этого компилируем код советника, и он появляется в окне Навигатора в терминале:

               Советник Fractals в Навигаторе

              Запускаем на нужном графике двойным кликом на файле или перетаскиванием. После этого появится окно советника.

               Окно советника Simple Fractals

              В этом окне разрешаем автоматическую торговлю «Allow Algo Trading», нажимаем ОК, и программа запустится на графике, как показано ниже:

              Советник Simple Fractals на графике

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

               Сигналы советника Simple Fractals

              В левом верхнем углу графика отображаются два значения:

              • Fractals Up = n
              • Fractals Down = 0

              В этом примере значение Fractals Down равно нулю, поскольку у нас есть значение Fractals up.

               Сигналы советника Simple Fractals 2

              Имеем два значения:

              • Fractals Up = 0
              • Fractals Down = n

              Но значение Fractals Up равно нулю, так как у нас есть значение Fractals down.

              1. Фрактальные максимумы и минимумы

              Ниже показан полный код торговой системы по максимумам и минимумам фракталов.

              //+------------------------------------------------------------------+ //| Fractals highs and lows.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() < //creating arrays double fracUpArray[]; double fracDownArray[]; //Sorting data ArraySetAsSeries(fracUpArray,true); ArraySetAsSeries(fracDownArray,true); //define frac int fracDef = iFractals(_Symbol,_Period); //define data and store result CopyBuffer(fracDef,UPPER_LINE,2,1,fracUpArray); CopyBuffer(fracDef,LOWER_LINE,2,1,fracDownArray); //define values double fracUpValue = NormalizeDouble(fracUpArray[0],5); double fracDownValue = NormalizeDouble(fracDownArray[0],5); //returning zero in case of empty values if(fracUpValue ==EMPTY_VALUE) fracUpValue = 0; if(fracDownValue ==EMPTY_VALUE) fracDownValue = 0; //conditions of the strategy and comment on the chart with highs and lows //in case of high if(fracUpValue>0) < Comment("Fractals High around: ",fracUpValue); > //in case of low if(fracDownValue>0) < Comment("Fractals Low around: ",fracDownValue); > > //+------------------------------------------------------------------+ 

              Отличия в этом коде.

               if(fracUpValue>0) < Comment("Fractals High around: ",fracUpValue); >
              if(fracDownValue>0) < Comment("Fractals Low around: ",fracDownValue); >

              После компиляции кода запускаем полученный файл на график, как делали в прошлый раз. Советник по максимумам и минимума фракталов запустится на графике:

               Советник Fractals highs and lows на графике

              Теперь мы можем получать нужные нам максимумы и минимумы. Сигналы минимумов:

               Советник Fractals highs and lows — сигнал low

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

              Советник Fractals highs and lows — сигнал high

              Здесь в комментарии на графике отобразился максимум фракталов.

              2. Fractals и скользящая средняя

              Ниже приведен полный код для создания торговой системы по стратегии Fractals + MA:

              //+------------------------------------------------------------------+ //| Fractals with MA.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() < //creating arrays double fracUpArray[]; double fracDownArray[]; MqlRates priceArray[]; double maArray[]; //Sorting data ArraySetAsSeries(fracUpArray,true); ArraySetAsSeries(fracDownArray,true); ArraySetAsSeries(priceArray,true); ArraySetAsSeries(maArray,true); //define values int fracDef = iFractals(_Symbol,_Period); int Data = CopyRates(_Symbol,_Period,0,3,priceArray); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE); //define data and store result CopyBuffer(fracDef,UPPER_LINE,2,1,fracUpArray); CopyBuffer(fracDef,LOWER_LINE,2,1,fracDownArray); CopyBuffer(maDef,0,0,3,maArray); //get values double fracUpValue = NormalizeDouble(fracUpArray[0],5); double fracDownValue = NormalizeDouble(fracDownArray[0],5); double closingPrice = priceArray[0].close; double maValue = NormalizeDouble(maArray[0],6); bool isBuy = false; bool isSell = false; //conditions of the strategy and comment on the chart //in case of buy if(closingPrice > maValue && fracDownValue != EMPTY_VALUE) < Comment("Buy","n", "Current EMA: ",maValue,"n", "Fractals Low around: ",fracDownValue); isBuy = true; > //in case of sell if(closingPrice < maValue && fracUpValue != EMPTY_VALUE) < Comment("Sell","n", "Current EMA: ",maValue,"n", "Fractals High around: ",fracUpValue); isSell = true; > > //+------------------------------------------------------------------+ 

              Отличия в этом коде.

              Создаем два дополнительных массива: массив цен priceArray с помощью функции MqlRates, которая хранит информацию о ценах, объемах и спреде, и maArray с помощью функции double.

              MqlRates priceArray[]; double maArray[];

              Сортируем эти массивы.

              ArraySetAsSeries(priceArray,true); ArraySetAsSeries(maArray,true);

              Получаем исторические данные MqlRates с помощью функции CopyRates. Параметры функции:

              • symbol — имя символа, _Symbol
              • timeframe — таймфрейм для расчета (_period)
              • start_pos — установим позицию начала расчета, укажем 0
              • count — количество данных для копирования, укажем 3
              • rates_array[] — массив, в который копируем данные, priceArray

              Объявляем скользящую среднюю с помощью функции iMA. Параметры функции:

              • symbol — имя символа
              • period — период расчета
              • ma_period — период усреднения, 50
              • ma_shift — горизонтальный сдвиг, 0
              • ma_method — тип скользящей средней, у нас это EMA (Exponential Moving Average)
              • applied_price — тип цены, используемой в расчетах (цена закрытия
              int Data = CopyRates(_Symbol,_Period,0,3,priceArray); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
              CopyBuffer(maDef,0,0,3,maArray);

              Определение цены закрытия и значения MA.

              double closingPrice = priceArray[0].close; double maValue = NormalizeDouble(maArray[0],6);

              Создаем две bool-переменные для isBuy и isSell, чтобы избежать конфликта между сигналами на покупку и продажу одной и той же свечи.

              bool isBuy = false; bool isSell = false;

              Для формирования сигнала на покупку:

              if(closingPrice > maValue && fracDownValue != EMPTY_VALUE) < Comment("Buy","n", "Current EMA: ",maValue,"n", "Fractals Low around: ",fracDownValue); isBuy = true; >

              Для формирования сигнала на продажу:

              if(closingPrice < maValue && fracUpValue != EMPTY_VALUE) < Comment("Sell","n", "Current EMA: ",maValue,"n", "Fractals High around: ",fracUpValue); isSell = true; >

              Компилируем код и запускаем получившегося советника из навигатора в терминале MetaTrader 5.

               Система Fractals и MA на графике

              Как видите, советник Fractals + MA прикреплен к графику (в правом верхнем углу есть соответствующий значок). Посмотрим на примеры сформированных сигналов от советника.

              Сигнал на покупку:

               Fractals + MA - сигнал на покупку

              На графике показан комментарий со значениями:

              • Покупка
              • Текущая EMA
              • Минимум Fractals: n

              Сигнал на продажу:

               Fractals + MA - сигнал на продажу

              Имеем следующие значения:

              • Продажа
              • Текущая EMA
              • Максимум Fractals: n

              3. Fractals и Alligator

              Ниже приведен полный код для создания торговой системы по стратегии Fractals + Alligator:

              //+------------------------------------------------------------------+ //| Fractals with Alligator.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() < //creating arrays double fracUpArray[]; double fracDownArray[]; MqlRates priceArray[]; double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(fracUpArray,true); ArraySetAsSeries(fracDownArray,true); ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define values int fracDef=iFractals(_Symbol,_Period); int Data = CopyRates(_Symbol,_Period,0,3,priceArray); int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(fracDef,UPPER_LINE,2,1,fracUpArray); CopyBuffer(fracDef,LOWER_LINE,2,1,fracDownArray); CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray); //get values double fracUpValue=NormalizeDouble(fracUpArray[0],5); double fracDownValue=NormalizeDouble(fracDownArray[0],5); double closingPrice = priceArray[0].close; double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //creating bool variables to avoid buy and sell signals at the same time bool isBuy = false; bool isSell = false; //conditions of the strategy and comment on the chart //in case of buy if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue && closingPrice > teethValue && fracDownValue != EMPTY_VALUE) < Comment("Buy","n", "jawsValue string">"n", "teethValue string">"n", "lipsValue string">"n", "Fractals Low around: ",fracDownValue); isBuy = true; > //in case of sell if(lipsValueEMPTY_VALUE) < Comment("Sell","n", "jawsValue string">"n", "teethValue string">"n", "lipsValue string">"n", "Fractals High around: ",fracUpValue); isSell = true; > > //+------------------------------------------------------------------+ 

              Отличия в этом коде.

              Создаем три массива для компонентов Alligator.

              double jawsArray[]; double teethArray[]; double lipsArray[];

              Устанавливаем сортировку данных в массивах с помощью функции ArraySetAsSeries.

              ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true);

              Объявляем индикатор Аллигатора с помощью функции iAlligator. Параметры функции:

              • symbol — имя символа; у нас это «_Symbol», то есть рассчитываем индикатор по символу текущего графика.
              • period — таймфрейм для расчета; значение «_Period» означает, что индикатор будет рассчитываться на текущем таймфрейме.
              • jaw_period — период усреднения для расчета линии челюсти, мы используем 13.
              • jaw_shift — установим горизонтальный сдвиг для линии челюсти, у нас это 8.
              • teeth_period — период усреднения для расчета линии зубов, мы используем 8.
              • teeth_shift — установим горизонтальный сдвиг для линии зубов, 5.
              • lips_period — период усреднения для расчета линии губ, мы используем 5.
              • lips_shift — установим горизонтальный сдвиг для линии губ, у нас это 3.
              • ma_method — тип сглаживания скользящей средней, MODE_SMA.
              • applied_price — определяет тип цены, используемой для расчета; используем среднюю цену
              int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);

              Определяем данные и сохранение результатов с помощью функции CopyBuffer Параметры функции:

              • indicator_handle — хендл индикатора, alligatorDef
              • buffer_num — номер индикаторного буфера, 0 — челюсти, 1 — зубы, 2 — губы.
              • start_pos — установим позицию начала расчета, укажем 0
              • count — количество данных для копирования, укажем 3
              • buffer[] — определяем ценовой массив для копирования, у нас это jawsArray, teethArray, lipsArray
              CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray);

              Получаем значения компонентов Alligator.

              double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5);

              Для формирования сигнала на покупку:

              if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue && closingPrice > teethValue && fracDownValue != EMPTY_VALUE) < Comment("Buy","n", "jawsValue string">"n", "teethValue string">"n", "lipsValue string">"n", "Fractals Low around: ",fracDownValue); isBuy = true; >

              Для формирования сигнала на продажу:

              if(lipsValueEMPTY_VALUE) < Comment("Sell","n", "jawsValue string">"n", "teethValue string">"n", "lipsValue string">"n", "Fractals High around: ",fracUpValue); isSell = true; >

              Компилируем код, находим получившийся файл в Навигаторе в терминале и запускаем советник на графике торгового символа:

               Система Fractals и Alligator на графике

              Советник запустился и работает на графике — об этом свидетельствует индикация в правом верхнем углу графика. Теперь мы можем получать сигналы.

              Примеры сигналов, сгенерированных при тестировании этой стратегии.

              Сигнал на покупку

               Fractals + Alligator - сигнал на покупку

              Как видим, на графике выше в верхнем левом сформировался сигнал со следующими значениями:

              • Покупка
              • Значение челюстей
              • Значение зубов
              • Значение губ
              • Минимум Fractals

               Fractals + Alligator - сигнал на продажу

              На предыдущем графике имеем сигнал и следующие значения:

              • Продажа
              • Значение челюстей
              • Значение зубов
              • Значение губ
              • Максимум Fractals

              Заключение

              Технический индикатор Fractals — полезный и эффективный инструмент, который можно использовать самостоятельно или в сочетании с другими техническими индикаторами. Предполагается, что вы познакомились с индикатором, узнали, что он измеряет, как он может формироваться на графике и как найти встроенный индикатор в терминале MetaTrader 5. Кроме того мы посмотрели, как можно использовать фракталы, с помощью следующих простых торговых стратегий:

              • Максимумы и минимумы Fractals: для поиска максимумов и минимумов индикатора Fractals и получения сигнала на графике.
              • Fractals и скользящая средняя: сигналы на покупку на основе показателей от индикатора фракталов и положения цены относительно скользящей средней.
              • Fractals и Alligator: сигналы на покупку на основе показателей от индикатора фракталов, индикатора Alligator и положения цены.

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

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

              Источник https://strategy4you.ru/strategii-foreks-na-osnove-skolzyashhix-srednix/strategiya-foreks-probojnyj-fractal.html

              Источник https://www.mql5.com/ru/articles/11620