Как разработать торговую систему на основе индикатора Envelopes

6 мая 2022, 11:23
Mohamed Abdelmaaboud
0
1 661

Введение

В предыдущей статье я писал об одном из самых популярных индикаторов — Bollinger Bands — который позволяет торговать по полосам. Если вы ее еще не читали, рекомендую с ней ознакомиться: Как разработать торговую систему на основе Bollinger Bands

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

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

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

В разделе "Стратегия Envelopes" я покажу базовые стратегии как пример использования индикатора для торговли. Возможно, они подтолкнут читателей к созданию и использованию других, более сложных стратегий. Затем, в разделе "Схема торговой стратегии Envelopes", который я считаю очень интересным, мы поработаем над планом создания торговой системы с использованием стратегий индикатора Envelopes. Далее, в разделе "Торговая система Envelopes" мы рассмотрим способы построения торговой системы на основе стратегий по индикатору Envelopes на языке MQL5, которую в дальнейшем можно использовать в MetaTrader 5.

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

Внимание! Все коды в статье написаны на MQL5. Коды предназначены для исполнения в MetaTrader 5. То есть для использования разрабатываемых приложений вам обязательно нужен торговый терминал MetaTrader 5. Если терминал у вас еще не установлен, его можно скачать по этой ссылке: https://www.metatrader5.com/ru/download

Окно скачанного и установленного терминала выглядит вот так:

Платформа MetaTrader 5

Для написания кодов мы будем использовать встроенные редактор кода MetaEditor. На рисунках ниже показаны различные способы, которыми можно открыть редактор:

MetaEditor способ 1

Еще один вариант:

MetaEditor способ 2

Или при открытом окне терминала MetaTrader 5 можно нажать клавишу F4.

После этого откроется окно редактора:

Окно редактора MetaEditor

Как создать новый файл:

Окно редактора MetaEditor


MetaEditor - новый файл


  1. Создать новый файл для написания советника
  2. Создать новый файл для написания пользовательского индикатора
  3. Создать новый файл для написания скрипта

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

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

Предлагаю начат наше путешествие по миру индикатора Envelopes, чтобы скорее узнать, чем же он может быть полезен для торговли.


Определение Envelopes

Индикатор Envelopes — один из методов торговли по полосам. Как я упоминал ранее, существует множество методов торговли по полосам, такие как полосы Боллинджера, каналы, конверты и другие.

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

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

Ложный пробой по пересечениям скользящих средних

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

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

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

Пересечение скользящей без индикатора Envelopes


Это же движение показано на рисунке выше: цена пересекла скользящую среднюю снизу вверх, но при этом она не дошла до верхней полосы индикатора Envelopes. Это значит, нельзя действовать при таком пересечении. И действительно цена развернулась и снова пошла вниз.

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

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

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

Чтобы рассчитать индикатор Envelopes:

  1. Считаем скользящую среднюю MA
  2. % Envelopes = MA * %
  3. Верхняя полоса Envelopes = MA + определенный % от MA
  4. Нижняя полоса Envelopes = MA - определенный % от MA

Посмотрим пример расчета.

Допустим, у нас есть цены за 14 дней:

Пример расчета

Расчет Envelopes

  • Рассчитываем желаемый % Envelopes

Расчет Envelopes2

  • Рассчитываем верхнюю полосу Envelopes

Расчет Envelopes 3

  • Рассчитываем нижнюю полосу Envelopes

Расчет Envelopes 4

Расчет происходит на каждом тике, найденный значения верхней полосы строятся на графике символа выше цен, а нижней полосы, соответственно, под ценами.

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

Запуск индикатора


Запуск индикатора 1


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


На рисунке выше показаны параметры индикатора Envelopes:

  1. Определяет период скользящей средней
  2. % Envelopes.
  3. Тип используемой цены для расчета (закрытия, средняя, типичная цена и т.д.)
  4. Сдвиг значений индикатора Envelopes на графике
  5. Тип скользящей средней
  6. Цвет верхней полосы индикатора Envelopes
  7. Стиль линии верхней полосы Envelopes
  8. Цвет нижней полосы индикатора Envelopes
  9. Стиль линии нижней полосы Envelopes

И после определения всех параметров индикатор появится на графике, как показано на следующем рисунке:

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



Стратегия Envelopes

В этой части я поделюсь с вами некоторыми стратегиями Envelopes. Эти стратегии используются в зависимости от состояния или направления рынка.

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

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

В соответствии с этим стратегии можно разделить на два типа: те, которые можно использовать во время тренда, и стратегии для бокового движения. 

    На трендовом рынке
      • Стратегия 1: восходящий тренд

        На растущем рынке цены движутся в восходящем тренде, образуя более высокие минимумы и более высокие максимумы. Теперь надо понять, как ведут себя цены и индикатор Envelopes во время такого растущего тренда.

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

        Получаем сигнал на покупку, когда цены пересекут верхнюю полосу Envelopes снизу вверх, а затем фиксируем прибыль, когда цена пересечет нижнюю полосу сверху вниз.

        • Цены > Верхняя полоса = покупка
        • Цены < Нижняя полоса = тейк-профит

        Стратегия 1 — Восходящий тренд

        • Стратегия 2: Нисходящий тренд

        На падающем рынке цены движутся в нисходящем тренде, образуя более низкие минимумы и более низкие максимумы. Теперь надо понять, как ведут себя цены и индикатор Envelopes во время такого падающего тренда.

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

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

        • Цены < Нижняя полоса = короткая продажа
        • Цены > Верхняя полоса = тейк-профит

        Стратегия 2 — Нисходящий тренд


        • Стратегия 3: Боковой тренд

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

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

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

        • Цены = Нижняя полоса = покупка
        • Цены = верхняя полоса = тейк-профит
        • Цены = Верхняя полоса = короткая
        • Цены = нижняя полоса = тейк-профит

        Стратегия 3 — Боковой тренд

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


        Схема системы на основе торговой стратегии по Envelopes

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

          На трендовом рынке
            • Стратегия 1: восходящий тренд
                • Цены > Верхняя полоса = покупка
                • Цены < Нижняя полоса = тейк-профит

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

              Схема стратегии восходящего тренда


                • Стратегия 2: Нисходящий тренд
                    • Цены < Нижняя полоса = короткая продажа
                    • Цены > Верхняя полоса = тейк-профит

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

                  Схема стратегии нисходящего тренда

                    При боковом движении
                      • Стратегия 3: Боковой тренд
                          • Цены = Нижняя полоса = покупка
                          • Цены = верхняя полоса = тейк-профит
                          • Цены = Верхняя полоса = короткая
                          • Цены = нижняя полоса = тейк-профит
                        Итак, план данной стратегии будет выглядеть следующим образом:

                        Схема стратегии для бокового тренда



                        Торговая система Envelopes

                        В этой части я покажу, как с помощью MQL5 можно запрограммировать эти стратегии в виде торгового советника (Expert Advisors, EA ). Такая программа будет автоматически определять торговые сигналы. Покажу базовый советник Envelopes. Пусть наша программа добавляет комментарии к верхним и нижним значениям индикатора Envelopes на графике.

                        То есть мы напишем программу, которая будет показывать значения верхней и нижней полос Envelopes в виде комментариев на графике:

                        //+------------------------------------------------------------------+
                        //|                                          Simple Envelopes EA.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()
                          {
                           //создадим массив для ценовых данных
                           MqlRates PriceInfo[];
                           
                           //установим сортировку от текущего дня к более старым данным
                           ArraySetAsSeries(PriceInfo, true);
                           
                           //копируем данные в массив
                           int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo);
                           
                           //создадим два массива для значений верхней и нижней полосы
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //определим индикатор Envelopes
                           int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100);
                           
                           //копируем ценовые данные в массивы
                           CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray);
                           CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray);
                           
                           //рассчитываем текущие данные
                           double UpperBandValue=NormalizeDouble(UpperBandArray[0],6);
                           double LowerBandValue=NormalizeDouble(LowerBandArray[0],6);
                           
                           //комментарии на графике со значениями полос индикатора Envelopes
                           Comment("Envelopes Upper Band =",UpperBandValue,"\n" "Envelopes Lower Band =",LowerBandValue,"\n");
                           
                          }
                        //+------------------------------------------------------------------+
                        
                        

                        На рисунке ниже показано, как можно запустить код в терминале MetaTrader 5:

                        Добавляем Envelopes EA на график

                        Можно перетащить файл на график или дважды кликнуть на нем. Программа запустится на исполнение и откроется следующее окно.

                        1

                        Затем программа отобразится на графике:

                        11

                        Таким образом, после запуска программы в торговом терминале MetaTrader 5 мы увидим график и сигналы на нем:

                        Базовый советник Envelopes EA


                        У индикатора Envelopes есть полосы — нижняя и верхняя — их значения можно видеть на графике.

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

                          На трендовом рынке
                            • Стратегия 1: восходящий тренд
                                • Цены > Верхняя полоса = покупка
                                • Цены < Нижняя полоса = тейк-профит

                              Код стратегии будет таким:

                              //+------------------------------------------------------------------+
                              //|                                   Envelopes uptrend Strategy.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()
                                {
                                 //создадим массив для ценовых данных
                                 MqlRates PriceInfo[];
                                 
                                 //установим сортировку от текущего дня к более старым данным
                                 ArraySetAsSeries(PriceInfo, true);
                                 
                                 //копируем данные в массив
                                 int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo);
                                 
                                 //создадим два массива для значений верхней и нижней полосы
                                 double UpperBandArray[];
                                 double LowerBandArray[];
                                 
                                 //определим индикатор Envelopes
                                 int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100);
                                 
                                 //копируем ценовые данные в массивы
                                 CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray);
                                 CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray);
                                 
                                 //рассчитываем текущие данные
                                 double UpperBandValue=NormalizeDouble(UpperBandArray[0],6);
                                 double LowerBandValue=NormalizeDouble(LowerBandArray[0],6);
                                 
                                 //комментарий сигнала на покупку на графике или сообщаем "no signal"
                                 if (PriceInfo[0].close > UpperBandValue)
                                 Comment("Envelopes Buy Signal");
                                 
                                 if (PriceInfo[0].close < LowerBandValue)
                                 Comment("Envelopes Take Profit or Stop Loss");
                                 
                                }
                              //+------------------------------------------------------------------+
                              
                              

                              Запускаем код полученного советника в терминале MetaTrader 5:

                              Советник по стратегии Envelopes на растущем ренде


                              Можно перетащить файл на график или дважды кликнуть на нем. Программа запустится на исполнение и откроется следующее окно.

                              2

                              После этого программа появляется на графике:

                              22

                              Таким образом, после запуска программы в торговом терминале MetaTrader 5 мы увидим график и сигналы на нем:

                              Стратегия Envelopes на растущем тренде - сигнал на покупку

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

                              Стратегия Envelopes на растущем тренде - тейк-профит

                              Здесь программа генерирует сигнал на фиксацию прибыли, когда цена пересекает нижнюю полосу.

                                • Стратегия 2: Нисходящий тренд
                                    • Цены < Нижняя полоса = короткая продажа
                                    • Цены > Верхняя полоса = тейк-профит

                                  Код стратегии будет таким:

                                  //+------------------------------------------------------------------+
                                  //|                                 Envelopes Downtrend Strategy.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()
                                    {
                                     //создадим массив для ценовых данных
                                     MqlRates PriceInfo[];
                                     
                                     //установим сортировку от текущего дня к более старым данным
                                     ArraySetAsSeries(PriceInfo, true);
                                     
                                     //копируем данные в массив
                                     int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo);
                                     
                                     //создадим два массива для значений верхней и нижней полосы
                                     double UpperBandArray[];
                                     double LowerBandArray[];
                                     
                                     //определим индикатор Envelopes
                                     int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.100);
                                     
                                     //копируем ценовые данные в массивы
                                     CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray);
                                     CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray);
                                     
                                     //рассчитываем текущие данные
                                     double UpperBandValue=NormalizeDouble(UpperBandArray[0],6);
                                     double LowerBandValue=NormalizeDouble(LowerBandArray[0],6);
                                     
                                     //комментарий сигнала на покупку на графике или сообщаем "no signal"
                                     if (PriceInfo[0].close < LowerBandValue)
                                     Comment("Envelopes Short Signal");
                                     
                                     if (PriceInfo[0].close > UpperBandValue)
                                     Comment("Envelopes Take Profit or Stop Loss");
                                     
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Проверим в торговом терминале, как работает то, что мы написали выше:

                                  Советник по стратегии Envelopes на нисходящем тренде


                                  Можно перетащить файл на график или дважды кликнуть на нем. Программа запустится на исполнение и откроется следующее окно.

                                  3

                                  После этого программа появляется на графике:

                                  33

                                  Стратегия Envelopes на нисходящем тренде - короткий сигнал

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

                                  Стратегия Envelopes на падающем тренде - тейк-профит

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

                                    • Стратегия 3: Боковой тренд
                                  • Цены = Нижняя полоса = покупка
                                  • Цены = верхняя полоса = тейк-профит
                                  Код стратегии будет таким:
                                  //+------------------------------------------------------------------+
                                  //|                              Envelopes Sideways Buy Strategy.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()
                                    {
                                     //создадим массив для ценовых данных
                                     MqlRates PriceInfo[];
                                     
                                     //установим сортировку от текущего дня к более старым данным
                                     ArraySetAsSeries(PriceInfo, true);
                                     
                                     //копируем данные в массив
                                     int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo);
                                     
                                     //создадим два массива для значений верхней и нижней полосы
                                     double UpperBandArray[];
                                     double LowerBandArray[];
                                     
                                     //определим индикатор Envelopes
                                     int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.150);
                                     
                                     //копируем ценовые данные в массивы
                                     CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray);
                                     CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray);
                                     
                                     //рассчитываем текущие данные
                                     double UpperBandValue=NormalizeDouble(UpperBandArray[0],6);
                                     double LowerBandValue=NormalizeDouble(LowerBandArray[0],6);
                                     
                                     //комментарий сигнала на покупку на графике или сообщаем "no signal"
                                     if (PriceInfo[0].close <= LowerBandValue)
                                     Comment("Envelopes Buy Signal");
                                     
                                     if (PriceInfo[0].close >= UpperBandValue)
                                     Comment("Envelopes Take Profit");
                                     
                                     if (PriceInfo[0].close > LowerBandValue
                                     &&  PriceInfo[0].close < UpperBandValue)
                                     Comment("No Signal"); 
                                    }
                                  //+------------------------------------------------------------------+
                                  
                                  
                                  На рисунке ниже показано, как можно запустить код в терминале MetaTrader 5:

                                  Стратегия Envelopes Buy при флэте


                                  Можно перетащить файл на график или дважды кликнуть на нем. Программа запустится на исполнение и откроется следующее окно.

                                  4

                                  Затем программа отобразится на графике:

                                  44

                                  Стратегия Envelopes Buy при флэте - нет сигнала

                                  Таким образом, после запуска программы в торговом терминале MetaTrader 5 мы увидим график и сигналы на нем:

                                  Стратегия Envelopes Buy при флэте - сигнал на покупку

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


                                  Стратегия Envelopes Buy при флэте - тейк-профит

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

                                  • Цены = Верхняя полоса = короткая
                                  • Цены = нижняя полоса = тейк-профит

                                  Код стратегии будет таким:

                                  //+------------------------------------------------------------------+
                                  //|                            Envelopes Sideways Short Strategy.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()
                                    {
                                     //создадим массив для ценовых данных
                                     MqlRates PriceInfo[];
                                     
                                     //установим сортировку от текущего дня к более старым данным
                                     ArraySetAsSeries(PriceInfo, true);
                                     
                                     //копируем данные в массив
                                     int Data = CopyRates(Symbol(), Period (), 0, Bars(Symbol(), Period()), PriceInfo);
                                     
                                     //создадим два массива для значений верхней и нижней полосы
                                     double UpperBandArray[];
                                     double LowerBandArray[];
                                     
                                     //определим индикатор Envelopes
                                     int EnvelopesIdentify = iEnvelopes(_Symbol,_Period,14,0,MODE_SMA,PRICE_CLOSE,0.150);
                                     
                                     //копируем ценовые данные в массивы
                                     CopyBuffer(EnvelopesIdentify,0,0,1,UpperBandArray);
                                     CopyBuffer(EnvelopesIdentify,1,0,1,LowerBandArray);
                                     
                                     //рассчитываем текущие данные
                                     double UpperBandValue=NormalizeDouble(UpperBandArray[0],6);
                                     double LowerBandValue=NormalizeDouble(LowerBandArray[0],6);
                                     
                                     //комментарий сигнала на покупку на графике или сообщаем "no signal"
                                     if (PriceInfo[0].close >= UpperBandValue)
                                     Comment("Envelopes Short Signal");
                                     
                                     if (PriceInfo[0].close <= LowerBandValue)
                                     Comment("Envelopes Take Profit");
                                    
                                     if (PriceInfo[0].close > LowerBandValue
                                     &&  PriceInfo[0].close < UpperBandValue)
                                     Comment("No Signal"); 
                                     
                                    }
                                  //+------------------------------------------------------------------+
                                  
                                  
                                  На рисунке ниже показано, как можно запустить код в терминале MetaTrader 5:

                                  Стратегия Envelopes Sell при флэте


                                  Можно перетащить файл на график или дважды кликнуть на нем. Программа запустится на исполнение и откроется следующее окно.

                                  5

                                  Затем программа отобразится на графике:

                                  55

                                  Стратегия Envelopes Sell при флэте - нет сигнала

                                  Как видно на этом графике, программа пишет, что сигнала нет (No Signal), потому что цена движется между двумя полосами при боковом тренде.


                                  Стратегия Envelopes Sell при флэте - сигнал на продажу

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

                                  Стратегия Envelopes Sell при флэте - тейк-профит

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


                                  Заключение

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

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

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

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

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


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

                                  Несколько индикаторов на графике (Часть 05): Превращаем MetaTrader 5 в систему RAD (I) Несколько индикаторов на графике (Часть 05): Превращаем MetaTrader 5 в систему RAD (I)
                                  Несмотря на то, что многие люди не умеют программировать, они достаточно креативны и имеют отличные идеи, но отсутствие знаний или понимания программирования мешает им сделать некоторые вещи. Давайте посмотрим вместе, как создать Chart Trade, но используя саму платформу MT5, как будто это IDE.
                                  Несколько индикаторов на графике (Часть 04): Начинаем работу с советником Несколько индикаторов на графике (Часть 04): Начинаем работу с советником
                                  В предыдущих статьях я рассказывал, как создать индикатор с несколькими подокнами — такая возможность становится интересной при использовании пользовательских индикаторов. В этот раз мы рассмотрим, как добавить несколько окон в советник.
                                  Разработка торговой системы на основе Импульса (Momentum) Разработка торговой системы на основе Импульса (Momentum)
                                  В предыдущей статье я упоминал о важности определения тренда, то есть определения направления движения цены. В этой статье мы поговорим еще об одном важном понятии в трейдинге, которое также существует в виде индикатора — импульсе цен, или индикаторе Momentum. Мы разработаем собственную торговую систему на основе этого индикатора.
                                  DoEasy. Элементы управления (Часть 4): Элемент управления "Панель", параметры Padding и Dock DoEasy. Элементы управления (Часть 4): Элемент управления "Панель", параметры Padding и Dock
                                  В статье реализуем работу таких параметров панели как Padding (внутренние отступы/поля со всех сторон элемента) и Dock (способ расположения объекта внутри контейнера).