<a href="https://www.instaforex.com/ru/">ИнстаФорекс портал</a>

Индикатор фракталов

Индикатор фракталов

Всем хорош фрактальный индикатор многоуважаемого Билла Вильямса, но не позволяет изменить период оценки экстремумов. Для примера, в стратегии Снайпер, при поиске уровней разворота РУ3, удобно было бы использовать индикатор с периодом 9.

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

#property copyright "Copyright 2017 by Serg Deev"
#property link      "http://fx-prog.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_label1  "up"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property indicator_label2  "down"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
input int      points=9;
double         upBuffer[];
double         downBuffer[];
int _points;
int OnInit() {
   SetIndexBuffer(0,upBuffer);
   SetIndexBuffer(1,downBuffer);
   SetIndexArrow(0,217);
   SetIndexArrow(1,218);
   _points = points; if (_points < 5) _points = 5;
   return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, const int prev_calculated,
                const datetime &time[], const double &open[],
                const double &high[], const double &low[],
                const double &close[], const long &tick_volume[],
                const long &volume[], const int &spread[]) {
  if (rates_total < _points) return(0); 
  int limit = rates_total - prev_calculated; 
  if (limit > _points) limit -= _points;
  for (int i=0; i<limit; i++) {
   int up = iHighest(NULL,0,MODE_HIGH,_points,i);
   if (up == (i+_points/2)) upBuffer[up] = high[up];
   int down = iLowest(NULL,0,MODE_LOW,_points,i);
   if (down == (i+_points/2)) downBuffer[down] = low[down];
  }
  return(rates_total);
}

Так это выглядит на графике:

Модифицированный фрактальный индикатор

Модифицированный фрактальный индикатор

Далее этот индикатор я буду использовать для индикаторных исследований по стратегии снайпер

<a href="https://www.instaforex.com/ru/">Форекс портал</a> Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.