Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Cycle Period - indicador para MetaTrader 5
- Publicado por:
- Nikolay Kositsin
- Visualizaciones:
- 1306
- Ranking:
- Publicado:
- 2014.01.14 14:01
- Actualizado:
- 2018.05.31 11:47
- ¿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" .
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 :
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/562
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 OscillatorEl Adaptive CG Oscilator es un de CG Oscillator que puede adaptarse a ciclos de mercado en constante cambio de un activo financiero real.
Oscilador Adaptive Stochastic.
Daily Range Projections FullPronosticando el siguiente cambio de rango de velas de día para todas las barras de la gráfica actual.