Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Indicadores

Cycle Period - indicador para MetaTrader 5

Publicado por:
Nikolay Kositsin
Visualizações:
2154
Avaliação:
(18)
Publicado:
2014.01.14 13:55
Atualizado:
2018.05.31 11:48
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Autor real:

Witold Wozniak

Este indicador é projetado para mensurar um ativo financeiro quando muda a periodicidade de preço.

O indicador em seu buffer varia de acordo com os valores do ciclo de mercado em vigor que nunca é estável por razões óbvias. Este indicador é escrito para ser usado com osciladores para permitir adaptações das constantes mudanças do ciclo do mercado e suas transformações.

O indicador foi inspirado no artigo de John Ehlers "Using The Fisher Transform" publicado em Novembro 2002, na revista "Technical Analysis Of Stock & Commodities".  

Cycle Period

A variável de manipulação (handle) do indicador CyclePeriod deve ser declarada a nível global para permitir que o indicador seja usado em código de outro indicador (por exemplo, no oscilador RVI):

//---- declaração de variáveis inteiras para os manipuladores de indicadores
int CP_Handle;

Então, o manipulador (handle) do indicador CyclePeriod deve ser recebido no bloco de inicialização do indicador RVI :

//---- obter o manipulador (handle) do indicador CyclePeriod 
   CP_Handle=iCustom(NULL,0,"CyclePeriod",Alpha);
   if(CP_Handle==INVALID_HANDLE)
     {
      Print(" Falha para obter o manipulador (handle) do indicador CyclePeriod");
      return(1);
     }

Agora temos uma nova variável Alpha que é o parâmetro de entrada usada pelo indicador e a proporção do período médio. Esta variável deve ser transformada para a variável de entrada do indicador desenvolvido.

//+----------------------------------------------+
//| Parâmetros de Entrada do Indicador           |
//+----------------------------------------------+
input double Alpha=0.07; // Proporção suavizada do Indicador 

A variável de entrada Length anterior deve ser removida da lista de parâmetros de entrada, transformando-a numa variável local dentro da função OnCalculate().

O tamanho das arrays usadas para suavizar o indicador são fixadas pelo valor do parâmetro Length :

//---- Distribuição da memória para as variáveis arrays  
   ArrayResize(Count,Length);
   ArrayResize(Value1,Length);
   ArrayResize(Value2,Length);

O valor deste parâmetro está alterado agora. Portanto, é melhor definir os tamanhos dessas arrays para que não sejam menor que o maior valor assumido desta variável.

Ao analisar os gráficos de indicadores podemos ver que esse valor não excede a 100. Portanto, os tamanhos das arrays terão o mesmo valor:

//---- Distribuição da memória para as variáveis arrays  
   ArrayResize(Count,MAXPERIOD);
   ArrayResize(Value1,MAXPERIOD);
   ArrayResize(Value2,MAXPERIOD);

E mais adiante, os valores do período para a barra atual no bloco OnCalculate() devem ser retirados do buffer do indicador personalizado CyclePeriod para serem usados no lugar do parâmetro de entrada Length .

//---- loop de cálculo do indicador principal
   for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      //---- cópiar dados da matriz mostrados recentemente
      if(CopyBuffer(CP_Handle,0,rates_total-1-bar,4,period)<=0) return(RESET);

      Length=int(MathFloor((4.0*period[0]+3.0*period[1]+2.0*period[2]+period[3])/20.0));
      if(bar<Length) Length=bar; // cortando a suavização para baixo do número real das barras

Neste caso os quatro últimos valores são retirados do buffer do indicador CyclePeriod e o seu alisamento linear ponderado é realizado, o valor obtido após este processo é utilizado como um período de alisamento Length . E finalmente a linha na extremidade de código do indicador deve ser alterada:

      if(bar<rates_total-1) Recount_ArrayZeroPos(Count,MAXPERIOD);

Como resultado, temos o oscilador Adaptive RVI :

Indicadores RVI e Adaptive RVI

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/562

XXDPO XXDPO

O Detrended Price Oscillator (DPO) mostra os estados do mercado de sobrecompra / sobrevenda possibilitando também a obtenção de sinais de compra e venda.

Oscilador Adaptivo CG Oscilador Adaptivo CG

O indicador Adaptivo CG é um oscilador que se adapta constantemente a mudança dos ciclos de um ativo financeiro do mercado.

Stochastic Cyber Cycle Stochastic Cyber Cycle

Oscilador estocástico Adaptado.

Projeções Full do Daily Range Projeções Full do Daily Range

Previsão da próxima mudança de intervalo do candle diário em todas as barras do gráfico em vigor.