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
Asesores Expertos

Repaint Inspector - Asesor Experto para MetaTrader 5

Quoc Dat Quach
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself.
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
14
Ranking:
(1)
Publicado:
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Comprueba si un indicador se actualiza, en lugar de dar por buena la afirmación sin más. Se adjunta a un gráfico, vuelve a leer los búferes del indicador sometido a prueba en las barras que ya se han cerrado y cuenta cada cambio que detecta allí: valores que se mueven, valores que aparecen y valores que desaparecen, junto con el punto más lejano en el historial en el que eso sigue ocurriendo.

repaint-inspector-zigzag-panel

Ejemplos: ZigZag(12,5,3) en XAUUSD M1. El panel se capturó a la 1 h 25 min 12 s de la ejecución, 87 segundos antes de que se detuviera, por lo que los totales de la tabla siguiente son ligeramente superiores. Los colores del panel se configuraron en negro sobre blanco para la captura de pantalla; los valores predeterminados son texto claro sobre un panel oscuro.

El problema

La «ausencia de repintado» es la afirmación más frecuente en las descripciones de los indicadores y la más difícil de comprobar. La prueba habitual consiste en mirar el gráfico, recordar más o menos dónde estaban las flechas, recargar el indicador y volver a mirar. Esa prueba pasa por alto los dos casos que realmente suponen una pérdida de dinero.

El primero es que un valor de una barra que cerró hace tiempo cambie mientras el gráfico permanece abierto. El ojo no lo percibe: la flecha se desplaza unos pocos píxeles, o desaparece mientras la atención se centra en el borde derecho del gráfico.

El segundo es un indicador que se comporta de forma normal mientras está activo y muestra un historial diferente tras recargarse, que es exactamente lo que le ocurre al usuario al cambiar de marco temporal, reiniciar la terminal o abrir un nuevo gráfico.

Ambos casos son cuantificables. Lo que se necesita es algo que registre lo que el indicador publicó la primera vez que lo hizo y que, a continuación, siga comprobándolo.

Lo que mide

  • Una barra se identifica por su hora de apertura, nunca por su desplazamiento, por lo que las nuevas barras, el desplazamiento y la recarga del historial no pueden confundirse con un cambio.
  • Solo se comparan las barras cerradas, a partir del desplazamiento 1. La barra que aún se está formando cambia por definición y no indica nada sobre el repintado.
  • El primer valor observado para una barra cerrada se convierte en la referencia. Cada lectura posterior se compara con la lectura anterior, lo que cuenta como un evento, y con la primera lectura, lo que mide la deriva.
  • Se contabilizan por separado tres tipos de eventos, ya que no todos tienen la misma gravedad:
    • Cambiado: un valor pasó a ser otro diferente.
    • Aparecido: una casilla vacía ha recibido un valor, por lo que se ha materializado una señal en una barra que ya estaba cerrada.
    • Desaparecido: se ha borrado un valor publicado. Este es el peor tipo: la señal sobre la que actuó un operador ya no figura en el historial que ve el siguiente lector.
  • La cifra principal es MaxShift, el mayor desplazamiento en el que se ha observado jamás cualquier evento. Un indicador que solo redibuja la última barra cerrada es algo muy distinto de uno que reescribe quince barras del historial.
  • Cada evento se registra en un archivo CSV con la hora de la barra, el búfer, el desplazamiento en el momento de la detección y los valores antiguo y nuevo, de modo que el informe se puede auditar en lugar de simplemente creerlo.
  • El indicador sometido a prueba se crea con IndicatorCreate a partir de una lista de parámetros analizados, por lo que cualquier indicador personalizado puede inspeccionarse sin necesidad de editar ni recompilar nada. Los parámetros analizados se registran en el diario al inicio, lo que hace que una lista de parámetros errónea sea visible en lugar de pasar desapercibida.
  • Opcionalmente, el identificador se libera y se vuelve a crear cada N minutos. El historial registrado no se restablece deliberadamente, de modo que la ejecución también detecta el indicador que permanece inactivo mientras está activo y publica un historial diferente tras una recarga.
  • Una comprobación se descarta y se cuenta como omitida, en lugar de como evidencia, siempre que el identificador del indicador aún no exista, el indicador aún no se haya calculado, haya menos barras cerradas que la profundidad solicitada, no se pueda copiar un búfer o la serie se desplace entre la lectura de los tiempos y la lectura de los valores.

Muestra una muestra: un valor que existe durante menos tiempo que el intervalo de comprobación puede pasarse por alto. Se trata de una limitación real y más adelante se ofrece una medición al respecto.

Ejemplo medido

Todo lo que se muestra a continuación utiliza indicadores que vienen integrados en la plataforma, por lo que cualquiera puede reproducirlo.

En tiempo real, XAUUSD M1, 1 hora y 26 minutos

Cuatro copias en cuatro gráficos de la misma terminal y la misma fuente de datos, 30 de septiembre de 2026, de las 02:19 a las 03:46, hora del servidor; se observaron 300 barras cerradas, con una comprobación por segundo.

Indicador sometido a pruebaBúferComparacionesModificadoAparecidoDesaparecidoMaxShiftVeredicto
Ejemplos\ZigZag (12,5,3)01 315 713001715REPINTADOS
Ejemplos\ZigZag (12,5,3)11 315 7130031REPINTADOS
Ejemplos\ZigZag (12,5,3)21 315 71300103REPAINTS
Ejemplos\Media móvil personalizada (13,0,2)01 305 513000-ESTABLE
Ejemplos\Fractales, confirmación tardía01 303 71301303REPINTADOS
Ejemplos\Fractales, confirmación tardía11 303 71301203REPINTADAS

4387, 4353 y 4347 comprobaciones respectivamente, 0 / 0 / 1 comprobaciones omitidas, 0 resincronizaciones, 0 recargas de identificadores. Los archivos de eventos contienen 30, 0 y 25 filas, lo que equivale a la suma de las tres columnas de eventos en cada caso.

Los recuentos de comparaciones no son números redondos y no deberían serlo: se han abierto 87 nuevas barras M1 durante la ejecución, y una barra que acaba de abrirse aún no tiene historial de barras cerradas. Para cada instancia, (comprobaciones - 1) x 300 - 87 reproduce exactamente el recuento de comparaciones indicado.

Tres firmas diferentes en una tabla:

  • ZigZag borra su propio historial. Se borraron 17 valores del búfer de ZigZag representado gráficamente, uno de ellos 15 barras después de que esa barra se hubiera cerrado, y 13 más de los dos búferes de cálculo que lo precedían. Nada se ha movido: un extremo de ZigZag es el máximo o el mínimo de su barra y no puede desplazarse, por lo que se elimina y se vuelve a publicar en otro lugar. Por eso los eventos han «desaparecido» y la columna «delta» permanece vacía.
  • Una media móvil de barras cerradas no se mueve. 1 305 513 comparaciones, ni un solo evento.
  • Los fractales constituyen un tercer caso, y la herramienta los separa del primero. 25 eventos, todos ellos «Aparecidos», ninguno «Modificados», ninguno «Desaparecidos», todos en el desplazamiento 3. Eso no es repintado, es una confirmación tardía: un fractal necesita dos barras más antes de poder dibujarse, por lo que el valor aparece legítimamente tres barras atrás y luego se mantiene. La columna «veredicto» sigue indicando «REPAINTS», porque la herramienta informa de lo que ha observado y deja el juicio a criterio del lector. Un indicador cuyos eventos sean todos de tipo «Aparecido» en un turno fijo es utilizable con ese retraso incorporado; un indicador cuyos eventos sean de tipo «Desaparecido» en turnos dispersos no lo es.

Strategy Tester, la misma medición en diez segundos

Ejemplos\ZigZag(12,5,3), XAUUSD M1, del 28/09/2026 al 29/09/2026, modelado OHLC de 1 minuto, 300 barras cerradas analizadas:

contadorvalor
veredictoREPAINTS
comprobaciones5 512
comparaciones en barras cerradas1 651 923
cambiadas / aparecidas / desaparecidas0 / 3 / 342
barras distintas que perdieron un valor341
barras distintas con al menos un evento343
MaxShift28
comprobaciones omitidas / resincronizaciones0 / 0
filas CSV345 (= 342 + 3)

En una jornada bursátil, el ZigZag eliminó 342 valores que ya había publicado en barras que estaban cerradas en ese momento, y una de esas eliminaciones se produjo 28 barras después de que la barra en cuestión se hubiera cerrado. Aparecieron tres valores en barras ya cerradas. Solo uno de los tres era un valor que volvía a aparecer: la barra de las 17:06 perdió 4126,184, recuperó exactamente la misma cifra veinte segundos después y la volvió a perder un minuto más tarde. Esa es también la razón por la que Max |delta| marca 0,00000000 para la serie; se trata de una medición, no de una brecha.

repaint-inspector-cambios-en-zigzag

Los 345 eventos de ese día, ordenados por el turno en el que se detectaron. La mayoría de los repintados se producen una o dos barras atrás, por lo que no basta con observar solo la última barra cerrada.

repaint-inspector-stable-panel

Ejemplos\Media móvil personalizada (13,0,2), mismo símbolo y misma ventana de ejecución que el ZigZag anterior: 1 291 114 comparaciones en el momento de la captura de pantalla y ni un solo valor modificado. El recuento de comparaciones aparece junto al veredicto a propósito: «ESTABLE» solo tiene valor si se tiene en cuenta el número que lo acompaña.

Qué cambia al «tratar 0,0 como si no fuera un valor» y cuál es la magnitud de la brecha de muestreo

La cuarta copia ejecutó el mismo ZigZag con esa opción desactivada, por lo que 0,0 se cuenta como un valor normal: 1 308 513 comparaciones, 18 + 3 + 11 = 32 eventos, todos ellos «Changed», el mismo «MaxShift» de 15 y un «Max |delta|» de 4184,08800000 en el búfer principal. Esa cifra es la clave, ya que el «cambio» consiste en que un pico se sustituye por 0,0. Ambas configuraciones describen el mismo repintado; la predeterminada lo denomina correctamente.

Las dos copias no vieron exactamente la misma lista, y vale la pena saberlo. La cuarta copia registró dos eventos que la primera pasó por alto: la barra 03:32:00 en los búferes 0 y 2, detectada a las 03:33:01. Las dos copias se iniciaron con 14 segundos de diferencia, y el valor existió durante menos de un intervalo de comprobación, por lo que una de ellas lo muestreó y la otra no. Con un intervalo de un segundo en M1, esa es la resolución del instrumento.

repaint-inspector-delta-panel

La misma lectura de ZigZag con 0,0 se contabilizó como un valor. Ahora, cada eliminación aparece como «Modificada» con un delta del tamaño del precio. Útil como verificación cruzada, pero engañoso como descripción.

Auditoría de las cifras

Tampoco se aceptaron los contadores sin más. Se comparó una reimplementación independiente en Python de Examples\ZigZag, ejecutada sobre las velas sin procesar obtenidas del terminal, con los archivos de eventos:

  • Ejecución en tiempo real: en cada una de las 17 barras en las que el búfer trazado perdió un valor, dicho valor no aparece en la reproducción de hoy, y en las 17 la última lectura de la herramienta coincide con el valor reproducido.
  • Ejecución de prueba: 343 barras con eventos, las mismas dos comprobaciones, sin discrepancias: 341 valores perdidos ausentes en la reproducción, y 343 de 343 últimas lecturas iguales a ellos.

Datos de entrada

EntradaPor defectoDescripción
Indicador a inspeccionar (ruta iCustom, sin .ex5; ejemplo: Examples\ZigZag)vacíoRuta del indicador personalizado relativa a MQL5\Indicators, sin la extensión, tal y como lo espera iCustom. Se deja vacío a propósito: si no se rellena nada, la herramienta lo indica en el diario y en el panel y no realiza ninguna medición, en lugar de señalar un indicador que quizá no se encuentre en tu terminal. Si la ruta es incorrecta en un gráfico en tiempo real, la herramienta permanece conectada y vuelve a intentarlo cada 30 segundos, por lo que la entrada se puede corregir sin necesidad de eliminarla. Medición en XAUUSD M1 con una ruta incorrecta: la herramienta mostró el código de error una vez; la terminal añadió su propio mensaje de «no se puede cargar» en cada intento (con un intervalo de 30,4 y 30,7 segundos), y al corregir la ruta se inició la medición sin desactivar nada.
Parámetros, separados por comas (vacío = valores predeterminados del indicador)vacíoLa lista de entradas del indicador sometido a prueba, por ejemplo, 12,5,3. Cada elemento se clasifica según su contenido: «true» y «false» se convierten en «bool», un número que contenga un punto o un exponente se convierte en «double», un número sin formato se convierte en «int», cualquier otra cosa se convierte en una cadena, y se eliminan las comillas que lo rodean. La lista analizada se imprime en el diario al inicio, por lo que una lista incorrecta se detecta de inmediato. Si se deja vacío, el indicador se ejecuta con sus propios valores predeterminados.
Número de búferes a supervisar (1..32)1Cuántos búferes se leen. Los búferes de cálculo también se tienen en cuenta. Si falta un búfer que el indicador no tiene, toda la comprobación falla: se cuenta como una comprobación omitida y las primeras apariciones se registran en el diario con el código de error, de modo que se hace visible en lugar de pasar desapercibida.
Símbolo (vacío = símbolo del gráfico)vacíoInspeccionar un indicador en otro símbolo sin abrir su gráfico.
Marco temporalActualAnalizar un indicador en otro marco temporal.
Barras cerradas observadas (desplazamiento 1..N)300Profundidad de la comprobación. El número de barras multiplicado por los búferes tiene un límite de 200 000 ranuras; por encima de ese límite, la profundidad se reduce y se escribe una línea en el registro.
Mínimo de segundos entre comprobaciones, tiempo simulado en el simulador (0 = cada tick)1Limitación. Un segundo detecta cualquier actualización ante la que un usuario podría reaccionar y consume mucha menos CPU que cada tick, pero puede pasarse por alto un valor que exista durante menos tiempo que el intervalo. En el Strategy Tester se utiliza el reloj simulado en lugar del reloj real, por lo que allí funciona el mismo ajuste.
Ignorar |cambio| inferior a este valor (0 = contar cada cambio)0,0Tolerancia absoluta en las unidades del búfer, para un indicador que se recalcula a partir de números de coma flotante y presenta fluctuaciones en los últimos dígitos. 0 cuenta cada diferencia. Un cambio que no supere la tolerancia no se registra en absoluto: ni evento, ni fila CSV, ni contribución a |delta| máximo.
Tratar 0,0 como «sin valor» (búferes de tipo flecha/ZigZag)trueMuchos indicadores de señal publican 0,0 en lugar de EMPTY_VALUE para indicar «ausencia de señal». Con esta opción activada, 0,0 se considera vacío y esos eventos se registran como «Aparecido» y «Desaparecido». Desactívala para un búfer en el que exactamente cero sea un valor válido.
Recrea el identificador del indicador cada N minutos (0 = nunca)0Libera el identificador y solicita uno nuevo al terminal, lo que desencadena un recálculo completo, a menos que otro programa siga manteniendo el mismo indicador con los mismos parámetros. El historial registrado no se borra, por lo que esto permite detectar el indicador que se mantiene estable mientras se ejecuta y cambia tras una recarga.
Detener la medición tras N minutos (0 = ejecutarse hasta que se elimine)0Finaliza la medición y congela el informe, lo cual resulta conveniente para una ejecución sin supervisión.
Escribir cada evento en MQL5\Files (CSV)trueEl archivo de eventos.
Nombre del archivo CSV (vacío = automático)vacíoLos nombres automáticos se generan a partir del símbolo, el marco temporal y la hora de inicio. Si ya hay un archivo con ese nombre abierto, porque se ha iniciado otra copia en el mismo minuto, se añade un sufijo numérico en lugar de ejecutar la copia sin ningún archivo. Un archivo cerrado con el mismo nombre procedente de una ejecución anterior en el mismo minuto se sobrescribe, así que asigna un nombre propio cuando la ejecución sea importante.
Dejar de escribir tras este número de filas100000Protégete contra un indicador que se actualiza en cada tick. El recuento continúa tras el límite; solo el archivo deja de crecer, y una línea del diario lo indica.
Mostrar el panel de informes en el gráficotrueDesactívalo para una ejecución sin supervisión o de prueba.
Distancia del panel X, píxeles a 96 ppp12Posición. El panel se escala según los ppp de la pantalla.
Distancia del panel en el eje Y, píxeles a 96 ppp20Posición.
Tamaño de fuente, puntos (4 o más; el panel se adapta a los ppp de la pantalla)9El panel es una tabla con fuente monoespaciada. Redúcelo en una pantalla de alta resolución o en un gráfico pequeño; las capturas de pantalla anteriores utilizan 4.
Esquina del panelEsquina superior izquierdaEsquina de anclaje.
Color de fondo del panelgris oscuroColores del panel. Una copia por gráfico, como en cualquier asesor experto; varios gráficos pueden ejecutar copias al mismo tiempo.
Color del borde del panelgris claro
Color del texto del panelgris claro
Color del encabezado cuando todos los búferes están establesverde lima
Color del encabezado cuando un búfer se actualizatomate

El informe

Este es el bloque de resumen que la herramienta imprimió en el diario cuando se detuvo la ejecución en tiempo real de ZigZag anterior, copiado textualmente. El panel del gráfico muestra la misma tabla, con el tiempo de ejecución alineado a la derecha:

=== Resumen de Repaint Inspector =====================================
Repaint Inspector   Examples\ZigZag (12,5,3)
XAUUSD M1   300 barras cerradas observadas   en ejecución 01:26:39
comprobaciones 4 387   omitidas 0   resincronizaciones 0   recargas de controladores 0
Buf  Veredicto      Comparaciones    Modificados   Aparecidos   Desaparecidos   MaxShift    Máx. |delta|
  0  REPAINTS       1 315 713          0          0         17         15              -
  1  REPAINTS       1 315 713          0          0          3          1              -
  2  REPAINTS       1 315 713          0          0         10          3              -
CSV: RepaintInspector_XAUUSD_M1_20260930_0219.csv (30 filas)
iniciado el 30/09/2026 a las 02:19:31, hora del servidor; 4387 comprobaciones; 0 omitidas; 0 resincronizaciones; 0 recargas de identificadores
total de eventos: 30; filas del CSV: 30
búfer 0: REPAINTS, comparaciones: 1 315 713; modificados: 0; aparecidos: 0; desaparecidos: 17; barras afectadas: 17
búfer 0: desplazamiento máximo 15 (DESAPARECIDO en la barra del 30/09/2026 a las 02:59)
búfer 0: |delta| máximo ninguno
búfer 0: primer evento 30/09/2026 a las 02:23:02, último evento 30/09/2026 a las 03:46:03

El archivo de eventos en MQL5\Files contiene una fila por evento:

detect_time;bar_time;shift_at_detect;buffer;event;old_value;new_value;delta;drift_from_first;after_reload
28/09/2026 17:11:20;28/09/2026 17:06:00;5;0;VANISHED;4126,18400000;EMPTY;;;0

Un valor vacío se indica como «EMPTY» y una diferencia indefinida se deja en blanco, de modo que ningún lector pueda confundir un número que falta con un cero. Un segundo archivo, <nombre>_summary.csv, contiene una fila por búfer con cada contador, además del indicador, sus parámetros, símbolo, intervalo de tiempo y profundidad, y se actualiza cada 15 segundos mientras se ejecuta el proceso, de modo que las cifras se pueden volver a contabilizar a partir del archivo de eventos sin necesidad de analizar un registro. El diario recoge el bloque inicial, los primeros 20 eventos completos y el resumen anterior cuando se retira la herramienta.

Cómo utilizarlo

  1. Coloca el indicador que desees comprobar en MQL5\Indicators y toma nota de su lista de parámetros.
  2. Añade Repaint Inspector a un gráfico del símbolo y del marco temporal con el que operas habitualmente, introduce la ruta y los parámetros, y configura el número de búferes.
  3. Déjalo en ejecución durante las horas en las que operas. El repintado es una propiedad de la actividad del mercado, no del reloj, y una tranquila tarde de domingo no prueba nada.
  4. Lee primero MaxShift, luego la distinción entre «Changed», «Appeared» y «Vanished», y a continuación abre el archivo CSV y examina unas cuantas filas.
  5. Si el indicador supera esa prueba, configura la recarga del indicador en 30 minutos y vuelve a ejecutarlo.

Límites, sin rodeos

  • La herramienta no puede demostrar la ausencia de repintado. Solo puede no encontrar ninguno durante el periodo medido, por lo que el recuento comparativo aparece junto a cada veredicto.
  • Toma muestras en el intervalo de comprobación. Un valor que aparece y desaparece dentro de un intervalo puede pasarse por alto, y la medición anterior muestra que eso ocurre dos veces en una hora y media.
  • Mide lo que un indicador publica a través de sus búferes. Un indicador que dibuja objetos en el gráfico en lugar de llenar los búferes resulta invisible para la herramienta.
  • El Strategy Tester resulta útil en este caso porque comprime un día en segundos, pero un repaint del tester y un repaint en tiempo real no son automáticamente lo mismo. Cuando la respuesta sea importante, ejecútalo en tiempo real.
  • En el Probador de Estrategias, el indicador sometido a prueba debe estar presente y compilado antes de que comience la ejecución. El probador trata un IndicatorCreate fallido como un error crítico y descarga el experto, algo que ningún manejo de errores dentro de la herramienta puede cambiar: si se mide con una ruta deliberadamente errónea, crear el identificador en OnInit da como resultado un «error de creación del indicador» y, a continuación, un «error crítico en OnInit», mientras que crearlo en la primera comprobación genera los mismos seis registros de error que terminan en «error crítico en OnTester». En un gráfico en tiempo real, la misma ruta errónea no es fatal: la herramienta permaneció conectada y volvió a intentarlo, y la ruta corregida comenzó a medir correctamente.
  • Esto no dice nada sobre si un indicador es rentable. Un indicador que no se repinta puede seguir siendo inútil, y algunos indicadores que se repintan se utilizan de forma deliberada y correcta.
  • No requiere funciones de trading, ni DLL, ni acceso a la red, ni archivos externos. Lee los búferes y escribe archivos CSV en MQL5\Files.

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

ATS Liquidity City - liquidity pools and sweeps, drawn as a neon city ATS Liquidity City - liquidity pools and sweeps, drawn as a neon city

Muestra dónde es probable que se encuentren los stops y cuáles se acaban de activar. Los «pools» de liquidez son máximos y mínimos de oscilación confirmados que el precio aún no ha superado, máximos y mínimos iguales (un «pool» más grande) y el máximo y mínimo de ayer. Cuando una barra cotiza más allá de un grupo, se marca como «barrida», y como «capturada y rechazada» si esa misma barra cierra de nuevo dentro del grupo. Sin repintado: un swing solo se utiliza tras N barras cerradas a cada lado. El panel es una ciudad de neón dibujada en un CCanvas: el precio es un coche volador, las órdenes stop de venta son torres situadas debajo de él, las órdenes stop de compra son plataformas flotantes situadas encima, los niveles de ayer son vallas publicitarias doradas, un foco barre el cielo y un teletipo muestra las operaciones de hoy. Dos búferes proporcionan el grupo activo más cercano por encima y por debajo para su uso en un asesor experto. Solo indicador: nunca opera.

Symbol Spec Auditor Symbol Spec Auditor

Un panel gráfico que muestra los detalles de las especificaciones del contrato que determinan el tamaño de la posición y los costes de negociación (valor por punto, coste del spread, margen, swap y normas de ejecución) en la divisa de la cuenta; avisa de los ajustes del bróker que incumplen de forma encubierta las reglas sobre el tamaño de los lotes; y exporta el informe de auditoría de cada símbolo de Market Watch a un archivo CSV.

Accumulation/Distribution Accumulation/Distribution

El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.

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.