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
- Visualizaciones:
- 22
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Resumen
Casi todas las herramientas de gestión de riesgos del conjunto estándar de MetaTrader 5 comparten una suposición oculta: que la peor pérdida para la que vale la pena prepararse es, más o menos, la peor pérdida que ya has sufrido. El rango verdadero medio (ATR) dimensiona las posiciones en función de la volatilidad reciente. Un re-muestreador de Monte Carlo reorganiza las operaciones que realmente has realizado. El «valor en riesgo» histórico extrae un percentil directamente de tu historial de rentabilidad. Todas estas herramientas se fijan en el cuerpo de la distribución y esperan en silencio que el futuro no depare nada más extremo que el pasado.
Los rendimientos financieros tienen colas gruesas, por lo que esa esperanza es infundada. Los grandes movimientos ocurren con más frecuencia y alcanzan niveles más altos de lo que permite una distribución normal, y el peor día concreto de una muestra casi nunca es el peor día del que es capaz el mercado. Cualquier método que solo pueda prever pérdidas tan graves como las que ya se encuentran en su ventana subestimará sistemáticamente una caída excepcional.

El modelo normal (curva) frente a los rendimientos reales con colas gruesas (histograma). La cola izquierda sombreada representa la pérdida que no detecta.
Este indicador incorpora de forma nativa en MQL5 la rama de la estadística desarrollada para cubrir esa laguna. La teoría de valores extremos no modela toda la distribución; solo modela la cola, y lo hace con una forma justificada por un teorema del límite, en lugar de una suposición. El modelo ajustado puede entonces extrapolar más allá de cualquier dato de la muestra: una pérdida del 99,9 %, un movimiento que se observa aproximadamente una vez cada tres años, una cifra que tu historial nunca ha registrado realmente.
El método. El indicador implementa la técnica «Peaks-Over-Threshold». Convierte los cierres del gráfico en una serie unilateral de pérdidas a la baja, conservando la magnitud de cada movimiento a la baja y asignando el valor cero a cada movimiento al alza. Elige un umbral alto u en un cuantíl de esa serie, descarta todo lo que se encuentra por debajo de él y estudia únicamente los excesos, es decir, las cantidades en las que las pérdidas superan el umbral. El teorema de Pickands-Balkema-de Haan establece que, para una amplia clase de distribuciones subyacentes, esos excesos convergen, a medida que aumenta el umbral, hacia una única familia: la distribución de Pareto generalizada. Por lo tanto, no es necesario adivinar la forma de la cola, sino solo ajustarla.

Picos por encima del umbral: se establece un umbral en la serie de pérdidas, se separan los excesos por encima de él y se ajusta una distribución de Pareto generalizada únicamente a esos excesos.
El ajuste consiste en una auténtica optimización de máxima verosimilitud de la forma y la escala de la distribución de Pareto generalizada (GPD), realizada mediante el optimizador con restricciones de ALGLIB incluido en el terminal. No hay puente de Python, ni DLL, ni dependencia externa de ningún tipo.
Qué información proporciona
Se calculan tres cifras en una ventana móvil y se muestran en un panel del gráfico; la primera de ellas también se representa como una línea en una subventana, de modo que se puede observar cómo la cola se estrecha y se ensancha con el tiempo.
| Interpretación | Qué es | Cómo utilizarlo |
|---|---|---|
| EVT VaR | Valor en riesgo (VaR) al nivel de confianza elegido, extrapolado a partir de la cola ajustada en lugar de leerse directamente del historial. | La pérdida que debes tener en cuenta. Se muestra como porcentaje en el panel y se representa gráficamente como la línea de la subventana. Una línea ascendente indica que la cola se está ensanchando. |
| EVT ES | Déficit esperado: la pérdida media en caso de que se supere el VaR. | La gravedad de la situación una vez que se produce el peor de los casos. Siempre es peor que el VaR y es la cifra más realista a la hora de fijar los límites de stop. |
| xi (forma) | El índice de cola ajustado. Cuanto mayor sea, más pesada será: las pérdidas se acumulan a medida que se aleja en el tiempo. | La lectura del régimen, codificada por colores en el panel. Este es el parámetro que determina hasta dónde llega la extrapolación. |
Los dos estimadores son las formas estándar de GPD-POT, por lo que lo que muestra el panel es exactamente:
VaR_p = u + (sigma / xi) * [ ( (Nu / n) / (1 - p) )^xi - 1 ] ES_p = VaR_p / (1 - xi) + (sigma - xi * u) / (1 - xi)
Aquí u es el umbral, sigma y xi son la escala y la forma ajustadas, y Nu / n es la tasa de excedencia. Ambos tienen un límite exponencial que se utiliza automáticamente cuando la forma ajustada se sitúa cerca de cero, lo que mantiene estable la aritmética precisamente en el régimen en el que dividir por la forma no lo estaría.
El «semáforo» de la cola. El panel colorea la forma para que se pueda interpretar el régimen sin necesidad de interpretar un número:
| xi | Color | Lectura |
|---|---|---|
| por debajo de 0,10 | Verde | Cercano al caso de la distribución exponencial de cola delgada. Tranquilo. |
| De 0,10 a 0,30 | Dorado | Moderadamente intensa, donde se sitúan la mayoría de los instrumentos líquidos. |
| Por encima de 0,30 | Rojo | Cola pesada. Las pérdidas se acumulan y las caídas se agrupan. |
Esos umbrales son más una ayuda para la interpretación que unos umbrales estadísticos, y pueden ajustarse a gusto. Lo importante es que la misma forma que determina el color es la que determina las fórmulas, por lo que el panel no puede mostrar verde mientras las cálculos están calculando en segundo plano un VaR de cola gruesa.

El indicador en un gráfico: el panel muestra el VaR, el shortfall esperado y la forma de la cola codificada por colores, mientras que la subventana representa gráficamente el VaR EVT a lo largo del tiempo.
Se niega a hacer conjeturas
Esta es una decisión de diseño que conviene conocer antes de incorporarlo, ya que cambia el significado de una lectura en blanco. Un ajuste de cola de dos parámetros necesita un número real de excedencias para ser fiable, y la bibliografía sobre EVT considera que entre treinta y cincuenta puntos de cola constituyen el mínimo práctico. El motor exige treinta. Por debajo de ese umbral, muestra su estado en lugar de una cifra, y el panel lo indica claramente con palabras sencillas:
| Estado | Significado |
|---|---|
| OK | El ajuste ha convergido con suficientes datos de la cola. VaR, ES y xi están activos. |
| Datos de la cola insuficientes (N/30 superaciones) | La ventana ha generado menos de treinta superaciones. Aumenta el periodo de retrospectiva o reduce el cuantíl umbral. |
| El ajuste no ha convergido | El optimizador no ha alcanzado una forma y una escala válidas. No se ha generado ningún informe. |
| No se ha realizado el ajuste / entrada errónea | Aún no se ha ejecutado ningún ajuste, o la ventana estaba vacía o era degenerada. |
Un ejemplo concreto de esto en la práctica: con el umbral predeterminado de 0,95, un intervalo retrospectivo de 500 barras solo arroja unas veinticinco superaciones, y el indicador informa de datos insuficientes en la cola (25/30 superaciones) en lugar de una cifra. A 800 bares supera el umbral mínimo y se ajusta correctamente. No se trata de un error que haya que sortear, sino de que el modelo se niega a hacer conjeturas, que es precisamente el comportamiento que se espera de una herramienta cuyo único propósito es la honestidad respecto a los eventos poco frecuentes.
El mismo principio se aplica en el otro extremo. Cuando la forma ajustada alcanza la unidad, la media de la cola diverge y el «Expected Shortfall» deja de existir, por lo que el motor devuelve cero en ese punto en lugar de una cifra inventada. Siempre que un ajuste no obtenga el estado «OK», la línea trazada se deja en blanco para esa barra en lugar de mantener un valor obsoleto, de modo que la línea queda vacía exactamente donde el modelo se ha negado a dar una respuesta.
Configuración recomendada
| Parámetro | Valor recomendado | Notas |
|---|---|---|
| Símbolo | Cualquier instrumento líquido | No hay nada específico para cada símbolo: el ajuste se realiza sobre rendimientos logarítmicos, por lo que las lecturas son porcentajes y comparables entre instrumentos. Un símbolo con escaso volumen de negociación es el único caso en el que es probable que no se cumpla el límite mínimo de superación. |
| Plazo | H4 o D1 | El VaR es una magnitud de pérdida por barra, por lo que el horizonte temporal determina el significado de la cifra. En D1 se trata de una pérdida diaria. El intradía funciona, pero la cola de una rentabilidad de un minuto es un concepto distinto. |
| Período retrospectivo | 800 barras | Se ha elegido este valor para que el umbral de 0,95 supere con holgura el límite mínimo de treinta superaciones. Las ventanas más cortas reaccionan más rápido, pero alcanzan el límite mínimo. |
| Historial requerido | Período retrospectivo + 2 barras | No se dibuja nada antes de la primera barra apta para el ajuste. Asegúrate de que el gráfico haya descargado realmente ese historial, o el indicador permanecerá en blanco. |
| Cuantil del umbral | 0,95 | El valor predeterminado estándar. Reducirlo aumenta el número de superaciones a costa de la validez asintótica, ya que el teorema se cumple a medida que aumenta el umbral. |
Parámetros de entrada
| Parámetro | Valor por defecto | Descripción |
|---|---|---|
| Retrospectiva | 800 | Ventana móvil, en barras, sobre la que se calcula cada ajuste. Se rechaza como demasiado escasa cualquier ventana cuyos rendimientos utilizables sean inferiores a la mitad de este recuento. |
| Umbral cuantitativo | 0,95 | Cuantil de la serie de pérdidas utilizado para establecer el umbral u de POT. Se aceptan valores entre 0,5 y 0,999. |
| Confianza | 0,99 | Nivel de confianza para el VaR y el ES. La cola ajustada se extrapola, por lo que 0,999 es un valor válido aunque la muestra no contenga pérdidas de ese tipo. |
| Reajustar cada | 1 | Frecuencia de reajuste para las barras históricas. Con el valor 1, cada barra se reajusta y la línea representada se resuelve por completo; al aumentar este valor, se sacrifica la resolución histórica a cambio de velocidad en gráficos muy largos. La barra actual siempre se reajusta, independientemente de lo anterior. |
| Mostrar panel | true | Dibuja el panel de texto en el gráfico. Los objetos del panel se eliminan cuando se desactiva el indicador. |
Uso del motor en tu propio código
El modelo de cola es una clase independiente que solo consta de encabezado, CGPDModel, sin dependencia de gráficos ni búferes de indicadores. Ajusta una matriz de pérdidas en la que un valor mayor simplemente significa peor, por lo que la convención de signos es la del llamante, y cualquier estrategia que pueda generar una serie de pérdidas puede utilizarlo directamente:
#include <EVT\GPDModel.mqh> CGPDModel model; model.SetThresholdQuantile(0.95); if(model.Fit(losses,count) && model.IsReliable()) { double var = model.VaR(0.99); double es = model.ExpectedShortfall(0.99); double xi = model.Xi(); } else Print("tail not usable: ",model.StatusText());
Además, la clase expone la escala ajustada, el umbral seleccionado, el recuento de superaciones y la enumeración de estados, de modo que el usuario pueda registrar o mostrar exactamente por qué se ha ocultado una lectura. Para leer el indicador en lugar de la clase, obtén un identificador con iCustom en EVT\EVTCrashGauge y copia el búfer 0, que contiene el VaR de EVT y muestra cero en cualquier barra en la que el ajuste no fuera fiable.
Limitaciones
EVT se ha ganado un lugar en el conjunto de herramientas de riesgo, pero es un instrumento especializado y utilizarlo bien implica saber en qué casos no es aplicable:
- Requiere muchos datos de cola. Un ajuste de cola de dos parámetros necesita un número significativo de superaciones. En un valor con escaso volumen de negociación o en un intervalo de tiempo corto, la respuesta correcta es «datos insuficientes», y el diseño respeta eso en lugar de inventar una cifra.
- Es sensible al umbral. El valor predeterminado de 0,95 es estándar, pero la forma y la escala ajustadas varían en función de él. Una aplicación seria estudiaría esa sensibilidad en lugar de confiar en un único ajuste, razón por la cual el cuantíl se presenta como un parámetro de entrada.
- Mide la magnitud, no el momento. Vale la pena repetirlo porque es el error más común. Un índice de cola ascendente no es una señal direccional.
- La cola puede dejar de estar bien definida. A medida que la forma ajustada se aproxima a uno, el «shortfall esperado» deja de existir, y un cero en ese régimen es en sí mismo información, más que un fallo.
Estructura de archivos
Un indicador y un encabezado. El encabezado se incluye como <EVT\GPDModel.mqh>, por lo que debe ubicarse en su subcarpeta EVT dentro de «Include».
| Archivo | Función | Descripción |
|---|---|---|
| Indicators\EVT\EVTCrashGauge.mq5 | El indicador | Crea la serie de pérdidas a la baja a partir de la ventana móvil de los precios de cierre, ajusta el modelo al ritmo de las barras, traza el VaR de EVT y mantiene el panel en el gráfico con la lectura de la cola codificada por colores. |
| Include\EVT\GPDModel.mqh | Motor de colas | La clase CGPDModel: selección de umbrales, extracción de excedencias, ajuste de máxima verosimilitud de la GPD mediante optimización restringida con ALGLIB, VaR y déficit esperado, y la enumeración de estados que controla cada lectura. |
El motor alimenta al optimizador con una estimación por el método de los momentos antes de ejecutar la máxima verosimilitud, y restringe la forma a un rango razonable, de modo que una ventana patológica lo empuje hacia un ajuste rechazado en lugar de hacia uno erróneo que parezca plausible.
Base de investigación
La implementación sigue el tratamiento estándar de «picos por encima del umbral» (Peaks-Over-Threshold) de la teoría de los valores extremos: el teorema de Pickands-Balkema-de Haan sobre la convergencia de los excesos respecto al umbral hacia la distribución de Pareto generalizada, la estimación de máxima verosimilitud de su forma y escala, y las expresiones habituales de la GPD-POT para el valor en riesgo (VaR) y el déficit esperado.
En un artículo complementario se deriva el método, se explica el motor y el indicador línea por línea, y se integra la estimación de la cola en un Asesor Experto para el cálculo del tamaño de la posición con el fin de evaluar su comportamiento en el Probador de Estrategias: «Teoría de los valores extremos en MQL5: Creación de un indicador de riesgo de cola más allá del VaR de Monte Carlo».
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/75557
RSI Histogram
Este es un indicador personalizado de MQL5 para MetaTrader 5 llamado «RSI Histogram». Traza la línea estándar del RSI en una ventana independiente, además de una versión en forma de histograma codificada por colores de los mismos valores del RSI, cuyo color varía en función del impulso:
Relative Moving Average EA
Una implementación en MQL5 de las cuatro estrategias cruzadas del marco de «medias móviles relativas» de Bloch, con sus reglas de salida «Adaptive Crossover Exit» que varían según el régimen de volatilidad. Las entradas y salidas se realizan en el espacio de fractiles, por lo que los umbrales tienen el mismo significado en todos los símbolos.
GoldLondonBreakout
Se mantienen las posiciones dentro del rango de la sesión asiática en XAUUSD y, a continuación, se coloca un par OCO de ruptura (BuyStop/SellStop) para la apertura de Londres, con stops basados en el ATR y un tamaño de posición en función del porcentaje de riesgo. Sin indicadores, sin discrecionalidad: el rango se mide, no se adivina.
Sessionvolatilityheatmap
Muestra el rango de precios medio por hora de la jornada bursátil en forma de mapa de calor en el gráfico, además de un sombreado correspondiente a las sesiones de Asia, Londres y Nueva York detrás de las velas, para que puedas ver cuándo se mueve realmente un valor, en lugar de limitarte a hacer conjeturas.