Индикаторы: Support and Resistance

 

Support and Resistance:

Индикатор Support and Resistance отображает уровни поддержки и сопротивления на основе индикатора Fractals.

Уровни поддержки строятся на уровне фракталов вниз, а уровни сопротивления - фракталов вверх.

Автор: Nikolay Kositsin

Индикатор Support and Resistance

 

Индикатор работает некорректно. Уровни правильно отражаются только на истории, при появлении новых баров они не отслеживаются.

На рисунке: красная линия, момент, когда был индикатор прикреплен к графику. Слева от нее все правильно, справа - неправильно.

 

 Корректно-некорректно 

 
gdtt:

Индикатор работает некорректно. Уровни правильно отражаются только на истории, при появлении новых баров они не отслеживаются.

На рисунке: красная линия, момент, когда был индикатор прикреплен к графику. Слева от нее все правильно, справа - неправильно.

 

  

 

 

Да, совсем забыл, что фрактал - это индюк, считающийся задним числом! Исправим!
 

После последнего обновления MT5 этот индикатор сломался. Он просто печатает точки на максимуме и минимуме каждой свечи.

Что не так?

 
yohmm:

После последнего обновления MT5 этот индикатор сломался. Он просто печатает точки на максимуме и минимуме каждой свечи.

Что не так?

Этот индикатор работает нормально. Build 1016.
 

Да, у меня сборка 1016. Я снова скачал индикатор и перекомпилировал его с 0 ошибками и 0 предупреждениями. По-прежнему не работает, просто показывает точки на максимуме и минимуме.

Но это не страшно, теперь я использую Fibo retracement или рисую уровни s/r самостоятельно.

 
yohmm:

Да, у меня сборка 1016. Я снова скачал индикатор и перекомпилировал его с 0 ошибками и 0 предупреждениями. По-прежнему не работает, просто показывает точки на максимуме и минимуме.

Но это не страшно, теперь я использую Fibo retracement или рисую уровни s/r самостоятельно.

Вы можете загрузить график?
 
belido:
Вы можете загрузить график?

Конечно, вот он:

Скриншоты торговой платформы MetaTrader

EURUSD, M5, 2014.11.28

MetaQuotes Software Corp., MetaTrader 5, демо

temp_file_screenshot_27398.png

EURUSD, M5, 2014.11.28, MetaQuotes Software Corp., MetaTrader 5, Demo


 
У меня та же проблема! Переустановка metatrader не помогает...:-(
Файлы:
sup.png  36 kb
 

Попробуйте это


//+------------------------------------------------------------------+
//|Поддержка и сопротивление.mq5 |
//|Copyright © 2005, Дмитрий |
//|Обновление декабрь 2014 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- версия
#property version   "1.01"
//---- индикатор в окне графика
#property indicator_chart_window 
//---- используются 2 индикаторных буфера
#property indicator_buffers 2
//---- используются 2 графических графика
#property indicator_plots   2
//+----------------------------------------------+
//| Опции медвежьего индикатора |
//+----------------------------------------------+
//---- тип рисунка как стрелка
#property indicator_type1   DRAW_ARROW
//---- Пурпурный цвет
#property indicator_color1  Magenta
//---- Ширина линии
#property indicator_width1  1
//---- Support label
#property indicator_label1  "Support"
//+----------------------------------------------+
//| Опции бычьего индикатора |
//+----------------------------------------------+
//---- тип рисунка как стрелка
#property indicator_type2   DRAW_ARROW
//---- Цвет лайма
#property indicator_color2  Lime
//---- Ширина линии
#property indicator_width2  1
//---- Ярлык сопротивления
#property indicator_label2 "Resistance"

//+----------------------------------------------+
//| Входные параметры индикатора |
//+----------------------------------------------+
//вход int iPeriod=70; //период ATR
//+----------------------------------------------+

//---- объявление динамических массивов, используемых в качестве индикаторных буферов
double SellBuffer[];
double BuyBuffer[];
//---
int StartBars;
int FRA_Handle;
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- инициализация глобальных переменных
   StartBars=6;
//---- получить хэндл индикатора iFractals
   FRA_Handle=iFractals(NULL,0);
   if(FRA_Handle==INVALID_HANDLE)Print(" INVALID_HANDLE FRA");

//---- установить SellBuffer в качестве индикаторного буфера
   SetIndexBuffer(0,SellBuffer,INDICATOR_DATA);
//---- установите indxex начального бара для построения графика
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartBars);
//---- установите метку для поддержки
   PlotIndexSetString(0,PLOT_LABEL,"Support");
//---- установить код стрелки
   PlotIndexSetInteger(0,PLOT_ARROW,159);
//---- установите индексацию как временные ряды
   ArraySetAsSeries(SellBuffer,true);

//---- установить BuyBuffer в качестве индикаторного буфера
   SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);
//---- установите индекс начального бара для построения графика
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,StartBars);
//--- установите метку для сопротивления
   PlotIndexSetString(1,PLOT_LABEL,"Resistance");
//---- установить код стрелки
   PlotIndexSetInteger(1,PLOT_ARROW,159);
//---- установите индексацию в виде временных рядов
   ArraySetAsSeries(BuyBuffer,true);

//---- установить точность
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- краткое название индикатора
   string short_name="Support & Resistance";
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//---- 
  }
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора|
//+------------------------------------------------------------------+
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(BarsCalculated(FRA_Handle)<rates_total
      || rates_total<StartBars)
      return(0);

//---- объявление локальных переменных
   int to_copy,limit,bar;
   double FRAUp[],FRALo[];

//---- расчет количества баров для копирования
//---- и начальный индекс (предел) для цикла пересчета баров
   if(prev_calculated>rates_total || prev_calculated<=0)// проверка первого вызова
     {
      to_copy=rates_total;           // бары для копирования
      limit=rates_total-StartBars-1; // начальный индекс
     }
   else
     {
      to_copy=rates_total-prev_calculated+3; // бары для копирования
      limit=rates_total-prev_calculated+2;   // начальный индекс
     }

//---- установите индексацию как временные ряды
   ArraySetAsSeries(FRAUp,true);
   ArraySetAsSeries(FRALo,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);

//---- копирование данных индикатора в массивы
   if(CopyBuffer(FRA_Handle,0,0,to_copy,FRAUp)<=0) return(0);
   if(CopyBuffer(FRA_Handle,1,0,to_copy,FRALo)<=0) return(0);
 
//---- главный цикл
   for(bar=limit; bar>=0; bar--)
     {
       BuyBuffer[bar] = 0.0;
       SellBuffer[bar] = 0.0;
       
     
       if(FRAUp[bar] != DBL_MAX) BuyBuffer[bar] = high[bar]; else BuyBuffer[bar] = BuyBuffer[bar+1];
       
       
       if(FRALo[bar] != DBL_MAX) SellBuffer[bar] = low[bar]; else SellBuffer[bar] = SellBuffer[bar+1];
     }
//---- 
   return(rates_total);
  }
//+------------------------------------------------------------------+