Indicadores: Support and Resistance

 

Support and Resistance:

O indicador "Suporte e Resistência" mostra os níveis de suporte e resistência utilizando os indicadores Fractals.

Os cálculos dos níveis de suporte baseiam-se nos "Fractals de baixa (down)" e os cálculos dos níveis de resistência baseiam-se nos "Fractals de alta (up)" dos indicadores Fractals por Bill Williams.

Indicador de níveis de Suporte e Resistência

Autor: Nikolay Kositsin

 

O indicador não funciona corretamente. Os níveis são refletidos corretamente apenas no histórico; quando novas barras aparecem, elas não são rastreadas.

Na figura: a linha vermelha, o momento em que o indicador foi anexado ao gráfico. Tudo está correto à esquerda dela e errado à direita.

Correto e incorreto

 
gdtt:

O indicador não funciona corretamente. Os níveis são refletidos corretamente apenas no histórico; quando novas barras aparecem, elas não são rastreadas.

Na figura: a linha vermelha, o momento em que o indicador foi anexado ao gráfico. Tudo está correto à esquerda dela e errado à direita.

Ah, sim, esqueci completamente que o fractal é uma contagem de perus retrospectivamente! Vamos consertar isso!
 

Desde a última atualização do MT5, esse indicador está quebrado. Ele apenas imprime pontos na alta e na baixa de cada vela.

O que há de errado?

 
yohmm:

Desde a última atualização do MT5, esse indicador está quebrado. Ele apenas imprime pontos na alta e na baixa de cada vela.

O que há de errado?

Esse indicador está funcionando normalmente. Build 1016.
 

Sim, tenho o Build 1016. Baixei o indicador novamente e o recompilei com 0 erro(s) e 0 aviso(s). Ainda não funciona, apenas mostra os pontos na alta e na baixa.

Mas tudo bem, estou usando a retração Fibo ou desenhando níveis s/r por conta própria agora.

 
yohmm:

Sim, tenho o Build 1016. Baixei o indicador novamente e o recompilei com 0 erro(s) e 0 aviso(s). Ainda não funciona, apenas mostra os pontos na alta e na baixa.

Mas tudo bem, estou usando o Fibo Retracement ou desenhando níveis de s/r por conta própria agora.

Você pode carregar o gráfico?
 
belido:
Você pode carregar o gráfico?

Claro, aqui está ele:

Capturas de tela da plataforma de negociação MetaTrader

EURUSD, M5, 2014.11.28

MetaQuotes Software Corp., MetaTrader 5, Demonstração

temp_file_screenshot_27398.png

EURUSD, M5, 2014.11.28, MetaQuotes Software Corp., MetaTrader 5, Demonstração


 
Estou com o mesmo problema! A reinstalação do Metatrader também não ajuda...:-(
Arquivos anexados:
sup.png  36 kb
 

Tente isso


//+------------------------------------------------------------------+
//|Suporte e resistência.mq5
//|Direitos autorais © 2005, Dmitry |
//|Atualização em dezembro de 2014
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
Versão //----
#property version   "1.01"
//---- indicador na janela do gráfico
#property indicator_chart_window 
//---- 2 buffers indicadores são usados
#property indicator_buffers 2
//---- 2 gráficos são usados
#property indicator_plots   2
//+----------------------------------------------+
//| Opções de indicadores de baixa
//+----------------------------------------------+
//---- tipo de desenho como seta
#property indicator_type1   DRAW_ARROW
//---- Cor magenta
#property indicator_color1  Magenta
//---- Largura da linha
#property indicator_width1  1
//---- Etiqueta de suporte
#property indicator_label1  "Support"
//+----------------------------------------------+
//| Opções de indicadores de alta
//+----------------------------------------------+
//---- tipo de desenho como seta
#property indicator_type2   DRAW_ARROW
//---- Lime color
#property indicator_color2  Lime
//---- Largura da linha
#property indicator_width2  1
//---- Etiqueta de resistência
#property indicator_label2 "Resistance"

//+----------------------------------------------+
//| Parâmetros de entrada do indicador
//+----------------------------------------------+
//entrada int iPeriod=70; //período ATR
//+----------------------------------------------+

//---- declaração de matrizes dinâmicas, usadas como buffers de indicadores
double SellBuffer[];
double BuyBuffer[];
//---
int StartBars;
int FRA_Handle;
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado
//+------------------------------------------------------------------+
void OnInit()
  {
//---- inicialização de variáveis globais
   StartBars=6;
//---- obter o identificador do indicador iFractals
   FRA_Handle=iFractals(NULL,0);
   if(FRA_Handle==INVALID_HANDLE)Print(" INVALID_HANDLE FRA");

//---- definir SellBuffer como buffer do indicador
   SetIndexBuffer(0,SellBuffer,INDICATOR_DATA);
//---- definir indxex da barra inicial para plotar
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartBars);
//---- definir rótulo para suporte
   PlotIndexSetString(0,PLOT_LABEL,"Support");
//---- define o código do caractere de seta
   PlotIndexSetInteger(0,PLOT_ARROW,159);
//---- definir a indexação como série temporal
   ArraySetAsSeries(SellBuffer,true);

//---- definir BuyBuffer como um buffer de indicador
   SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);
//---- definir o índice da barra inicial a ser plotada
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,StartBars);
//--- definir rótulo para resistência
   PlotIndexSetString(1,PLOT_LABEL,"Resistance");
//---- define o código do caractere de seta
   PlotIndexSetInteger(1,PLOT_ARROW,159);
//---- definir a indexação como série temporal
   ArraySetAsSeries(BuyBuffer,true);

//---- set precision
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- nome curto do indicador
   string short_name="Support & Resistance";
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//---- 
  }
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizado|
//+------------------------------------------------------------------+
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[]
                )
  {
//---- verificação de barras
   if(BarsCalculated(FRA_Handle)<rates_total
      || rates_total<StartBars)
      return(0);

//---- declaração de variáveis locais
   int to_copy,limit,bar;
   double FRAUp[],FRALo[];

//---- cálculo das barras a serem copiadas
//---- e índice inicial (limite) para o loop de recálculo de barras
   if(prev_calculated>rates_total || prev_calculated<=0)// verificação da primeira chamada
     {
      to_copy=rates_total;           // barras para copiar
      limit=rates_total-StartBars-1; // índice inicial
     }
   else
     {
      to_copy=rates_total-prev_calculated+3; // barras para copiar
      limit=rates_total-prev_calculated+2;   // índice inicial
     }

//---- definir a indexação como série temporal
   ArraySetAsSeries(FRAUp,true);
   ArraySetAsSeries(FRALo,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);

//---- copiar dados do indicador para matrizes
   if(CopyBuffer(FRA_Handle,0,0,to_copy,FRAUp)<=0) return(0);
   if(CopyBuffer(FRA_Handle,1,0,to_copy,FRALo)<=0) return(0);
 
//---- loop principal
   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);
  }
//+------------------------------------------------------------------+