Как использовать индикатор фракталов в MQL4?

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

instaforex конкурс

Что из себя представляет индикатор фракталов?

Индикатор фракталов был изобретен Биллом Вильямсом. Несмотря на свою простоту, фракталы очень популярны как в торговле акциями, так и на рынке форекс.

В MetaTrader 4, а также во многих других торговых платформах, фракталы представлены в виде стрелок, указывающих вверх или вниз в зависимости от их расположения.

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

индикатор фракталов пример 1

индикатор фракталов пример 2

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

расположение фракталов

Как видите, определить фракталы довольно просто. Давайте посмотрим, как можно использовать данный индикатор.

Как можно использовать индикатор фракталов?

Фракталы можно использовать в разных ситуациях:

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

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

Как получить значение фракталов с помощью языка MQL4?

Язык MQL4 предоставляет встроенную функцию для обнаружения фракталов – iFractals(). Функция имеет следующие параметры:

double  iFractals(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          mode,             // индекс линии
   int          shift             // сдвиг
   );
  • symbol – торговый инструмент. NULL или Symbol() означает текущий инструмент.
  • timeframe – таймфрейм графика. 0 будет означать текущий график.
  • mode – верхний или нижний индекс линии индикатора. Возможные значения могут быть MODE_UPPER или MODE_LOWER.
  • shift – сдвиг, выраженный в количестве свечей.

Я попытался создать простую функцию, которую вы можете использовать для обнаружения фракталов.

Следующий код может получать три значения:

  • Значение самого последнего верхнего фрактала.
  • Значение самого последнего нижнего фрактала.
  • Какой фрактал был самым последним – верхний или нижний.
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

bool FractalsUp, FractalsDown;
double FractalsUpPrice, FractalsDownPrice;
int UpperFractal, LowerFractal;
int FractalsLimit=15;

void FindFractalsIndex() {
// Находим индекс бара первого ближайшего нижнего фрактала.
for(int n=0; n<Bars;n++){ if(iFractals(NULL,0,MODE_LOWER,n)!=NULL)break;LowerFractal=n+1;} 
// Находим индекс бара первого ближайшего верхнего фрактала.
for(n=0; n<Bars;n++){ if(iFractals(NULL,0,MODE_UPPER,n)!=NULL)break;UpperFractal=n+1;}
}

void FindFractals(){
   //Инициализация переменных
   FractalsUp=false;
   FractalsDown=false;
   FractalsUpPrice=0;
   FractalsDownPrice=0;
   
   //Цикл сканирования последних свечей FractalsLimit, начиная с самых старых и заканчивая самыми последними.
   for(int i=FractalsLimit; i>=0; i--){
      //Если на свече есть фрактал, значение будет больше нуля и будет равно самой высокой или самой низкой цене.
      double fu=iFractals(NULL,0,MODE_UPPER,i);
      double fl=iFractals(NULL,0,MODE_LOWER,i);
      //Если есть верхний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsUp.
      if(fu>0){
         FractalsUp=true;
         FractalsDown=false;
         FractalsUpPrice=fu;
      }
      //Если есть нижний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsDown.
      if(fl>0){
         FractalsUp=false;
         FractalsDown=true;
         FractalsDownPrice=fl;
      } 
      //Если свеча имеет верхний и нижний фрактал, значения сохраняются, но мы не считаем его последним фракталом.
      if(fu>0 && fl>0){
         FractalsUp=false;
         FractalsDown=false;
         FractalsUpPrice=fu;        
         FractalsDownPrice=fl;
      }
  }
}

void OnStart()
  {
//---
   FindFractals();
   FindFractalsIndex();
   //Получаем все значения.

   //Выводим все полученные значения.
   Alert(FractalsUpPrice," ",FractalsDownPrice);
   Alert(FractalsUp," ",FractalsDown);
   Alert(UpperFractal," ",LowerFractal);
   
  }
//+------------------------------------------------------------------+

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

instaforex бонус
instaforex бонус
Добавить комментарий

Ваш адрес email не будет опубликован.