Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Indicadores

Cycle Period - indicador para MetaTrader 5

Publicado por:
Nikolay Kositsin
Visualizaciones:
1306
Ranking:
(18)
Publicado:
2014.01.14 14:01
Actualizado:
2018.05.31 11:47
rvi.mq5 (9 KB) ver
adaptivervi.mq5 (9.76 KB) ver
CyclePeriod.mq5 (18.96 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Autor real:

Witold Wozniak

Este indicador está diseñado para la medición de la periodicidad de cambio de precio de activos financieros.

El indicador almacena en su bufer el valor de ciclo actual de mercado, que nunca pueden ser estables por razones obvias. Este indicador se crea para utilizase con los osciladores para proporcionar su adaptación a los ciclos de cambio de mercado y su transformación adaptativa.

El indicador está inspirado en el artículo de John Ehlers "Usando The Fisher Transform" publicado en noviembre de 2002 en la revista "Análisi Técnico de Acciones y Commodities" .  

Cycle Period

La variable del indicador del handle CyclePeriod debe ser declarada a nivel global para que el indicador sea utilizado por el código de otro indicador (por ejemplo, con el oscilador RVI):

//---- declaración de variables enteras para el indicador handle
int CP_Handle;

Entonces, el handle (asa) del indicador de CyclePeriod debe ser recibido en el bloque de inicio del indicador RVI :

//---- obteniendo el handle del indicador CyclePeriod
   CP_Handle=iCustom(NULL,0,"CyclePeriod",Alpha);
   if(CP_Handle==INVALID_HANDLE)
     {
      Print(" Error obteniendo el handle del indicador CyclePeriod");
      return(1);
     }

Ahora, tenemos la nueva variable alfa que es el parámetro de entrada del indicador utilizado y el ratio promedio de período. Esta variable debe ser transformada en la variable de entrada del indicador desarrollado.

//+----------------------------------------------+
//| Parametros de entrada del indicador          |
//+----------------------------------------------+
input double Alpha=0.07; // Ratio del indicator suavizado 

La variable de entrada Lengthd (longitud) anterior debe eliminarse de la lista de los parámetros de entrada transformándola a la variable local dentro de la función OnCalculate() .

El tamaño de las matrices utilizadas para suavizar el indicador está fijado por el valor del parámetro Length (longitud) :

//---- Distribución de la memoria para las matrices de variables  
   ArrayResize(Count,Length);
   ArrayResize(Value1,Length);
   ArrayResize(Value2,Length);

El valor de este parámetro está cambiando ahora. Por lo tanto, es mejor ajustar el tamaño de estas matrices para no ser inferior que el presunto valor alto de esta variable.

Al mismo tiempo analizando los gráficos del indicador, podemos ver que este valor no excede de 100. Therefore, the arrays sizes will have the same value:

//---- Memory distribution for the variables arrays  
   ArrayResize(Count,MAXPERIOD);
   ArrayResize(Value1,MAXPERIOD);
   ArrayResize(Value2,MAXPERIOD);

Y aún más, valores de periodos para la barra actual en el bloque OnCalculate() deben tomarse desde el buffer del indicador personalizado CyclePeriod para permitirles ser utilizado en lugar del valor del parámetro de entrada anterior Length .

//---- cálculo del bucle del indicador principal
   for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      //---- copiar nuevamente datos aparecidos en la matriz
      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; // copiando el suavizado bajo en el número real de barras

En este caso se toman los cuatro últimos valores desde el buffer de indicador del CyclePeriod y se realiza su suavizado lineal ponderado, después de lo cual el valor ganado se utiliza como un largo período suavizado. Y finalmente, la línea en el final del código del indicador debe ser alterada:

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

Como resultado, hemos recibido el oscilador Adaptative RVI :

Indicadores RVI and Adaptive RVI

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/562

XXDPO XXDPO

El Detrended Price Oscillator (DPO) -Oscilador de precios sin tendencia- muestra los estados de sobrecompra/sobreventa del mercado, también se puede utilizar para obtener señales de compraventa.

Adaptive CG Oscillator Adaptive CG Oscillator

El Adaptive CG Oscilator es un de CG Oscillator que puede adaptarse a ciclos de mercado en constante cambio de un activo financiero real.

Stochastic Cyber Cycle Stochastic Cyber Cycle

Oscilador Adaptive Stochastic.

Daily Range Projections Full Daily Range Projections Full

Pronosticando el siguiente cambio de rango de velas de día para todas las barras de la gráfica actual.