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:
- 15
- Ranking:
- Publicado:
-
¿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.
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 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. |
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 curva de capital durante el periodo de prueba: participación constante con caídas moderadas, en lugar de una única racha afortunada.

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 |
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
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
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
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)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.