English Русский Deutsch 日本語
preview
Características del Wizard MQL5 que debe conocer (Parte 67): Uso de patrones de TRIX y Williams Percent Range (WPR)

Características del Wizard MQL5 que debe conocer (Parte 67): Uso de patrones de TRIX y Williams Percent Range (WPR)

MetaTrader 5Trading |
35 0
Stephen Njuki
Stephen Njuki

Introducción

Continuamos nuestra serie sobre el estudio de los patrones de señal generados al combinar indicadores técnicos. La última vez, analizamos la media móvil adaptativa fractal cuando se combina con el oscilador del índice de fuerza. En este artículo, analizaremos el oscilador de media móvil exponencial triple (TRIX) cuando se combina con otro oscilador, el rango porcentual de Williams (WPR). El TRIX, al ser un oscilador de media móvil, es un indicador de tendencia, mientras que el rango porcentual de Williams actúa como indicador complementario para confirmar zonas de soporte y resistencia.

Analizamos 10 patrones típicos que se pueden generar combinando estos dos indicadores, como ya hemos hecho en artículos anteriores, y los estamos entrenando u optimizando con CHF/JPY en el marco temporal de 4 horas para el año 2023. Las pruebas forward o de validación se realizan con este símbolo durante 2024.

La definición básica de TRIX es que se trata de un oscilador de momento que suaviza el precio mediante el uso de una media móvil exponencial triple. Es especialmente útil para identificar tendencias mediante el suavizado o el filtrado del ruido. Esto se logra midiendo la tasa de cambio de una media móvil triple suavizada. Además de confirmar la tendencia, también proporciona señales de divergencia. TRIX se obtiene aplicando una EMA tres veces. A continuación, se calcula el cambio porcentual. Su fórmula es la siguiente:

trix_form

Donde:

  • EMA₁: Primera EMA aplicada al precio (por ejemplo, precio de cierre) durante el período N.
  • EMA₂: Segunda EMA aplicada a EMA₁.
  • EMA₃: Tercera EMA aplicada a EMA₂.
  • Línea TriX: Cambio porcentual de la EMA (oscilador de momento) con triple suavizado.

En la configuración habitual del TRIX, el período suele estar establecido en 15. Para nuestras pruebas utilizamos el valor 3, ya que resultó ser suficientemente sensible teniendo en cuenta nuestro pequeño período de prueba de un año. Para definir esto, utilizamos el parámetro constante '__PERIOD' en el encabezado de la clase de señal personalizada.

#define __PERIOD 3
class CSignalTRX_WPR : public CExpertSignal
{
protected:
   CiTriX            m_trix;
   CiWPR             m_wpr;
   int               m_patterns_used;
   //--- adjusted parameters

   //--- "weights" of market models (0-100)
   int               m_pattern_0;      // model 0
   int               m_pattern_1;      // model 1

...


   int               m_pattern_9;      // model 9
   //
   //int               m_patterns_usage;   //

public:
   CSignalTRX_WPR(void);
   ~CSignalTRX_WPR(void);
   //--- methods of setting adjustable parameters
   //--- methods of adjusting "weights" of market models
   void              Pattern_0(int value)
   {  m_pattern_0 = value;
   }
   void              Pattern_1(int value)
   {  m_pattern_1 = value;
   }
   void              Pattern_2(int value)
   {  m_pattern_2 = value;
   }


...

   void              PatternsUsed(int value)
   {  m_patterns_used = value;
      PatternsUsage(value);
   }
   //--- method of verification of settings
   virtual bool      ValidationSettings(void);
   //--- method of creating the oscillator and timeseries
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int       LongCondition(void) override;
   virtual int       ShortCondition(void) override;
   virtual double    Direction(void) override;

protected:
   //--- method of initialization of the oscillator
   bool              InitTRX_WPR(CIndicators *indicators);
   //--- methods of getting data
   double            TRX(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(ind));
   }
   double            TRX_MAX(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(m_trix.Maximum(0, ind, __PERIOD)));
   }
   double            TRX_MIN(int ind)
   {  //
      m_trix.Refresh(-1);
      return(m_trix.Main(m_trix.Minimum(0, ind, __PERIOD)));
   }
   double            WPR(int ind)
   {  //
      m_wpr.Refresh(-1);
      return(m_wpr.Main(ind));
   }
   double            Close(int ind)
   {  //
      m_close.Refresh(-1);
      return(m_close.GetData(ind));
   }
   double            High(int ind)
   {  //
      m_high.Refresh(-1);
      return(m_high.GetData(ind));
   }
   double            Low(int ind)
   {  //
      m_low.Refresh(-1);
      return(m_low.GetData(ind));
   }
   long              Volume(int ind)
   {  //
      m_tick_volume.Refresh(-1);
      return(m_tick_volume.GetData(ind));
   }
   int               X()
   {  //
      return(StartIndex());
   }
   //--- methods to check for patterns
   bool              IsPattern_0(ENUM_POSITION_TYPE T);
   bool              IsPattern_1(ENUM_POSITION_TYPE T);

...


   bool              IsPattern_9(ENUM_POSITION_TYPE T);
};

MQL5 ofrece este indicador como una función integrada, por lo que se requiere una mínima codificación por nuestra parte. Lo implementamos desde la clase CiTRIX. Su interpretación está sujeta a su posición o valor absoluto. Un valor positivo de TRIX es señal de una tendencia alcista o de un precio con tendencia ascendente. Un valor negativo de TRIX indica la tendencia opuesta, una tendencia a la baja del precio. La línea cero es también un umbral clave, cuyo cruce suele marcar un cambio de tendencia.

La divergencia es otro fenómeno clave de este indicador, que se manifiesta en direcciones opuestas al precio, lo que a menudo señala tendencias de precios débiles. Sus ventajas radican en que reduce el retardo y el ruido en comparación con las EMA individuales y funciona bien en mercados con tendencia. Su principal limitación es la generación de señales falsas en mercados laterales.

El WPR es un oscilador de soporte/resistencia que marca las zonas de sobrecompra y sobreventa. Desarrollado por Larry Williams, este indicador compara el precio de cierre actual con el rango máximo-mínimo de un período determinado. Su propósito principal podría considerarse como la identificación de puntos clave de reversión en el mercado. Por lo tanto, funciona mejor en mercados laterales o sin tendencia definida. Su fórmula es la siguiente:

wpr_form

Donde:

  • Highest HighN es el precio más alto de los últimos N períodos.
  • Lowest LowN es el precio más bajo de los últimos N períodos.
  • Close_today es el precio de cierre actual.
  • × (-100) Invierte el valor para una interpretación más sencilla (escala de 0 a -100).

Para ambas fórmulas, 'hoy' es lo mismo que los valores de la barra de precio actual/última. "Hoy" fue simplemente una adaptación del marco temporal diario. Normalmente, el período retrospectivo utilizado es de 14, pero con el oscilador TRIX utilizamos un período similar, que es de 3, como se ha destacado anteriormente. El lector puede ajustar estos parámetros e incluso personalizar los periodos de tiempo para ambos indicadores. La interpretación de este oscilador tiene valores de -80 a -100 como señal de que un activo se encuentra en un nivel de soporte. Esta es una oportunidad de compra potencial. Los valores comprendidos entre -20 y 0 indican que el precio del activo se encuentra en un nivel de resistencia. Esto indica una oportunidad de venta. El cruce del umbral del punto medio de -50 puede indicar cambios de tendencia. 

El oscilador también proporciona señales de divergencia, como la divergencia alcista, donde si el precio alcanza un mínimo inferior pero el WPR alcanza un mínimo superior, entonces es inminente un cambio de tendencia al alza. Por otro lado, una divergencia bajista se produce cuando el precio alcanza un máximo más alto, pero el WPR alcanza un máximo más bajo, lo que indica una posible reversión a la baja. Las ventajas del WPR son su simplicidad y eficacia para el trading a corto plazo. También suele funcionar bien con otros indicadores. Sus limitaciones radican en que emite señales falsas en mercados con fuertes tendencias y en la necesidad de una confirmación adicional cada vez que registra señales específicas.

Dicho esto, ya podemos analizar los 10 patrones. Todas las pruebas se han realizado con el par CHF/JPY en el gráfico de 4 horas, para el periodo comprendido entre el 1 de enero de 2023 y el 1 de enero de 2025. El año 2023 es un período de entrenamiento u optimización, mientras que 2024 es la validación fuera de muestra (forward testing).


Cruce TRIX y pivote WPR

Nuestro primer patrón muestra que el TRIX cruza la línea cero y que el WPR pivota desde un nivel de soporte o resistencia. Cuando el indicador TRIX cruza por encima de su línea cero, marca un cambio hacia una tendencia alcista, ya que la EMA triple suavizada se está acelerando al alza. Simultáneamente, una vez que el WPR se mueve por encima de -80 desde abajo, indica que el precio está saliendo de una condición de sobreventa o rebotando en el soporte. Esto suele significar que se está acumulando presión compradora, y juntas estas dos señales confirman una posible reversión o continuación de la tendencia con un riesgo reducido de una ruptura falsa. 

Al implementar esto, además del cruce TRIX, se puede buscar un cruce con pendiente creciente para una confirmación más sólida. También es importante asegurarse de que el WPR supere los -80 pero se mantenga por debajo de los -50 para evitar entradas prematuras en reversiones débiles. También se puede considerar la confirmación mediante picos de volumen o la ruptura del precio por encima de una resistencia clave para mayor confianza. En mercados laterales o erráticos siempre existe riesgo de señales falsas, por lo que el uso de filtros adicionales como las medias móviles podría resultar útil. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && -80.0 > WPR(X() + 1) && WPR(X()) > -80.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && 0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && -20.0 > WPR(X()) && WPR(X() + 1) > -20.0)
   {  return(true);
   }
   return(false);
}

La señal bajista se produce cuando el TRIX cruza por debajo del límite cero, lo que indica una tendencia bajista, ya que la EMA suavizada se está desacelerando. El WPR caería simultáneamente por debajo de -20 desde arriba, lo que indica que el precio está saliendo de la zona de sobrecompra o resistencia, señal de una creciente presión de venta. Esta combinación suele indicar un posible cambio de tendencia o una continuación a la baja. Las consideraciones para la señal bajista son análogas a las de la alcista sobre la tendencia alcista, donde se puede comprobar el aumento de la pendiente descendente para asegurar un impulso bajista más fuerte, y el WPR debería estar por debajo de -20 pero aún no en -50.

También deberían realizarse comprobaciones para detectar caídas de precios por debajo del nivel de soporte o una caída del volumen comprador, lo que proporcionaría una validación adicional. Los riesgos en mercados volátiles o con rangos de fluctuación estrechos podrían mitigarse con líneas de tendencia o RSI. A continuación se muestran los resultados de nuestras pruebas realizadas desde el 1 de enero de 2023 hasta el 1 de enero de 2025, tras haberse entrenado solo con datos de 2023:

r0


Divergencia entre precio y TRIX con WPR en extremos

Nuestro siguiente patrón utiliza la divergencia entre el precio y el TRIX mientras que el WPR es extremo. La señal alcista se produce cuando el precio marca mínimos más bajos, pero el TRIX forma mínimos más altos, lo que indica un debilitamiento del impulso bajista. Si a esto se le suma que el WPR está por debajo de -80, un nivel de soporte, sugiere que el precio está sobrevendido y es probable que revierta al alza. Esto se vería respaldado por el cambio de tendencia alcista de TRIX. Al utilizarlo, identifique divergencias en al menos dos fluctuaciones de precios para comprobar su fiabilidad. También es recomendable esperar a que el WPR comience a subir desde por debajo de -80 para confirmar la presión compradora.

Los patrones de velas japonesas, como el martillo, también pueden incorporarse para confirmar la entrada. Los riesgos asociados a este patrón radican en que la divergencia falla en fuertes tendencias bajistas. Sin embargo, la confirmación en marcos temporales superiores puede ayudar a minimizar estos problemas. En MQL5 implementamos esto de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 1) > Low(X()) && -80.0 > WPR(X()) && TRX(X()) > TRX(X() + 1))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()) > High(X() + 1) && WPR(X()) > -20.0 && TRX(X() + 1) > TRX(X()))
   {  return(true);
   }
   return(false);
}

La señal bajista se registra cuando tenemos una divergencia negativa en TRIX con WPR en territorio de resistencia/sobrecompra. Esta divergencia negativa se produce cuando el precio alcanza máximos más altos, pero el indicador TRIX forma máximos más bajos, lo que indica una disminución del impulso alcista. Un WPR superior a -20 indica la zona de resistencia y sugiere una posible reversión. Esto suele ser una señal de venta con alta probabilidad de éxito. Al implementar esto, suele ser una buena idea confirmar la divergencia entre varios picos para mayor precisión. También puede ser preferible esperar a que el WPR baje de -20 después de más de una barra.

Además, estar atento a los patrones de velas bajistas puede servir como una confirmación adicional para este patrón. La principal limitación de este patrón aparece en mercados con fuerte tendencia, donde las divergencias suelen ser propensas a fallar. A continuación se presentan los resultados de nuestras pruebas para este patrón:

r1


Cruce de TRIX y posición del WPR

La señal alcista para nuestro próximo patrón es que el TRIX cruza por encima de su línea cero de señal como señal de cambio a una tendencia alcista, mientras que el WPR está por encima de -50, lo que implica que el precio está en una zona neutral o cercana a resistencia. Esta configuración respalda la tesis de una tendencia alcista que se fortalece, con menor probabilidad de un retroceso. Si el cruce de TRIX se produce en una pendiente cada vez más pronunciada, esto indica una señal fuerte. El WPR debería estar por encima de -50 pero por debajo de -20, ya que buscamos zonas neutrales que se aproximen a la resistencia. Se puede obtener una confirmación adicional observando si el precio supera las medias móviles clave o realizando comprobaciones en el ADX. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && WPR(X()) > -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && 0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && -50.0 > WPR(X()))
   {  return(true);
   }
   return(false);
}

El patrón bajista se da cuando el TRIX cruza por debajo de la línea cero desde arriba, con el WPR por debajo de -50. Esto sugiere una tendencia a la baja con una presión vendedora sostenida. Este argumento, al igual que su contraparte alcista mencionada anteriormente, se basa en la menor probabilidad de una reversión dado que el precio se encuentra en un punto neutral y lejos del soporte. Al igual que con los otros patrones mencionados anteriormente, estar atento a una pendiente del TRIX cada vez más pronunciada contribuye a obtener una señal fuerte. El WPR también debería estar por debajo de -50, pero aún no en -80. Los mercados laterales, como en el caso alcista, no se ajustan a este patrón, por lo que debería aplicarse en mercados con tendencia definida. Los resultados de nuestras pruebas para el patrón 2 son los siguientes:

r2


Tendencia del TRIX y salida del WPR

Nuestro siguiente patrón se define como TRIX encontrando soporte en o cerca de su línea cero, con WPR saliendo de las zonas de soporte/resistencia. Para los alcistas, el TRIX oscilaría en un rango estrecho alrededor de cero antes de romper decisivamente por encima de cero. Al mismo tiempo, WPR abandonaría la zona de soporte al cruzar el umbral de -80 desde abajo para cerrar por encima de él. Al implementar la identificación de los niveles de soporte históricos de TRIX utilizando gráficos anteriores, puede resultar un desafío y actuar como un filtro demasiado estricto que podría limitar las configuraciones u oportunidades de trading.

El cruce WPR -80 se puede confirmar utilizando otro indicador de impulso que señale un impulso alcista. Los patrones envolventes en una tendencia alcista o los picos de volumen también pueden incorporarse como señales de confirmación adicionales. La limitación de este patrón son los niveles de soporte débiles, que pueden fallar. La verificación en un marco temporal superior puede servir como una buena comprobación de este patrón. Nuestra implementación de MQL5 es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) >= 0.0 && TRX(X() + 1) <= 0.0 && TRX(X() + 2) >= 0.0 && WPR(X() + 1) < -80.0 && WPR(X()) > -80.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) <= 0.0 && TRX(X() + 1) >= 0.0 && TRX(X()) <= 0.0 && WPR(X()) < -20.0 && WPR(X() + 1) > -20.0)
   {  return(true);
   }
   return(false);
}

La señal bajista sitúa a TRIX en un rango antes de romper a la baja, mientras que WPR cruza el nivel de -20 desde arriba para cerrar por debajo de él. Esto respalda un movimiento bajista. La consolidación del TRIX, seguida de una ruptura a la baja, indica que está alcanzando una "resistencia". El impulso alcista se está desvaneciendo. Los movimientos de WPR también confirman la presión vendedora. La confirmación de TRIX para picos anteriores, al igual que en el caso de las tendencias alcistas, puede ser un obstáculo para la generación de señales. Es importante esperar a que el WPR se mantenga por debajo de -20 para evitar señales falsas. Las figuras bajistas, como la envolvente bajista, también pueden influir en esto. Los mercados con fuertes tendencias hacen que el uso de este patrón sea muy difícil, por lo que los usuarios deben estar atentos a esto y complementarlo con otros indicadores como el RSI. A continuación, compartimos los resultados de nuestras pruebas para este patrón:

r3


Ruptura del TRIX y salida del WPR de la zona neutral

La señal alcista de nuestro quinto patrón indica que TRIX, al igual que en el patrón 3, está rompiendo una resistencia mientras que WPR se encuentra entre -50 y -20. Esto tiende a confirmar que el precio se encuentra en una zona alcista o neutral y, por lo tanto, apunta a una ruptura sostenible. Al utilizar este patrón, la pendiente de TRIX y el volumen pueden reforzar la señal. Se puede incorporar la observación de rupturas de precios en un gráfico, especialmente a través de indicadores clave como la media móvil. Este patrón se limita a los mercados con tendencia, mientras que los mercados volátiles pueden generar algunas señales falsas. La implementación de MQL5 es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 0.0 < TRX(X()) && 0.0 >  TRX(X() + 1) && TRX(X()) == TRX_MAX(X()) && WPR(X()) > -50.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  0.0 < TRX(X() + 1) && 0.0 >  TRX(X()) && TRX(X()) == TRX_MIN(X()) && WPR(X()) > -80.0 && WPR(X()) < -50.0)
   {  return(true);
   }
   return(false);
}

La señal bajista se da cuando el TRIX cae por debajo del soporte, con el WPR en zona neutral o bajista. Una vez que el indicador TRIX cae por debajo de un soporte "histórico", como un mínimo anterior o incluso la línea cero, puede implicar una aceleración del impulso bajista. El WPR estaría entre -50 y -80, lo que representa una zona neutral a bajista, lo que respalda la validez de la ruptura. Es necesario volver a considerar la pendiente del TRIX en el punto de ruptura, y el WPR debería estar por debajo de -50 pero sin sobreventa para lograr un momento óptimo. Se puede obtener una confirmación adicional al observar rupturas de precios en el gráfico, como por ejemplo por debajo de una media móvil. Los mercados volátiles no suelen seguir este patrón. Los resultados de las pruebas para este patrón se presentan a continuación:

r4


Reversión de TRIX y salida de WPR

La señal alcista para este patrón se caracteriza por un pico del TRIX en un nivel extremadamente alto, generalmente muy por encima del límite cero, y un retroceso a la baja mientras que el WPR cae por debajo de -20. Esto tiende a sugerir que el precio ya no está sobrecomprado y, por lo tanto, es probable que se produzca un retroceso saludable o que continúe la tendencia. Con este patrón, es fundamental asegurarse de que el WPR baje hacia -50 pero sin llegar a la sobreventa. También conviene estar atento a si el precio se mantiene en niveles de soporte clave o en paridad con una media móvil importante.

Las limitaciones de este patrón radican en que los retrocesos por sobrecompra pueden convertirse en retrocesos bruscos; por ello, el uso de retrocesos de Fibonacci podría ayudar a gestionar esta situación. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) >  TRX(X()) && TRX(X() + 1) == TRX_MAX(X()) && WPR(X() + 1) > -20.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) > TRX(X() + 1) && TRX(X() + 1) <  TRX(X()) && TRX(X() + 1) == TRX_MIN(X()) && WPR(X()) > -80.0 && WPR(X() + 1) < -80.0)
   {  return(true);
   }
   return(false);
}

La señal bajista es que el TRIX está revirtiendo su tendencia desde un nivel de sobreventa, mientras que el WPR está saliendo de la zona de sobreventa, lo que sugiere un posible retroceso hacia una tendencia bajista. El hecho de que TRIX haya tocado fondo en un mínimo extremo, seguido de un repunte, sugiere que las condiciones de sobreventa podrían estar remitiendo. El WPR tendría que superar los -80 para confirmar que el precio ya no está sobrevendido y, por lo tanto, la tendencia bajista anterior estaría a punto de reanudarse. Un TRIX pronunciado que se mantiene por debajo de cero puede ser un un filtro adicional de confirmación útil. El WPR debería subir hasta situarse en torno a -50, pero no debería superar este nivel clave, ya que no queremos llegar a una situación de sobrecompra.

Otra señal útil puede ser que el precio se mantenga cerca de un nivel clave o una media móvil importante. Este patrón presenta limitaciones en mercados volátiles, por lo que se podrían añadir líneas de tendencia para filtrar este efecto. Nuestras pruebas para este patrón nos proporcionan el siguiente informe:

r5


Continuación de TRIX con WPR en rango medio

La señal alcista para este patrón indica que el TRIX continúa por encima de cero, con el WPR en el rango medio de -50 a -20. Esto pretende indicar una tendencia alcista sostenida, con potencial de crecimiento. La explicación es que cuando el indicador TRIX se mantiene por encima de cero con una pendiente positiva, eso sirve como confirmación de una tendencia alcista en curso. Un indicador WPR de rango medio complementario también indica que el precio no está ni sobrecomprado ni sobrevendido. Esto sugiere que la tendencia potencialmente tiene margen para continuar sin un riesgo inminente de reversión.

El uso de este patrón puede implicar garantizar que TRIX mantenga una pendiente ascendente constante sin cambios bruscos de dirección. El WPR también debería mantenerse dentro del rango de -50 a -20 para lograr una continuación óptima de la tendencia. Se puede complementar la confirmación con el precio siguiendo una línea de tendencia o manteniéndose por encima de una media móvil clave. Una limitación de este patrón es que las señales de rango medio pueden debilitarse en mercados de baja volatilidad. Nuestra implementación en MQL5 para esto es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X() + 2) > TRX(X() + 1) && TRX(X() + 1) > TRX(X()) && TRX(X()) > 0.0 && WPR(X()) > -80.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) < TRX(X()) && TRX(X()) < 0.0 && WPR(X()) > -80.0 && WPR(X()) < -20.0)
   {  return(true);
   }
   return(false);
}

El patrón bajista muestra que el TRIX continúa por debajo de cero, con el WPR en el rango medio, lo que indica una tendencia bajista sostenida. La razón por la que esto es bajista es que el hecho de que el TRIX se mantenga por debajo de cero con una pendiente negativa tiende a confirmar una tendencia bajista. El WPR en el rango medio de -50 a -80 también muestra que el precio aún no está sobrevendido. Esto podría implicar que la tendencia bajista puede continuar sin una reversión inmediata. Al aplicar este patrón bajista, como ya se mencionó con la mayoría de los patrones anteriores, la pendiente TRIX es crucial. Debe ser consistentemente descendente.

También se debe controlar el WPR para asegurar que se mantenga dentro del rango clave de -50 a -80. El hecho de que el precio se sitúe en una media móvil clave o en un nivel de soporte refuerza la validez de este patrón; sus limitaciones, tal y como se mencionó en el caso del «espejo alcista», residen en la debilidad de las señales de rango medio, que pueden prolongarse durante largos periodos. Los resultados de las pruebas para este, nuestro séptimo patrón, se muestran a continuación:

r6


Consolidación de TRIX con WPR en zona

El patrón alcista para esto presenta una ruptura de una consolidación del TRIX con el WPR en una zona de soporte alcista; lo que señala una nueva tendencia alcista con un impulso saludable. Esto se debe a que el movimiento lateral o la consolidación del TRIX cerca de la línea cero, para luego romper al alza, indica una nueva tendencia alcista. Y un WPR por encima de -50 sirve para confirmar el impulso alcista, lo que sugiere que es probable que dicho impulso se mantenga. Idealmente, para implementar esto se debería identificar la consolidación de TRIX en un rango lo más estrecho posible, cerca del límite cero durante múltiples barras/períodos.

Por lo tanto, se trata de una señal muy restrictiva que difícilmente produciría alguna señal incluso durante largos períodos de prueba. De hecho, este patrón y algunos similares son la razón por la que recurrimos al período de indicador muy corto de 3, ya que los períodos más largos no eran tan sensibles al precio y, por lo tanto, generaban muy pocas señales y, por consiguiente, muy pocas operaciones. En este patrón, si bien la confirmación de la pendiente es deseable como en todos los demás patrones, estrictamente hablando es un lujo, ya que no hay tantos puntos de entrada para empezar. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && fabs(Close(X()) - Close(X() + 1)) >= TRX_MAX(X() + 1) - TRX_MIN(X() + 1) && TRX_MAX(X() + 1) > 0.0 && TRX_MIN(X() + 1) < 0.0 && TRX_MAX(X() + 1) < TRX(X()) && WPR(X()) >= -20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && fabs(Close(X()) - Close(X() + 1)) >= TRX_MAX(X() + 1) - TRX_MIN(X() + 1) && TRX_MAX(X() + 1) > 0.0 && TRX_MIN(X() + 1) < 0.0 && TRX_MIN(X() + 1) > TRX(X()) && WPR(X()) <= -80.0)
   {  return(true);
   }
   return(false);
}

El patrón bajista se observa cuando el TRIX rompe su consolidación, con el WPR en una zona bajista, lo que indica una nueva tendencia a la baja con cierto impulso. La razón por la que esto es bajista es similar al caso alcista. La consolidación en el nivel indeciso de cero durante un período prolongado, seguida de una caída a la baja, a menudo no solo indica una tendencia bajista, sino también su génesis. La posición de WPR por debajo de -50 no hace más que consolidar aún más esta tesis bajista.

Al aplicar controles exhaustivos para la consolidación TRIX restringida, es necesario equilibrar esto con la existencia de un número saludable de operaciones. El WPR debería estar por debajo de -50 pero sin sobreventa para lograr un momento óptimo. Las falsas rupturas en mercados volátiles siguen siendo un riesgo importante para este patrón. Los resultados de nuestras pruebas para el patrón 7 son los siguientes:

r7


Inversión TRIX en la línea cero con WPR extremo

Nuestro penúltimo patrón tiene su señal alcista con TRIX revirtiendo al alza en la línea cero y WPR sobrevendido. Se trata de un fuerte cambio de tendencia alcista tras una fase neutral. La razón por la que estos patrones podrían ser alcistas es que el cambio de tendencia al alza del TRIX en la línea cero marca un cambio de impulso neutral a alcista. Que el WPR esté por debajo de -80 también confirma las condiciones de sobreventa. Esto sugiere, por lo tanto, una alta probabilidad de reversión a medida que aumenta la presión compradora.

El uso de este patrón requiere una confirmación adecuada de la reversión de TRIX, lo que puede requerir observar más de una barra. Además, esperar a que el WPR suba claramente por encima de -80 en más de una barra puede añadir más credibilidad. Los filtros de soporte adicionales pueden ser patrones de velas japonesas alcistas o precios que rondan niveles de soporte clave, como ya se ha comentado en relación con los otros patrones mencionados anteriormente. Las tendencias del mercado constituyen una limitación para este patrón. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_8(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) > TRX(X() + 1) && TRX(X() + 1) > 0.0 && TRX(X() + 2) > TRX(X() + 1) && WPR(X()) < -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 2) < TRX(X() + 1) && TRX(X() + 1) < 0.0 && TRX(X()) < TRX(X() + 1) && WPR(X()) > -50.0)
   {  return(true);
   }
   return(false);
}

El patrón bajista muestra que el TRIX se revierte a la baja cuando está cerca de cero y el WPR indica que el precio está en territorio de sobrecompra o en el nivel de resistencia. Las razones para ello son una reversión del TRIX desde las marcas de cero o la confirmación de un cambio en el sentimiento del mercado hacia una tendencia bajista. El hecho de que el WPR esté por encima de -20 también sirve para confirmar las condiciones de sobrecompra, lo que contribuye a establecer una reversión de alta probabilidad, ya que la presión vendedora está aumentando. La confirmación del cambio de tendencia del TRIX debe ser clara mediante el uso de la pendiente o el número de barras posteriores al cambio de tendencia.

Esperar a que el WPR caiga por debajo de -20 de forma convincente y complementarlo con patrones de velas bajistas o niveles de resistencia también puede dar lugar a patrones más creíbles. Este patrón presenta limitaciones, al igual que el alcista, en mercados con tendencia definida. Los resultados de las pruebas realizadas con este patrón nos proporcionaron el siguiente informe. Al igual que con todos los patrones probados en este artículo, la prueba se realizó desde el 01/01/2023 hasta el 01/01/2025 después del entrenamiento/optimización desde el 01/01/2023 hasta el 01/01/2024. El símbolo utilizado es CHF JPY y el período de tiempo fue de 4 horas.

r8


Doble suelo/techo del TRIX y WPR sobrevendido/sobrecomprado

La señal alcista de nuestro último patrón indica que TRIX está formando un doble suelo, mientras que WPR señala una fuerte reversión alcista. Este comportamiento del precio en este nivel de soporte tiene como objetivo confirmar que se ha alcanzado un mínimo de precio. La explicación de este argumento es que un doble suelo, que consiste en dos puntos alternos en un nivel de soporte que suele estar por debajo de cero, al igual que una consolidación, indica una posible reversión de tendencias bajistas a alcistas. Con el WPR en el nivel de soporte de -80, esto confirma que las condiciones de sobreventa ya están presentes y, por lo tanto, el cambio es inminente. 

Otras consideraciones a tener en cuenta durante su uso son confirmar que el doble fondo esté cerca de la línea cero o en territorio negativo. Este requisito seguramente dificultará mucho la obtención de señales, ya que los dobles suelos TRIX rara vez ocurren sobre barras alternas. Al igual que con otros patrones, las señales de apoyo pueden ser la formación de un doble suelo o la ruptura por encima de una resistencia. La volatilidad y la inestabilidad de los mercados son puntos débiles para este patrón. Así es como codificamos la implementación de MQL5:

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalTRX_WPR::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && TRX(X()) >= 0.0 && TRX(X() + 1) <= 0.0 && TRX(X() + 2) >= 0.0 && TRX(X() + 3) <= 0.0 && TRX(X() + 4) >= 0.0 && WPR(X()) <= -50.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && TRX(X() + 4) <= 0.0 && TRX(X() + 3) >= 0.0 && TRX(X() + 2) <= 0.0 && TRX(X() + 1) >= 0.0 && TRX(X()) <= 0.0 && WPR(X()) >= -50.0)
   {  return(true);
   }
   return(false);
}

El patrón bajista presenta nuevamente un doble techo TRIX en el límite cero o justo por encima de él en territorio positivo. Esto suele indicar un debilitamiento del impulso alcista. El hecho de que el WPR esté por encima de -20 confirma las condiciones de sobrecompra y también respalda el escenario de una reversión a la baja. Las notas de uso cubren la mayoría de los argumentos que ya hemos mencionado para los otros patrones anteriores. Esto incluye la pendiente, las entradas rezagadas y los indicadores adicionales. El principal riesgo aparece en mercados erráticos / con whipsaws. Los resultados de las pruebas para este último patrón no generaron ninguna operación, ya que el patrón de entrada era demasiado restrictivo. ¡Y esto a pesar de utilizar un período de indicador muy corto!


Conclusión

Hemos analizado los patrones y las señales obtenidas al combinar los indicadores Oscilador de Media Móvil Exponencial Triple y el Oscilador de Rango Porcentual de Williams. Para nuestras pruebas, hemos utilizado periodos de indicador excesivamente cortos con el fin de generar una cantidad suficiente de operaciones para nuestro pequeño periodo de prueba de un año. Esto indica que este par de indicadores no es tan sensible ni genera tantas señales como otros pares que hemos considerado en el pasado. Por lo tanto, es imprescindible que el lector realice una segunda prueba al trabajar con este par de indicadores antes de determinar qué configuraciones realmente funcionan. Según nuestras pruebas anteriores, solo los patrones 1, 4 y 5 superan la prueba forward.


Nombre Descripción
wz-67.mq5 Asesor experto creado mediante el Asistente MQL5 (Wizard MQL5), cuyo encabezado indica los archivos utilizados.
SignalWZ_67.mqh Archivo de clase de señal personalizado utilizado en el ensamblaje del Asistente MQL5.

Los nuevos lectores pueden encontrar aquí instrucciones sobre cómo utilizar estos archivos de clase de señal personalizados para crear un asesor experto mediante el asistente de MQL5.

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

Archivos adjuntos |
SignalWZ_67.mqh (19.78 KB)
wz-67.mq5 (7.82 KB)
Utilizando redes neuronales en MetaTrader Utilizando redes neuronales en MetaTrader
En el artículo se muestra la aplicación de las redes neuronales en los programas de MQL, usando la biblioteca de libre difusión FANN. Usando como ejemplo una estrategia que utiliza el indicador MACD se ha construido un experto que usa el filtrado con red neuronal de las operaciones. Dicho filtrado ha mejorado las características del sistema comercial.
Operando con el Calendario Económico MQL5 (Parte 10): Panel arrastrable y efectos al pasar el cursor para una navegación fluida por las noticias Operando con el Calendario Económico MQL5 (Parte 10): Panel arrastrable y efectos al pasar el cursor para una navegación fluida por las noticias
En este artículo, mejoramos el Calendario Económico de MQL5 mediante la incorporación de un panel de control arrastrable que nos permite reubicar la interfaz para mejorar la visibilidad del gráfico. Implementamos efectos al pasar el cursor por los botones para mejorar la interactividad y garantizar una navegación fluida con una barra de desplazamiento posicionada dinámicamente.
Particularidades del trabajo con números del tipo double en MQL4 Particularidades del trabajo con números del tipo double en MQL4
En estos apuntes hemos reunido consejos para resolver los errores más frecuentes al trabajar con números del tipo double en los programas en MQL4.
Redes neuronales en el trading: Pipeline inteligente de predicciones (Final) Redes neuronales en el trading: Pipeline inteligente de predicciones (Final)
Este artículo ofrecerá una visión fascinante de cómo la incorporación de SwiGLU revela patrones de mercado ocultos y cómo la escasa combinación de expertos dentro de Decoder-Only Transformer hace que las predicciones sean más precisas a un coste computacional razonable. En este trabajo, analizaremos con detalle la integración de Time-MoE en MQL5 y OpenCL, describiendo la configuración y el entrenamiento del modelo paso a paso.