Mira cómo descargar robots gratis
¡Búscanos en Facebook!
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
Scripts

RepaintTest - measure whether a drawing indicator repaints - script para MetaTrader 5

Yogeswaran Suppiah
Yogeswaran Suppiah
Desarrollador independiente de MetaTrader radicado en Malasia. Publico herramientas de análisis gráfico para traders discrecionales. En MQL5 desde 2015.
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
16
Ranking:
(2)
Publicado:
RepaintTest.mq5 (17.42 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Casi todas las descripciones de los indicadores contienen la expresión «sin repintado». Casi ninguna incluye una cifra. La expresión no puede ser falsa, ya que no va acompañada de ningún procedimiento: tanto un desarrollador que nunca lo ha comprobado como uno que lo ha comprobado exhaustivamente escriben la misma frase. Este script sustituye la expresión por una cifra.

La invariante

Una vez que una barra se ha cerrado y se ha procesado, ningún objeto que el indicador haya dibujado sobre ella puede cambiar jamás. Ni moverse, ni cambiar de color, ni modificar su texto, ni desaparecer. Esa es una afirmación que puede ser falsa, y por eso merece la pena comprobarla.

Método

Se alimenta un símbolo personalizado con un fragmento inicial de datos históricos reales, se aplica el indicador mediante una plantilla y se registra cada objeto que dibuja. Se añaden más barras y se fuerza al gráfico a realizar un recálculo completo, de modo que el indicador reconstruye cada objeto desde cero sobre un historial más extenso. A continuación, cada objeto de la pasada anterior que se encuentre en una barra ya cerrada se busca en la nueva pasada y se compara campo por campo: ambas horas de referencia, ambos precios de referencia, el color y el texto. Repite este proceso tantas veces como desees.

Una reconstrucción completa es una prueba más exigente que un tick incremental. El indicador tiene que reproducir un mapa idéntico a partir de un historial más extenso, utilizando índices de matriz diferentes, sin recordar lo que dibujó la última vez. Eso es exactamente lo que provoca un usuario al desplazarse lo suficiente hacia atrás como para que la terminal recupere barras más antiguas, y es ahí donde los nombres de los objetos basados en el ÍNDICE de la barra, en lugar de en la HORA de la barra, fallan.

Lo que cuenta

Los cambios y las desapariciones se cuentan por separado, y solo un cambio implica que la afirmación es falsa. La mayoría de los indicadores de dibujo eliminan a propósito los objetos antiguos una vez que se supera un límite, por lo que una desaparición suele deberse a tu propia configuración de «MaxObjects» o «HistoryBars», más que a un defecto. Ejecútalo sin esos límites.

Una ejecución en la que no se haya comparado nada se clasifica como «INCONCLUSIVA», nunca como «aprobada». El error más peligroso que puede tener un sistema de pruebas es informar de un resultado satisfactorio en una ejecución vacía, ya que ese es el dato que acaba citándose.

El resultado es un archivo CSV en MQL5\Files, con una fila por símbolo, marco temporal y paso, que incluye los recuentos de objetos comparados, modificados y desaparecidos, así como el primer objeto problemático. Suma la columna «marks_compared» y obtendrás la cifra que puedes publicar, junto con el archivo que la respalda.

Uso

1. Establece «Prefijo» con el prefijo del nombre del objeto de tu indicador. Incluye en «Excluir» todo aquello que cambie por diseño: una leyenda que se redibuja en cada tick, un temporizador de cuenta atrás. Esos no son «marks». Declararlos aquí es más honesto que filtrarlos en silencio.

2. Adjunta tu indicador a un gráfico con todas las restricciones de dibujo desactivadas y guarda ese gráfico como plantilla. Asigna la plantilla a ese gráfico.

3. Aumenta el valor de «SettleMs» hasta que el recuento de marcas en la primera pasada deje de variar entre ejecuciones. Si el valor es demasiado bajo, no se producen errores, sino desapariciones fantasma.

4. Provoca un fallo a propósito una vez: desplaza un objeto una barra y comprueba que el script lo notifique, indicando el nombre del campo. Un arnés que nunca hayas visto fallar aún no es prueba de nada.

Lo que no te dirá

Si el indicador es preciso o si sus señales son fiables. Responde a una pregunta concreta, y esa es la única razón por la que la respuesta tiene algún valor.

Dos pruebas que parecen pruebas pero no lo son, ambas probadas y descartadas antes que esta: el Strategy Tester, donde los objetos de un indicador basado en iCustom no son enumerables en absoluto por un EA en MT4; y la variación de la propia entrada HistoryBars del indicador en un gráfico en tiempo real, lo que cambia el punto de inicio del bucle pero deja intactos rates_total y todos los índices de la matriz, por lo que el tipo de error que se pretende detectar con esto nunca se produce.

Es gratuito y no requiere atribución. Si encuentra algo en tu código, me encantaría saber qué es.

Resultado de la prueba Repaint: 199 984 comprobaciones de invariantes, 0 modificadas, 0 desaparecidas

Cómo funciona la prueba: inicializar, añadir barras, forzar una reconstrucción completa, comparar

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/76632

Sniper Gold Hybrid Recovery EA Sniper Gold Hybrid Recovery EA

EA de recuperación de cesta para XAUUSD en M15 con espaciado ATR adaptativo, validación de la estructura LL/LH, control dinámico del RSI, detección de caídas bruscas, filtro de noticias y ajuste inteligente de operaciones.

Volume Profile Levels Indicator Volume Profile Levels Indicator

Crea un histograma de volumen horizontal sobre una ventana retrospectiva reciente y marca el Punto de Control (POC) y el Área de Valor utilizando el algoritmo estándar de expansión del área de valor TPO/volumen, y no solo el POC ± un desplazamiento fijo. Se actualiza una vez por cada nueva barra y se muestra como una barra lateral junto al precio.

Support Resistance zig zag based Support Resistance zig zag based

«Support Resistance zig zag based» es un indicador de acción del precio diseñado para trazar de forma automática y dinámica los niveles de soporte, resistencia y las zonas de transición (zonas de cambio de tendencia) en el gráfico. Se centra exclusivamente en trazar con claridad la estructura de los precios y en resaltar las zonas clave de rebote (SBR y RBS). Además, incluye un panel interactivo para supervisar la tendencia del mercado en tiempo real.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.