Normalizador de Osciladores: Mejora Tus Análisis de Trading

Mike 2008.11.20 16:03 11 0 0
Archivos adjuntos

En esos días en los que me atormentaban las dudas sobre la efectividad del uso de los osciladores, a menudo necesitaba normalizar sus valores, es decir, ajustar las oscilaciones del indicador al rango [-1;1]. Esto abre nuevas posibilidades, siendo la más simple el control de los valores del indicador a niveles concretos (0.5, 0.8, entre otros), en lugar de depender de valores aproximados que varían según el mercado. Por supuesto, si el indicador ya está normalizado, no hace falta considerar este producto, pero si no lo está... ¡úsalo! No me juzgues muy duro por el código inicial.

Parámetros:

string Indicador - el propio indicador que se pasa a la función icustom(). Desafortunadamente, las herramientas de automatización en MQL4 no son suficientes para agregar los indicadores estándar aquí. Por otro lado, ¿quién puede impedir que un programador curioso cambie una entrada en el programa?
int modo - el número de la línea necesaria del indicador inicial...
int param1
int param2 - ... y sus parámetros. Lamentablemente, la imaginación de los desarrolladores de MQL no es suficiente para permitir funciones con un número variable de parámetros (como Print), ni para soportar la aritmética de direcciones (en mi opinión, esto último se hace solo para que los usuarios comunes se sientan inferiores comparados con los dioses :)))). Así que trabajemos de manera manual.

Imagen:

Comentarios:

Los cálculos se realizan en dos etapas:

1. En la etapa de inicialización (la función init(), si alguien no lo sabe:), se analiza todo el array de datos del indicador con el fin de calcular el período distintivo, es decir, el período dentro del cual el valor cuadrático medio del indicador puede proporcionar información sobre ese valor cuadrático medio (MSV) pero en toda la historia.

Déjame explicarte. Supongamos que tenemos un oscilador y hemos calculado su valor cuadrático medio para varios períodos de oscilación consecutivos. Así que hagamos un acuerdo: debe haber, por ejemplo, 3 períodos (como yo tengo - #define PERIODS_CHARACTERISTIC 3, te recomiendo no usar más, de lo contrario el procesador se sobrecargará). La esencia del cálculo radica en determinar cuántas barras hay en promedio en un período (es decir, 2 * intervalo promedio entre dos ceros del indicador) y multiplicar el valor obtenido por 3.

2. Luego, se calcula el MSV para cada barra (como la raíz cuadrada de la varianza) en los tres períodos obtenidos, se normaliza el valor de nuestro indicador y, al final, se ajusta todo al rango dinámico [-1;1] mediante el paso a través de la función compresora f(x)=tanh(x) (tangente hiperbólica, tuve que escribir la función yo mismo :)).

Un ejemplo técnico puro. La línea verde en la imagen es mi viejo oscilador que caracteriza la actividad del mercado (de hecho, es lo mismo que el MACD, pero basado en volúmenes). La línea azul es también un oscilador, pero ya ha pasado por el -=Normalizador=-. Los niveles +-0.75, +-0.5, +-0.25 son claramente visibles, y también se puede ver que todos los máximos y mínimos, las regiones de aumento y disminución, y los puntos de cruce con el nivel cero mantienen sus posiciones.

Así que aquí lo tienes... No es mi culpa si a alguien no le gusta.

Lista
Comentarios 0