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

Relative Moving Average EA - Asesor Experto para MetaTrader 5

Visualizaciones:
15
Ranking:
(1)
Publicado:
\MQL5\Include\RMA\
RegimeDetector.mqh (16.47 KB) ver
RmaCore.mqh (13.34 KB) ver
RmaDisplay.mqh (13.66 KB) ver
RmaTypes.mqh (5.87 KB) ver
SignalEngine.mqh (30.95 KB) ver
TradeManager.mqh (23.52 KB) ver
RMA_Engine.mq5 (20.93 KB) ver
RMA_Panel.mq5 (9.35 KB) ver
RMA.mq5 (19.54 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Descripción general

Este asesor experto opera según el marco de la media móvil relativa (RMA) presentado por el Dr. Daniel Alexandre Bloch en su libro *A Course on Systematic Trading with RMA*. Implementa las cuatro estrategias de cruce descritas en el artículo, junto con su «salida de cruce adaptativa», y cada entrada y salida se expresa en el espacio de fractiles en lugar de en precios.

La premisa es que una ventana de precios es más informativa como distribución que como media. En cada barra, la RMA toma la ventana móvil de W cierres, los reexpresa como rendimientos respecto a su propia media e indica en qué posición se sitúa el más reciente dentro de esa distribución como un fractil en [0, 1]. El objetivo del artículo es, por tanto, aprovechar las oscilaciones de esa posición entre los extremos de la distribución: posición larga mientras se desplaza del mínimo hacia el máximo, y posición corta cuando se invierte la tendencia. Dado que un fractil es una posición en la distribución y no una distancia, un umbral como 0,9 tiene el mismo significado para cualquier valor y en cualquier régimen de volatilidad, lo que hace que las reglas sean transferibles.

Nota: no se trata del «RMA» que muestran algunas plataformas de gráficos (el suavizado de Wilder, una variante de la EMA). A pesar de compartir las siglas, se trata de un objeto completamente diferente.

El EA no contiene fórmulas matemáticas. Todo ello reside en el indicador complementario RMA_Engine, que el EA carga a través de iCustom y lee con CopyBuffer en cada barra cerrada. Esa separación es deliberada y aporta dos propiedades muy valiosas: el EA no puede discrepar del gráfico en cuanto al fractil de una barra determinada, ya que solo hay un cálculo; y las reglas nunca intervienen en una orden, por lo que pueden reproducirse a lo largo del historial mediante un script sin que intervenga ningún bróker.


Cómo opera

Las cuatro fases. La estrategia se basa en los recorridos de la propia distribución de la ventana. Al alcanzar un extremo, se activa un lado —lo que constituye la prueba de origen del documento— y la entrada se activa cuando el fractil cruza posteriormente un intervalo cuantílico en la dirección del recorrido. El extremo no es el desencadenante; lo es el cruce, por lo que una entrada puede activarse en cualquier punto a lo largo del recorrido. Los nombres describen el movimiento del precio, no la posición:

  • Cruce largo-inverso. El fractil abandona el máximo y se dirige hacia el mínimo. El EA aprovecha ese descenso tomando posiciones cortas.
  • Cruce corto inverso. El caso inverso. El fractil abandona el mínimo y asciende hacia el máximo, aprovechándose con una posición larga.
  • Cruce largo-revertido. Un descenso que comenzó en el máximo da la vuelta al alza antes de alcanzar el mínimo. El EA lo sigue de vuelta hacia el máximo, en posición larga.
  • Corto-cruzado-revertido. Una subida que comenzó en el mínimo da la vuelta y vuelve a bajar antes de alcanzar el máximo; se sigue el movimiento de vuelta a la baja, en posición corta.

Entre ellas, las cuatro cubren las dos formas en que un movimiento parcial puede resolverse. Cada posición abierta pertenece a una «rama» concreta, y es la rama la que decide qué prueba de salida se aplica y en qué se convierte una reversión, de modo que la misma lectura del fractil cierra una posición y mantiene otra.

Las cuatro estrategias transversales que abarcan la distribución

Las cuatro etapas en una distribución: las etapas de inversión recorren un trayecto completo de un extremo al otro; las etapas de reversión se toman cuando un trayecto da la vuelta antes de alcanzar el extremo opuesto.

La salida adaptativa. Aquí es donde el detector de régimen cobra importancia. El artículo define dos salidas básicas y, a continuación, una tercera que elige entre ellas:

  • Cruce completo de la distribución. Asume que el recorrido se completa, de modo que la salida de un lado coincide con la entrada del otro. Una posición corta abierta desde el máximo se cierra solo cuando el cuantíl alcanza realmente el mínimo y gira al alza, y dado que ese giro es en sí mismo el origen de una nueva operación en sentido contrario, la salida se invierte directamente en ella.
  • Disparador de reversión en el extremo. No hace ninguna suposición sobre el extremo más alejado. La posición se cierra ante la primera evidencia sólida de que el movimiento que seguía se ha detenido: una racha de pasos en el intervalo cuantílico en la dirección contraria, un cruce de vuelta a través de la zona mediana o un único paso lo suficientemente grande como para ser revelador.
  • Salida de cruce adaptativo. La regla del artículo, y lo que implementa el EA: el disparador de reversión durante la expansión y la transición, donde son probables los recorridos parciales, pasando al cruce completo una vez identificada la contracción. Los tramos de reversión siempre utilizan el disparador de reversión, en todos los regímenes.

La prueba de longitud de racha es lo que evita que el disparador de reversión se active por ruido. Se acumula una racha con signo de pasos de intervalo mientras el fractil sigue moviéndose en la misma dirección y se reinicia cuando cambia la dirección, por lo que «retroceder dos intervalos» significa que el movimiento realmente ha cambiado de sentido y no se ha limitado a una pausa.

La salida de seguridad. Por encima y antes de cualquier salida de la estrategia se encuentra una comprobación de movimiento adverso. Una posición de reversión a la media está «fuera de juego» por su propia naturaleza durante un tiempo, por lo que estar «fuera de juego» no puede ser la prueba de salida; la verdadera señal de alerta es estar «fuera de juego» y observar cómo el fractil sigue alejándose aún más de la mediana. Eso es precisamente lo que describe un valor bajo de D_k en el lado equivocado de la mediana, y es la única salida que ignora por completo el ajuste de beneficio mínimo, ya que no pretende alcanzar un objetivo, sino dejar de alimentar una tendencia que ya se ha vuelto en contra de la operación.

Cuando se activa con una pérdida, también bloquea la reentrada en ese mismo lado hasta que el fractil vuelva a cruzar por encima de la mediana, de modo que la estrategia no puede volver a entregar inmediatamente al mercado la misma operación perdedora. Si el rango se está ampliando en ese momento, el EA toma el lado opuesto, basándose en el razonamiento de que una señal de reversión a la media que sigue fallando es indicio de una tendencia más que de un mejor precio. Esas dos etapas de seguimiento de tendencia son la única parte del sistema que no es simétrica.


Configuración recomendada

Configuración
Valor recomendado
Notas
Símbolo
EURUSD
El instrumento de desarrollo y prueba. La escala de fractiles se normaliza automáticamente, por lo que las reglas se aplican a otros símbolos sin necesidad de recalibración, pero los ajustes que se indican a continuación solo se han probado aquí.
Marco temporal del gráfico
H2
El marco temporal de prueba. La ventana se mide en barras, por lo que un marco temporal más corto con el mismo valor de W simplemente describe un tramo más corto del mercado. El tiempo medio de tenencia en H2 fue de aproximadamente un día.
Tipo de cuenta
Compensación o cobertura
El EA mantiene como máximo una posición a la vez y la revierte cerrando y reabriendo, por lo que cualquiera de los dos tipos de cuenta es válido.
Requisito previo
RMA_Engine debe estar compilado
Compila Indicators\RMA\RMA_Engine.mq5 antes de añadir el EA. Si no existe el archivo .ex5, la llamada a iCustom falla y el EA se niega a inicializarse mostrando un mensaje en el que se indica el nombre del archivo.
Se requiere historial
W más el periodo de retrospectiva del régimen
El EA se queda estancado en cualquier barra en la que el motor aún no pueda responder, por lo que un historial corto supone una pérdida de señales en lugar de generar señales erróneas.
Importante: prueba siempre primero en una cuenta de demostración. La sección de «Resultados» del artículo original se deja como trabajo futuro, por lo que proporciona un marco y su mecánica, no un historial empírico. Todas las cifras de rendimiento que aparecen a continuación proceden de una única ejecución histórica de esta implementación y constituyen un punto de partida para tus propias pruebas, no una ventaja validada heredada de la investigación. El rendimiento pasado no garantiza resultados futuros.


Características principales

Fiel al artículo

  • Se han implementado las cuatro estrategias cruzadas: las dos etapas inversas y las dos etapas de reversión, no un par simplificado.
  • La salida adaptativa del cruce alterna entre el cruce de distribución completa y el disparador de reversión de extremos según el régimen, exactamente como especifica el artículo.
  • El «fractil» se define según el apéndice del artículo, es decir, la función de distribución acumulativa (CDF) empírica simple de la ventana. Cuando el texto del artículo y su apéndice discrepan, prevalece el apéndice y la discrepancia se documenta en el código fuente en lugar de corregirse de forma silenciosa.

Un cálculo, en un solo lugar

  • Cada número que leen las reglas procede de RMA_Engine a través de CopyBuffer, por lo que el gráfico y las operaciones no pueden desfasarse. No hay una segunda implementación de los cálculos matemáticos que mantenga la sincronización.
  • Las reglas residen en una clase que nunca llama a OrderSend, lee una posición ni imprime nada. Se le pasa una estructura de barra de diez campos y devuelve una instrucción, lo que permite probar la estrategia sin necesidad de un corredor de bolsa.
  • La colocación de órdenes, la contabilidad y el riesgo se encuentran en una clase separada, apartada de las reglas por la misma razón.

Decisiones basadas únicamente en datos definitivos

  • Los búferes se leen a partir de la posición 1, nunca de la 0. La barra cero aún se está formando y todas las reglas se escriben en función de una barra cuyo cierre sea definitivo.
  • Una barra de calentamiento, una laguna en el historial o un motor que aún no haya realizado el cálculo producen todos el mismo resultado: no se toma ninguna decisión sobre esta barra. No se deduce nada de una lectura que falte.
  • La cuestión de si la cuenta estaba abierta se resuelve antes de que nada actúe sobre ella, por lo que una barra es o bien una barra de salida o bien una barra de entrada, nunca ambas cosas.

Ejecución que supera las limitaciones de un bróker real

  • Una orden de «cierre y reversión» solicita al bróker que liquide la posición en el momento en que vence la operación opuesta, y el bróker no siempre la ejecuta al primer intento. Los cierres rechazados se retienen y se vuelven a intentar en cada tick hasta que se ejecutan, en lugar de descartarse, y nunca se superpone una reversión a una posición que aún está abierta.
  • La entrada se contabiliza según el precio realmente ejecutado, no según el precio solicitado, por lo que el deslizamiento no se refleja en las cifras de pips que alimentan las reglas de salida y la puntuación de optimización.
  • El tamaño del lote se limita al mínimo, máximo y paso del símbolo.
  • La posición abierta se almacena en variables globales, de modo que una posición que sobrevive al reinicio del terminal se retoma como la operación que realmente era, en lugar de como una posición huérfana.

Controles operativos

  • Stop loss y take profit fijos opcionales en pips, un filtro de sesión opcional que gestiona correctamente una ventana que se extiende hasta la medianoche, y un cierre de posiciones al final de la sesión opcional. Se trata de controles de implementación más que de parte del marco: el artículo se centra en la señal y deja la gestión del riesgo en manos del operador.
  • Un bloque de estado opcional en el gráfico que muestra el fractil, el régimen y la etapa actuales, con marcadores de entrada y salida, además de un modo detallado que registra cada rechazo y el motivo del mismo. Ambos están desactivados por defecto, por lo que el EA opera de forma silenciosa.
  • Un criterio de optimización personalizado que devuelve los pips netos ponderados por la raíz cuadrada del número de operaciones y la tasa de acierto, de modo que una racha de cuatrocientas operaciones tiene mayor peso que una de cuarenta con el mismo resultado neto, sin permitir que el número de operaciones domine de forma absoluta. Las rachas de menos de diez operaciones obtienen una puntuación de cero.


Resultados de la prueba retrospectiva

Una única ejecución en el par EURUSD, en el timeframe H2, del 1 de mayo de 2025 al 26 de julio de 2026, aproximadamente catorce meses, con ticks 100 % reales y un depósito de 10 000 USD con un apalancamiento de 1:500.

Métrica
Valor
Beneficio neto total
362,51 con un depósito de 10 000
Total de operaciones
138
Factor de beneficio
1,15
Índice de Sharpe
0,82
Caída máxima del capital
463,87 (4,52 %)
Operaciones con beneficios
46,38 %
Ganancia media / pérdida media
42,80 / -30,82
Tasa de éxito en posiciones largas/cortas
46,58 % / 46,15 %

La tasa de ganancias se sitúa justo por debajo del 50 %, y el sistema sigue siendo rentable porque la ganancia media es mayor que la pérdida media, lo que constituye el perfil de rentabilidad de una estrategia de reversión a la media que deja que sus reversiones sigan su curso. Las posiciones largas y cortas se comportan de forma casi idéntica, tal y como cabe esperar de un marco que es simétrico por su propia naturaleza.

La prueba no utilizó los valores predeterminados de fábrica. Se modificaron seis parámetros, por lo que cargar el EA tal y como viene de fábrica no reproducirá estas cifras. Los valores probados fueron: InpRegimeLookback 200 (por defecto 20), InpRangeHistoryLookback 400 (por defecto 100), InpExitTargetUpper 0,9 e InpExitTargetLower 0,1 (ambos por defecto 0,0, lo que selecciona la lógica de extremos en lugar de un objetivo de percentil directo), InpStopLossPips 50 (por defecto 0, sin stop) e InpUseTimeFilter en «true» con horas del 01 al 23 (por defecto desactivado). El resto de parámetros se mantuvieron en sus valores por defecto.

Curva de capital del Strategy Tester para el asesor experto RMA

La curva de capital durante el periodo de prueba: participación constante con caídas moderadas, en lugar de una única racha afortunada.

Informe del Strategy Tester para el asesor experto RMA

El informe completo del Strategy Tester para la ejecución, en el que se muestran los parámetros, las estadísticas de las operaciones y las curvas de saldo y de capital.


Instalación y estructura de archivos

Un asesor experto, un indicador obligatorio, un panel opcional y siete encabezados. La estructura es importante: el EA carga el motor mediante la ruta relativa RMA\RMA_Engine y los encabezados se incluyen como <RMA\...>, por lo que cada archivo debe encontrarse en su subcarpeta RMA. Compila los indicadores antes que el EA.

Archivo
Función
Descripción
Experts\RMA\RMA.mq5
Orquestador
Todas las entradas, la llamada a iCustom, la lectura del estado del motor por barra y el orden en que se ejecutan el motor de señales, el gestor de operaciones y la pantalla. No contiene ninguna lógica de estrategia propia.
Indicadores\RMA\RMA_Engine.mq5
Indicador obligatorio
Calcula todas las series RMA y publica diecinueve búferes. El EA no se inicializará sin él.
Indicadores\RMA\RMA_Panel.mq5
Panel opcional
Muestra un grupo de búferes del motor en una subventana con su propia escala, para las series que no se pueden leer en el eje de 0 a 1 del motor. Solo visualización.
Incluir\RMA\RmaTypes.mqh
Vocabulario compartido
Las enumeraciones de régimen y de estados cruzados, y el mapa de búferes. El único lugar en el que el EA, el motor y los paneles coinciden.
Include\RMA\RmaCore.mqh
Núcleo numérico
El SMA, la familia RMA, la distribución de rendimientos normalizada y la función de fractiles.
Include\RMA\RegimeDetector.mqh
Clasificación de regímenes
Expansión, contracción y los dos estados de transición, a partir de los coeficientes de extremos relativos (Relative Extremum Ratios), corroborados por la pendiente, la puntuación z y el coeficiente de variación. Esto es lo que determina la regla de salida.
Incluir\RMA\AdverseMonitor.mqh
Consistencia direccional
d_med_w, el fractil centrado en la mediana, y D_k, la proporción al alza de sus pasos recientes. Alimenta la salida de seguridad.
Incluir\RMA\SignalEngine.mqh
Las reglas
Activación, las cuatro etapas de entrada, las tres salidas y el cambio adaptativo entre ellas, la salida de seguridad, el bloque de reentrada y la inversión. Toma una barra, devuelve una instrucción y no toca nada más.
Incluir\RMA\TradeManager.mqh
Ejecución
Colocación de órdenes, fijación de lotes, stops y objetivos, sincronización de posiciones, cierre reintentado, controles de sesión, persistencia de tramos, contabilidad de pips y puntuación de optimización.
Include\RMA\RmaDisplay.mqh
Estado en el gráfico
El bloque de estado y los marcadores de entrada y salida. Las etiquetas se crean una sola vez y se actualizan in situ, por lo que no hay objetos duplicados ni parpadeos al redibujarlas.


Parámetros de entrada

Nueve grupos de entrada. Los dos primeros se transmiten al motor y modifican lo que este calcula; el resto rige las reglas, las órdenes y la visualización.

Grupo
Parámetros clave
Valores por defecto
Ventana
InpWindowSize, InpSmoothingPeriod
106 barras, 10
Detección de regímenes
InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback
0,15; 3,0; 0,0001; 20; 0,1; 1,0; 100
Movimiento adverso
InpUseAdverseExit, InpAdverseLookback, InpAdverseThresholdDown, InpAdverseThresholdUp
true, 10 barras, 0,3, 0,7
Entradas
InpEntryUpperThreshold, InpEntryLowerThreshold, InpEntryMinDiff, InpCloseThreshold
0,9; 0,1; 0,0 (cualquier giro cuenta); 0,1
Salidas
InpExitTargetUpper, InpExitTargetLower, InpExitProfitMinPips
0,0; 0,0 (si ambos son cero, se activa la lógica de extremos); 0,0 (desactivado)
Operaciones
InpLotSize, InpMagicNumber, InpTradeComment
0,1 lotes, 20251230, «RMA»
Riesgo
InpStopLossPips, InpTakeProfitPips, InpUseTimeFilter, InpStartHour, InpEndHour, InpEODClosePositions
0 (ninguno), 0 (ninguno), falso, 8, 20, falso
En el gráfico
InpShowDisplay, InpAttachEngine, InpShowPanels, InpPanelAdverse, InpPanelRmaValues, InpShowRegimeBand, InpVerbose
todas desactivadas por defecto, por lo que el EA opera de forma silenciosa
Nota: las dos entradas de ventana y el grupo de régimen se pasan directamente a RMA_Engine, por lo que modificarlas cambia la serie que leen las reglas. Si además conectas el motor al gráfico manualmente, asígnale los mismos valores; de lo contrario, el gráfico mostrará una ventana diferente a la que se está operando.


Base de investigación

La implementación se basa en:

  • Daniel Alexandre Bloch, «A Course on Systematic Trading with RMA», disponible en SSRN.

El artículo aporta el marco y su mecánica: la representación por fractiles, las cuatro estrategias cruzadas y la salida adaptativa de cruce (Adaptive Crossover Exit) que selecciona entre ellas según el régimen. No aporta un historial de resultados, ya que su sección de «Resultados» se deja como trabajo futuro en la versión que nos ocupa. El valor que ofrece es una estrategia expresada en una escala que tiene el mismo significado en todos los instrumentos, y una base para que realices tus propias pruebas en otros símbolos y marcos temporales o con la ventana calibrada por activo, tal y como pretende el artículo.

Un artículo complementario deriva las fórmulas matemáticas, repasa la implementación de cada módulo y explica en detalle cada una de las cuatro ramas y la lógica de salida: «Implementación del marco de la media móvil relativa (RMA) de Bloch en MQL5».

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

Session Scalping Zones Session Scalping Zones

Indicador de scalping basado en sesiones para MetaTrader 5. Marca automáticamente los máximos y mínimos de la sesión asiática y, a continuación, genera señales de scalping en la apertura de Londres cuando el precio rompe o vuelve a probar esos niveles. El indicador traza rangos dinámicos de sesión, envía alertas y notificaciones push, e incluye filtros opcionales de tendencia, volumen y tiempo. Funciona en gráficos M1, M5 y M15 para cualquier símbolo.

Trading Panel EA Trading Panel EA

Pro Manager es un asistente de trading «todo en uno» para MT5 diseñado para empresas de trading por cuenta propia y operadores profesionales. Ejecuta operaciones más rápido, gestiona las posiciones de forma más inteligente, controla el riesgo de manera eficiente y automatiza las tareas diarias de trading con potentes herramientas como «Break-even», «Average TP», gestión de «Magic Number» y «Auto Grid».

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.