Características del Wizard MQL5 que debe conocer (Parte 84): Uso de patrones del oscilador estocástico y de FrAMA - Conclusión
Introducción
En el último artículo, analizamos los cinco primeros patrones de señal de la combinación del oscilador estocástico y la media móvil adaptativa fractal. En nuestro breve periodo de prueba, todos los patrones parecían ofrecer resultados rentables en la prueba forward, con el entrenamiento realizado durante un año y la validación durante el año siguiente.
Hemos realizado estas pruebas teniendo en cuenta los tipos de mercado adecuados para cada patrón y utilizando, al mismo tiempo, activos «adecuados» para cada tipo de mercado. Los arquetipos de mercado que hemos considerado son los mercados tendenciales o con reversión a la media, autocorrelacionados o desacoplados, y de alta o baja volatilidad. Dentro de estas categorías, hemos intentado asignar tipos de activos que permitan aprovechar mejor estos patrones y, a juzgar por los resultados de la prueba forward, nuestra selección podría haber sido acertada.
Por lo tanto, mantenemos la misma combinación de tipo de activo y arquetipo de mercado del último artículo al analizar los cinco patrones de señal restantes de esta combinación de indicadores.
Patrón 5: Ruptura de una línea horizontal en condiciones de baja volatilidad
Nuestro sexto patrón, el patrón 5, está diseñado para funcionar en entornos tranquilos o de baja volatilidad. Por ello, es necesario identificar zonas de compresión del precio en las que tanto la FrAMA como el precio se aplanen antes de un movimiento brusco en una dirección determinada. En esencia, nuestro objetivo es detectar el momento en que la volatilidad comienza a repuntar, tras un periodo prolongado de contracción. Estos regímenes son habituales en el activo en el que los probamos en el último artículo: el USD/JPY. En este par de divisas es muy habitual la alternancia entre movimientos bruscos y largas fases de consolidación. En MQL5 lo implementamos de la siguiente manera:
Señal de compra (patrón 5): FrAMA horizontal + cruce alcista del estocástico por debajo de 30

//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY) { return((FlatFrama(X()) && CrossUp(K(X()), D(X()), K(X() + 1), D(X() + 1)) && K(X()) < 30) ? true : false); } else if(T == POSITION_TYPE_SELL) { return((FlatFrama(X()) && CrossDown(K(X()), D(X()), K(X() + 1), D(X() + 1)) && K(X()) > 70) ? true : false); } return(false); }
La lógica interna de este patrón se basa en el método «FlatFrama()», cuyo código se presentó en el último artículo. Esta función mide básicamente el grado de horizontalidad de FrAMA con una tolerancia ajustada mediante el hiperparámetro «m_pips». Para completar la explicación, incluimos esta misma función a continuación:
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::FlatFrama(int ind) { const double tol = m_pips * m_symbol.Point(); for(int i = ind; i < m_past+ind; i++) if(MathAbs(FrAMASlope(i)) > tol) return false; return true; }
La lógica booleana anterior se limita a comprobar la «horizontalidad» de la pendiente de FrAMA a lo largo de una ventana retrospectiva, que es otro hiperparámetro optimizado. Esta comprobación devuelve «verdadero» si, efectivamente, se ha registrado una baja volatilidad y una ausencia de dirección durante el periodo retrospectivo. Si combinamos esto con el oscilador estocástico y utilizamos el cruce estocástico cuando este se encuentra cerca de los niveles de 30 o 70, el patrón busca, en esencia, anticipar una ruptura de volatilidad. En resumen, se pretende detectar un régimen de mercado tranquilo, esperar un cruce estocástico que pueda desencadenar un impulso direccional y, a continuación, entrar de forma anticipada, previendo un repunte de la volatilidad.
El uso del par USD/JPY para esto fue importante porque el USD/JPY se caracteriza precisamente por su tendencia a comprimirse en rangos estrechos entre un evento macroeconómico y otro. Suele ofrecer una base teórica ideal para los modelos de ruptura de volatilidad. Así pues, la capacidad de adaptación de FrAMA confirmaría las fases de contracción del USD/JPY, mientras que la reactivación del estocástico permite detectar un sesgo direccional en una fase temprana. Posteriormente, durante el entrenamiento con este par, se observaron repetidamente casos de este tipo, especialmente durante el periodo de decisión de política monetaria del Banco de Japón (BOJ) de enero de 2024. Esto significaba que contábamos con configuraciones perfectas de baja volatilidad. Sin embargo, lo que acabó ocurriendo fue que, al pasar a los regímenes de alta volatilidad previstos, especialmente después de 2024 durante las pruebas forward, desaparecieron las condiciones propicias para estas configuraciones, ya que los regímenes de volatilidad eran en su mayoría erráticos. Esto puso de manifiesto la dependencia de este patrón respecto a determinados regímenes de mercado y explica, en parte, por qué no pudimos realizar una prueba forward rentable con este patrón, tal y como se indica en el informe que figura a continuación:

Durante la prueba forward, la comprobación de horizontalidad de FrAMA solía devolver «verdadero» durante varias barras, incluso durante los picos de volatilidad, lo que provocaba falsas rupturas y entradas tardías. El modelo buscaba mercados tranquilos, pero se encontró con una volatilidad errática. Nuestras condiciones binarias, basadas únicamente en la horizontalidad, no son capaces de adaptarse con la suficiente rapidez a los nuevos regímenes de volatilidad. Esto podría indicar la necesidad de contar con un periodo retrospectivo dinámico y no estático.
Patrón 6: Reanudación de la tendencia, formaciones en «W» y «M»
Este patrón está diseñado para detectar la reanudación de las tendencias tras una corrección. Al ser capaces de identificar formaciones recurrentes de impulso —cuya representación gráfica se asemeja a una «W» en el caso de las formaciones alcistas y a una «M» en el de las bajistas— dentro del oscilador estocástico, estamos identificando los puntos en los que el impulso se debilita, se estabiliza y, a continuación, se reanuda reafirmándose en la dirección de la tendencia principal. Este patrón también incorpora la pendiente de FrAMA como criterio direccional, de modo que solo se consideran válidas aquellas configuraciones que sigan la tendencia adaptativa predominante. Sobre el papel, esto lo convierte en un algoritmo clásico de continuación de tendencia, que podría resultar ideal para activos como el oro, en los que son habituales las ondas direccionales de varias etapas. En MQL5 lo implementamos de la siguiente manera.
Señal de venta (patrón 6): pico en «M» del estocástico por encima de 80 + pendiente alcista del FrAMA

//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::IsPattern_6(ENUM_POSITION_TYPE T) { bool W = (K(X() + 2) < 20 && K(X() + 1) > K(X() + 2) && K(X()) < 20 && K(X()) > K(X() + 1)); bool M = (K(X() + 2) > 80 && K(X() + 1) < K(X() + 2) && K(X()) > 80 && K(X()) < K(X() + 1)); if(T == POSITION_TYPE_BUY) { return((FrAMASlope(X()) < 0 && W) ? true : false); } else if(T == POSITION_TYPE_SELL) { return((FrAMASlope(X()) > 0 && M) ? true : false); } return(false); }
Según el código fuente anterior, para abrir una posición larga, buscamos una formación en «W», en la que la línea K del estocástico forme dos mínimos por debajo de 20, siendo el segundo de ellos más alto que el primero. Para abrir una posición corta, buscamos una formación de dos máximos de K por encima de 80. De nuevo, al igual que en el caso alcista, el segundo máximo debe situarse por debajo del primero. En ambos casos, la pendiente de FrAMA actúa como filtro de régimen. Comprueba si estas formaciones se producen en una fase correctiva o no. El objetivo de esta estructura es detectar el momento en que se agota la pausa del impulso y la tendencia principal está a punto de reanudarse, una configuración diseñada para reentradas en medio de la tendencia.
La elección del oro como activo para poner a prueba este patrón de señal se debió a la «dinámica de tendencia» del oro. A menudo es un buen candidato para realizar reentradas. Además, suele presentar largos movimientos impulsivos intercalados con pequeños retrocesos, lo que constituye un «terreno fértil» para las formaciones estocásticas «W/M» que buscamos. De hecho, la fuerte participación institucional y minorista en el mercado del oro suele implicar que los osciladores de impulso, como el oscilador estocástico, muestren una gran repetición armónica en las pausas que se producen en medio de una tendencia. Así, la pendiente de FrAMA tenía como finalidad filtrar las lecturas del estocástico, garantizando su alineación con el contexto de la tendencia subyacente. Aunque durante el entrenamiento y la optimización este patrón de señal resultaba prometedor y permitía identificar con éxito estas continuaciones basadas en ondas, más tarde nos dimos cuenta de que este éxito dependía de la consistencia de los ciclos de volatilidad. Estos ciclos cambian considerablemente en la prueba forward, lo que se refleja en los resultados que se muestran a continuación:

Así pues, el patrón 6 da buenos resultados en tendencias estructuradas, como ocurrió en las pruebas de 2023, pero no tan buenos en fases de volatilidad variable, tal y como se observó en 2025. El «ritmo» del oro se alteró entre 2024 y 2025, con retrocesos algo más pronunciados y menos simétricos, lo que socavó la geometría del patrón «W/M». La prueba forward sin rentabilidad pone de manifiesto una tendencia al reconocimiento geométrico estático, pese al uso de señales codificadas en binario. Al igual que se sugirió para el patrón 5, las mejoras del patrón 6 podrían contemplar el uso de ventanas adaptativas, con un número de barras del periodo retrospectivo ajustado a la volatilidad, o de un umbral dinámico de la pendiente de FrAMA para aportar cierta robustez.
En cierto sentido, esta señal pone de relieve la importante disyuntiva que existe entre la precisión y la adaptabilidad. Aunque la lógica «W/M» fue capaz de detectar retrocesos bien definidos en la evolución tendencial del precio durante el entrenamiento, no pudo adaptarse a los cambios en la simetría de la volatilidad durante la prueba forward. Por lo tanto, para un funcionamiento sostenido, además de un periodo retrospectivo dinámico que aporte robustez, se podría explorar una mayor capacidad de tener en cuenta el contexto mediante el aprendizaje por refuerzo, con modelos programados en MQL5 y no importados en formato ONNX.
Patrón 7: Giro tras contacto con FrAMA y reversión a la media
Mientras que el patrón 6 tiene dificultades con la simetría de la volatilidad, nuestro siguiente patrón está diseñado para «sacar partido» de ella. El diseño del patrón 7 incorpora una lógica de rebote por reversión a la media que se activa cuando el precio toca la media adaptativa, FrAMA, mientras el oscilador estocástico sale de una zona extrema. Este patrón de señal se centra en aquellos momentos en los que el precio vuelve a situarse brevemente en equilibrio antes de reanudar su ciclo oscilatorio. Esto es, en cierto modo, un ejemplo típico de «comprar en las caídas» o «vender en las subidas».
Elegimos el oro como activo para poner a prueba este patrón porque alterna con frecuencia entre impulsos direccionales y períodos de consolidación tranquilos. El ritmo del oro presenta abundantes secuencias de contacto y retroceso. Sobre todo si se analiza su gráfico desde, digamos, 1980, sus períodos de consolidación son muy significativos. Desde abril de 1980 hasta julio de 2006, se encontraba, en esencia, en una fase de consolidación. Del mismo modo, más recientemente, entre julio de 2012 y julio de 2020, se observó otro rango de consolidación. Actualmente, en un marco temporal amplio, el precio está en movimiento; de hecho, se encuentra en máximos históricos. En este contexto, FrAMA proporcionaría un nivel de equilibrio adaptativo y la pendiente de la línea K del oscilador estocástico ayudaría a precisar las entradas a corto plazo. Esto se implementa en MQL5 de la siguiente forma:
Señal de compra (Patrón 7): el precio toca el FrAMA y el estocástico supera el 30

//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::IsPattern_7(ENUM_POSITION_TYPE T) { bool touch = (Low(X()) <= FrAMA(X()) && High(X()) >= FrAMA(X())); if(T == POSITION_TYPE_BUY) { return((touch && K(X() - 1) < 20 && K(X()) > 30) ? true : false); } else if(T == POSITION_TYPE_SELL) { return((touch && K(X() - 1) > 80 && K(X()) < 70) ? true : false); } return(false); }
El listado de código anterior comprueba si el rango de la vela cruza la línea FrAMA. Esto garantiza que el mercado haya interactuado realmente con la media adaptativa. Para que se produzca la señal de compra, la línea K del oscilador estocástico debe subir desde un nivel inferior a 20 hasta situarse por encima de 30. Esto supone una salida de la zona de sobreventa. Para que se produzca la señal de venta, el búfer K debe girar a la baja desde un nivel superior a 80 y cerrar en 70 o por debajo. Una vez más, esto indica el inicio de un retorno a la media tras una situación de sobrecompra. Nuestro código determina, básicamente, si el precio ha alcanzado la media y si el impulso se ha invertido. Esto podría constituir una condición fiable para operar en contra del movimiento, especialmente en un mercado errático.
Elegimos el oro para este análisis debido a sus prolongados periodos de consolidación y a la importancia de identificar cuándo dan paso a las tendencias. FrAMA se adapta con fluidez a los ciclos de volatilidad del oro, gracias a que su nivel medio se recalibra en tiempo real. Incluso en marcos temporales más cortos, como el de 4 horas en el que estamos realizando las pruebas, el oro tiende a volver con frecuencia a su media adaptativa tras las extensiones impulsivas. Cuando toca el FrAMA, estos «eventos de contacto» suelen coincidir con el agotamiento de las posiciones especulativas y un cambio en el impulso. Por consiguiente, el oscilador estocástico sirve para confirmar el nuevo impulso que se aleja de la media, actuando como filtro y reduciendo el riesgo de operar en contra del impulso cuando la tendencia continúa. Tras nuestro entrenamiento entre 2023 y 2024, el informe de la prueba forward mostró algunos beneficios, tal y como se indica a continuación:

Las variables de entrada seleccionadas, al entrenar el patrón 7, dieron lugar a una frecuencia de operaciones moderada, de aproximadamente una operación cada 4 o 5 barras, lo que equivale a casi una operación al día. Esto apunta a un filtrado eficaz, que pudimos lograr cuando el optimizador convergió en 73, utilizando el criterio complejo que suele tener como objetivo el valor 100. Esto, sobre el papel, debería indicar una contribución constante a la rentabilidad. En la propia prueba, el rendimiento parece haber alcanzado su máximo entre octubre de 2023 y marzo de 2024, un periodo caracterizado por consolidaciones oscilatorias posteriores a fases de tendencia. Esto confirma el carácter del patrón orientado a la reversión.
En las pruebas forward, el patrón de señal 7 se mantuvo sólido a pesar de los cambios en la volatilidad. La condición de contacto con el FrAMA pudo ajustarse automáticamente a la amplitud. A principios de 2025 se produjeron algunos escenarios de manual: el oro experimentó una corrección dentro de un rango y, a continuación, el precio atravesó el FrAMA con un rebote del oscilador estocástico. Esto dio lugar a muchas reversiones claras. Es importante destacar que el valor anterior de K nos ofreció una confirmación con retraso y, aun así, no sacrificamos beneficios por entrar tarde.
En resumen, el patrón 7 aporta argumentos a favor de que la reversión a la media puede darse con medias adaptativas si se codifica mediante lógica booleana discreta. Booleana en el sentido de que siempre necesitamos que se registren todas las señales requeridas de los indicadores antes de declarar que el patrón está presente. Esta señal podría combinarse con otra que vimos en el artículo anterior —creo que era el patrón 1— para formar una estructura de base robusta capaz de alternar entre regímenes.
Patrón 8: Impulso por cruce de la línea media con alta volatilidad
Si bien el patrón que vimos al final del artículo anterior (patrón 4) captaba los extremos de las ráfagas de volatilidad, nuestro noveno patrón de señal se centra en la transición interna del impulso que sigue a la volatilidad. Este patrón tiene como objetivo detectar los momentos en los que el precio, en condiciones de alta volatilidad, vuelve a cruzar la línea media del FrAMA con renovada fuerza. Esto suele significar que la volatilidad no solo está aumentando, sino que también está reafirmando la dirección del movimiento.
Dicho de otro modo, este patrón se basa en la continuación de la volatilidad y consiste en operar con el segundo impulso de volatilidad tras la ruptura del primero. Al exigir tanto un cruce de la línea media del FrAMA como una confirmación del oscilador estocástico en su zona intermedia, este patrón garantiza que se filtren los picos provocados por el ruido. Al mismo tiempo, se capturan las prolongaciones genuinas del movimiento direccional. La implementaremos en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::IsPattern_8(ENUM_POSITION_TYPE T) { // Midline (50) cross via synthetic “moving” reference bool crossUpMid = (K(X() + 1) <= 50.0 && K(X()) > 50.0); bool crossDownMid = (K(X() + 1) >= 50.0 && K(X()) < 50.0); if(T == POSITION_TYPE_BUY) { return((FramaTurningUp() && crossUpMid) ? true : false); } else if(T == POSITION_TYPE_SELL) { return((FramaTurningDown() && crossDownMid) ? true : false); } return(false); }
Esta configuración, tal y como se ha indicado anteriormente, activará una señal booleana cuando el precio de cierre cruce el FrAMA en la misma dirección que el sesgo del oscilador estocástico respecto a su línea media. La señal de compra se produce cuando la línea K del oscilador estocástico se sitúa por encima de 55, lo que confirma la continuidad del impulso alcista. La señal de venta se produce cuando la línea K del oscilador estocástico cruza el nivel de 45 y cierra por debajo de él, lo que confirma que la presión bajista se mantiene. Nuestro noveno patrón tiene como objetivo evitar reacciones exageradas ante los movimientos excesivos a corto plazo; para ello, en lugar de centrarse en las zonas extremas habituales, se centra en los niveles intermedios del oscilador. Este identifica las continuaciones maduras impulsadas por la volatilidad.
La razón por la que elegimos el par USD/JPY para este patrón fue, al igual que en señales similares anteriores, su sensibilidad a la volatilidad. La dinámica del par USD/JPY, tal y como ya se ha señalado, suele caracterizarse por la alternancia entre periodos de baja volatilidad y continuaciones direccionales bruscas. El patrón 8 está diseñado para aprovechar estas aceleraciones de la fase 2 cuando el precio vuelve a cruzar la media adaptativa al alza o a la baja, tras un repunte inicial de volatilidad.
La capacidad de adaptación de FrAMA garantiza que la línea media refleje la media estructural predominante, incluso en situaciones en las que se produce un cambio en el régimen del mercado. El umbral del indicador estocástico, situado en torno a 50, confirma si este movimiento tiene recorrido o si se trata simplemente de una fluctuación aleatoria. Este patrón logró superar la prueba forward con beneficios, tal y como podemos ver en el informe que figura a continuación:

Durante la optimización y el entrenamiento, los mejores parámetros de entrada mostraron una rentabilidad sólida, en consonancia con la volatilidad, en el periodo de entrenamiento. Los mejores resultados se registraron en dos periodos concretos: a finales de 2023 y a principios de 2024. Esto se debió a que se aprovecharon grandes movimientos direccionales tras un periodo prolongado de compresión. Pudimos utilizar los umbrales de K en el rango 45/55, lo que confirmó que el impulso asociado al cruce de la banda media puede mostrar cierta persistencia y ofrecer mejores resultados que las zonas extremas del oscilador estocástico en fases de volatilidad.
La prueba forward resultó rentable, sobre todo a principios de 2025, cuando el Banco de Japón sorprendió al mundo al subir sus tipos de interés del 0,25 % al 0,5 %. Como el tipo de cambio USD/JPY se encontraba en niveles elevados en aquel momento, la continuidad de los movimientos direccionales fue intermitente. Este patrón de señales evitó las señales falsas y solo se activó cuando se dieron condiciones válidas de cruce con impulso. Cabe destacar también que el drawdown desde máximos se mantuvo en niveles moderados, en torno al 10,4 %, lo que demuestra que la capacidad del patrón para mantener el rendimiento en escenarios de volatilidad cambiantes era una característica inherente a su diseño.Patrón 9: Giro por sobreextensión con desacoplamiento
Nuestro último patrón de señales está diseñado como un detector de desacoplamiento para operar a contracorriente. Su objetivo es detectar el agotamiento cuando el impulso del precio se aleja demasiado de su media adaptativa —que, a nuestros efectos, es el FrAMA— y posteriormente indica un comportamiento divergente del oscilador. Este patrón pretende sacar partido de las desviaciones a corto plazo entre la tendencia estructural y las lecturas del estocástico, algo habitual en índices como el SPX 500, donde los sectores correlacionados que los componen pueden registrar movimientos excesivos antes de retornar a niveles anteriores. Esto se implementa en MQL5 de la siguiente manera:
Señal de venta (patrón 9): FrAMA alcista + estocástico > 90 y a la baja

//+------------------------------------------------------------------+ //| Check for Pattern 9. | //+------------------------------------------------------------------+ bool CSignalFrAMA_Stochastic::IsPattern_9(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY) { return((FrAMASlope(X()) < 0 && K(X()) < 10 && K(X()) >= K(X() + 1)) ? true : false); } else if(T == POSITION_TYPE_SELL) { return((FrAMASlope(X()) > 0 && K(X()) > 90 && K(X()) <= K(X() + 1)) ? true : false); } return(false); }
La señal de compra se produce cuando el precio cae significativamente por debajo del FrAMA y el estocástico entra en una zona de sobreventa extrema. La señal de venta también se produce cuando el precio cotiza muy por encima de la media adaptativa y el oscilador se encuentra en la zona de sobrecompra extrema. Usamos un factor multiplicador de 3 para la distancia expresada en puntos, con el fin de cuantificar estas sobreextensiones. Este factor tiene por objeto garantizar que la señal solo se active o se desencadene cuando se produzcan desviaciones significativas. El componente oscilador también debe confirmar que el impulso interno está saturado para que se pueda inferir un giro con alta probabilidad.
Utilizamos el índice SPX 500 por su carácter compuesto, ya que también presenta extensiones sincronizadas de los movimientos de los sectores que lo componen antes de que se produzcan correcciones hacia la media. Estas sobreextensiones provocadas por el comportamiento colectivo de los participantes ofrecen un entorno de prueba excelente para las señales que operan en contra del movimiento del mercado, como las de este patrón. La hipótesis que sustenta esto es que, en el pasado, los índices generales han tendido a mostrar un desacoplamiento provocado por la rotación sectorial, en el que, por ejemplo, los sectores tecnológico y energético presentan una evolución de precios divergente, a pesar de que el índice alcance nuevos máximos. A pesar de todas estas buenas intenciones, este patrón, al igual que los patrones 5 y 6, no obtuvo resultados favorables en la prueba forward. Esto podría deberse a que la resiliencia estructural del SPX 500, en la que interviene el reequilibrio de los ETF, puede limitar la duración de dicho desacoplamiento. Por ello, lo que en un principio puede parecer una sobreextensión puede perder fuerza fácilmente y convertirse en una continuación del impulso. Esto puede dar lugar a entradas prematuras que anticipan un giro. El informe de la prueba forward es el siguiente:

Durante el «entrenamiento», este patrón mostró un sólido rendimiento dentro de la muestra, especialmente durante el periodo de consolidación que se extendió desde mediados de 2023 hasta principios de 2024. En ese periodo, los excesos de corta duración iban seguidos de pequeños retrocesos. Además, podemos afirmar, aunque sea a posteriori, que, dado que nuestro intervalo de optimización incluía varias fases de volatilidad equilibrada, el patrón parecía estar bien calibrado. Su comprobación booleana del umbral parecía aislar «de forma clara» las sobreextensiones con rebotes rápidos. A pesar de ello, la mayor parte de los beneficios procedían de tan solo tres grupos, lo que puso de manifiesto una concentración temporal, y no robustez.
En la prueba forward, «se pagaron las consecuencias». El mercado de 2025 se caracterizó por su naturaleza rotacional: el precio superaba habitualmente la desviación de 3× expresada en puntos, al tiempo que se mantenía en tendencias sostenidas. El búfer K del oscilador estocástico también se mantuvo casi todo el tiempo anclado cerca de los extremos o en ellos, lo que invalidó la suposición de que la sobrecompra o la sobreventa implican agotamiento. En lugar de señalar giros, la regla binaria tendía a operar en contra del impulso durante las continuaciones de tendencia impulsadas por factores macroeconómicos. En resumen, «ahora sabemos» que el patrón 9 confundió la persistencia de la volatilidad con el agotamiento, un error clásico que se comete al aplicar la lógica de la sobreextensión en mercados dinámicos.
Perspectivas comparativas
Una vez más, nuestro análisis de diez patrones de señales codificados en forma booleana —que en esta ocasión combinan el oscilador estocástico y la media móvil adaptativa fractal— nos ha permitido comprender mejor cómo los indicadores clásicos pueden transformarse en señales sensibles al contexto, potencialmente adecuadas para las operaciones automatizadas. Compartimos código para utilizarlo en el asistente de MQL5 para la creación de un asesor experto, ya que esto nos permite desarrollar rápidamente prototipos de nuevas ideas.
Dado que codificamos cada patrón como una condición booleana —que solo da «verdadero» si se cumplen todas las condiciones del patrón y, en caso contrario, «falso»—, esto, en cierto sentido, funcionaba como un filtro vectorizado para el ruido del mercado. Esto permite convertir dinámicamente las condiciones filtradas del gráfico en un estado binario eficiente desde el punto de vista computacional. Estas salidas de los patrones, expresadas como un «estado binario», facilitan su incorporación a modelos de aprendizaje automático, algo que exploraremos en el próximo artículo, en el que abordaremos el aprendizaje por inferencia. Forman parte de una cadena de procesamiento que normaliza los datos para un modelo de predicción. Los resultados de las pruebas forward de nuestros 10 patrones de señales se recogen en la siguiente tabla.
| patrón | tipo de mercado | activo probado | factor de beneficio de la optimización | factor de beneficio de la prueba forward | estado | comentario |
|---|---|---|---|---|---|---|
| 0 | tendencial | XAU/USD | 1,66 | 1,48 | superado | Fuerte continuidad direccional |
| 1 | que tiende a volver a la media | XAU/USD | 1,52 | 1,39 | superado | Recuperación estable de la oscilación |
| 2 | autocorrelacionado | SPX 500 | 1,58 | 1,33 | superado | Captura la rotación sincronizada |
| 3 | desacoplado | SPX 500 | 1,49 | 1,28 | superado | Filtro de contexto fiable |
| 4 | alta volatilidad | USD JPY | 1,72 | 1,43 | superado | Captura eficaz de los impulsos |
| 5 | baja volatilidad | USD JPY | 1,34 | 0,87 | Fallido | Sobreajustado a regímenes tranquilos |
| 6 | tendencial | XAU USD | 1,63 | 0,92 | Fallido | Desajuste del patrón estático |
| 7 | que tiende a volver a la media | XAU USD | 1,59 | 1,44 | superado | Excelente respuesta al contacto con el nivel de equilibrio |
| 8 | alta volatilidad | USD JPY | 1,74 | 1,52 | superado | Continuación de la volatilidad en la segunda fase |
| 9 | desacoplado | SPX 500 | 1,47 | 0,84 | Fallido | Agotamiento estructural mal diagnosticado |
Conclusión
A lo largo de nuestro análisis de los 10 patrones de señales booleanas basados en FrAMA y el oscilador estocástico, hemos podido observar cómo estas combinaciones básicas de indicadores, al codificarlas en una salida booleana con filtrado de ruido, pueden ofrecernos una amplia gama de comportamientos propios de los distintos arquetipos del mercado. Cada patrón sirvió como aproximación experimental para determinar si la lógica estructurada de los indicadores podía mantener su robustez al someterse a una prueba forward con datos posteriores a su ventana de optimización. Los datos, que hemos resumido en nuestra tabla comparativa anterior, indican que, si bien siete de los patrones de señales lograron, en cierta medida, trasladar la rentabilidad, los demás adolecían de dependencia del régimen o de asimetría en la volatilidad.
El grupo rentable formado por los patrones 0, 1, 2, 3, 4, 7 y 8 mostró una mayor solidez y adaptabilidad. Sin embargo, aunque los resultados de las pruebas que aquí se presentan puedan parecer «reveladores», se han obtenido a partir de un periodo de pruebas limitado y de unas condiciones y situaciones de mercado muy específicas. Como siempre, los lectores deben actuar con diligencia y criterio propio antes de tener en cuenta o basarse en cualquiera de los resultados que hemos publicado aquí. La dinámica del mercado cambia mucho, y lo que funciona bien en una fase puede dar un giro de 180 grados en otra. Nunca está de más insistir en la necesidad de validar siempre cualquier resultado mediante pruebas independientes, con un conjunto de datos más amplio y más simulaciones forward, antes de cualquier puesta en funcionamiento en una cuenta real.
En nuestra próxima entrega, como es habitual, pasaremos de la codificación de reglas al aprendizaje automático. En concreto, analizaremos el aprendizaje por inferencia y trataremos de averiguar si, efectivamente, puede contribuir a darle la vuelta a la situación de nuestros patrones rezagados en este artículo.
Aviso legal
Esto no constituye asesoramiento financiero. El objetivo de estos artículos no es afirmar que comprendemos los mercados, sino fomentar el debate de ideas. El objetivo no es mostrar la existencia de un «santo grial», sino más bien explorar el abanico de oportunidades disponibles y, con suerte, mostrar cómo se podrían aprovechar. El trabajo de pulido y la diligencia necesaria recaen siempre en el lector, en caso de que decida incorporar parte del material aquí presentado.
| nombre | descripción |
|---|---|
| WZ_83.mq5 | Asesor experto creado mediante el asistente, cuyo encabezado incluye el nombre y la ubicación de los archivos a los que hace referencia |
| SignalWZ_83.mqh | Archivo de clase de señal personalizada utilizado por el asistente de MQL5 para la creación de un asesor experto |
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/19890
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Hola, Stephen,
Un artículo muy interesante, sobre todo el patrón 0.
He descargado tu código del artículo anterior, lo he compilado y lo he ejecutado con las cuatro principales divisas frente al dólar estadounidense (USD): EUR, GBP, CAD y JPY, en el marco temporal H4 y para el periodo comprendido entre el 1/1/25 y el 10/1/25, y TODAS han generado pérdidas.
En primer lugar, ¿tengo que volver a entrenarlo para cada divisa específica? Y, en segundo lugar, ¿cómo puedo especificar que utilice solo uno o varios de los patrones? Además, ¿se puede utilizar este EA para incorporar varios de tus excelentes artículos?
Gracias,
CapeCoddah
Hola,
Acabo de ver esto. Puede que dependa de los datos del bróker que estés utilizando.
Como siempre, los resultados pasados no garantizan resultados futuros y esto no constituye asesoramiento financiero.