English Русский 中文 Deutsch 日本語
preview
Características del Wizard MQL5 que debe conocer (Parte 53): Market Facilitation Index (MFI)

Características del Wizard MQL5 que debe conocer (Parte 53): Market Facilitation Index (MFI)

MetaTrader 5Trading |
291 5
Stephen Njuki
Stephen Njuki

Introducción

El artículo iba a tratar sobre el aprendizaje automático, dada la secuencia que se ha seguido en los artículos anteriores; sin embargo, voy a seguir con un indicador comercial porque algunos materiales para el próximo artículo sobre aprendizaje automático aún no están listos. Será pronto, esperemos. 

El Market Facilitation Index (MFI) refleja la capacidad del mercado para realizar cambios en los precios dentro de un plazo determinado. Quizás para contextualizar mejor, sea útil compararlo con otro indicador de Bill Williams que tratamos en el último artículo, el Awesome Oscillator (AO). Si partimos del enfoque/objetivo, AO realiza un seguimiento del impulso mediante una comparación entre las medias de precios de 34 y 5 períodos, con la tesis de que los cambios de mayor magnitud representan grandes cambios de impulso y viceversa. Por otro lado, el MFI se centra en la eficiencia del movimiento del precio en relación con el volumen, o bien trata de responder a la pregunta de si el volumen de operaciones fue de x cantidad, ¿en qué medida responderá el precio en comparación con si fuera de y cantidad?

El AO utiliza el contexto de la línea cero para interpretar el tipo de impulso en juego. De hecho, todos los indicadores de Bill Williams tratados hasta ahora dependen de la línea cero, pero el MFI no. Genera valores absolutos basados en el rango de precios y el volumen, lo que requiere una comparación directa de los cambios en el MFI. Los casos de uso también son ligeramente diferentes porque, como se ha mencionado, el MFI es adecuado para comprender la eficiencia del mercado y la dinámica del volumen, especialmente cuando se combina con otros indicadores y se busca la confirmación de rupturas. Por otro lado, el AO es ideal para su uso en estrategias de seguimiento de tendencias, ya que ayuda a identificar fractales o cambios en el impulso.


Donde:

  • High: El precio más alto del período de tiempo seleccionado.
  • Low: El precio más bajo del periodo de tiempo seleccionado.
  • Volume: El volumen total de operaciones durante ese período.

Si bien el MFI en sí mismo proporciona un valor indicativo, su uso y significado se derivan del seguimiento de sus cambios en diferentes condiciones de mercado y volatilidad. Como oscilador de histograma positivo, proporciona una serie de colores clave que vale la pena mencionar. 

El color verde significa:

El color azul:

El color marrón:

Y el color rosa:

Determinamos o establecemos nuestros colores en MQL5 de la siguiente manera:

   color             Color(int ind)
   {  //
      return(
               (Volume(ind) > Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrGreen :
               ((Volume(ind) < Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrBrown :
                ((Volume(ind) < Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrBlue :
                 ((Volume(ind) > Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrPink : clrNONE
                 ))));
   }

Para determinar el volumen, nos basamos en el volumen de ticks, ya que el volumen real/contractual es desconocido (especialmente en el mercado de divisas). Sin embargo, si se negocian acciones y esta información está disponible, entonces se debe utilizar en su lugar.


Volumen de ticks frente a volumen real

La definición más simple de volumen de ticks, que es pertinente para el MFI, sería un número de cambios de precio durante un periodo de tiempo determinado. Esto es simplista porque, por lo general, las ticks representan más que solo cambios en los precios. A menudo incluyen cualquier cambio en la información contractual del valor negociado, lo que abarcaría aspectos como los tipos de swap, el nivel de stop de la operación, etc. Sin embargo, en el comercio de divisas, debido a la naturaleza descentralizada de los mercados de divisas, muchos corredores no disponen de datos reales sobre el volumen, por lo que el volumen de ticks se convierte en la mejor alternativa.

El volumen real, por otro lado, representa el número real de contratos o lotes negociados durante un periodo de tiempo determinado, lo cual es muy común en el mercado centralizado de acciones y futuros, pero poco habitual en el mercado de divisas. Los estudios han demostrado una fuerte correlación entre el volumen de ticks y el volumen real, por lo que el indicador del volumen de ticks que utilizamos en este artículo no dista mucho del ideal.

Además, el uso del volumen de ticks en el desarrollo de sistemas con un bróker concreto puede hacer que el Asesor Experto sea más compatible o utilizable con otros brókeres, ya que, en su mayor parte, el volumen de ticks es accesible en la mayoría de los brókeres y no influye significativamente en el rendimiento entre brókeres, a diferencia del volumen real, si se encuentra un bróker concreto que lo ofrezca. Su fuerte correlación positiva con la actividad del mercado y sus bajos costes de uso son otras ventajas importantes para utilizar el volumen de ticks.

Como es de esperar, también tiene sus limitaciones. La principal de ellas es la excesiva consideración de los cambios en los precios y en la información sobre seguridad comercial. Si el precio de un valor oscila rápidamente entre dos precios cualesquiera en un intervalo corto, cada una de esas oscilaciones se contabilizaría como un tick y, por lo tanto, como una unidad de volumen, aunque no se refleje una variación real del precio. El argumento para tener esto en cuenta es que permite realizar un seguimiento del tamaño de los participantes en el mercado. Sin embargo, si el operador x realizara una orden grande con mucho volumen y el cambio de precio se extendiera a lo largo de varios puntos, ese cambio de precio solo se registraría como un único tick. 

Además, aunque los datos de ticks son ampliamente accesibles en la mayoría de los brókers, dado que suelen tener diferentes proveedores de liquidez, el número de ticks registrados en un momento determinado puede variar bastante entre los distintos brókers, lo que en principio significaría que sería necesario realizar pruebas con los datos de los brókers previstos antes de la implementación. Además, en mercados con baja volatilidad o mercados tranquilos, los cambios menores en los precios pueden crear picos engañosos en el volumen de ticks.

En resumen, el volumen real, especialmente cuando se negocian acciones o valores en mercados centralizados, es preferible al volumen por tick, ya que refleja mejor la participación en el mercado, lo que también significa que es un mejor indicador de patrones clave como la divergencia y, además, es menos susceptible al ruido de las fluctuaciones de precios, como se ha argumentado anteriormente. El reto de utilizar el volumen real en el mercado de divisas es, como se ha mencionado, que su disponibilidad es limitada, ya que pocos brókers lo ofrecen, y los pocos que lo hacen pueden exigir cuentas premium para suscribirse a estos datos de volumen. Además, es probable que los datos ofrecidos sean inconsistentes entre los distintos corredores debido a la naturaleza descentralizada del mercado.


Significado del valor absoluto

La MFI también tiene otra peculiaridad. Su valor absoluto no es tan significativo. Si se tienen en cuenta otros osciladores, como el RSI o incluso el índice de canal de materias primas, sus valores absolutos son umbrales clave que pueden utilizarse para tomar decisiones cruciales, por ejemplo, cuando el RSI supera el umbral de 30.

Los valores absolutos del MFI no son tan importantes. Irónicamente, son más grandes en marcos temporales pequeños, mientras que son mucho más pequeños en marcos temporales más grandes. Supongo que, dado que la mayoría de los operadores que quieren evitar el ruido y siempre se centran en los marcos temporales más grandes pueden tomar esto como una pista de que los valores absolutos del MFI por sí mismos no son tan significativos.

Lo que suele importar aquí es la importancia relativa de las barras adyacentes, no sus valores.


Señal verde

Nuestro primer patrón es la señal verde básica, en la que buscamos un histograma de color verde que actúe como señal de entrada. Como observará en este y todos los patrones posteriores, el MFI debe combinarse con la acción del precio u otro indicador para inferir una tendencia particular, ya sea alcista o bajista.

Por lo tanto, para que la señal sea alcista, necesitaríamos tener un histograma verde, lo que, como se ha mencionado anteriormente, implica una correlación positiva entre la acción del precio y el volumen, junto con un precio de cierre que esté por encima de una media móvil predominante. Estamos utilizando un período indicador de 8 y no estamos optimizando este valor, pero los cambios al respecto dependen del lector. La implementación de este patrón en MQL5 es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Este patrón, al que se le ha asignado el número 0 como primer elemento, tal y como hemos venido haciendo a lo largo de estos artículos, se puede comprobar simplemente asignando al parámetro de entrada «Patterns Used Bitmap» el valor 1. Si hacemos esto y realizamos optimizaciones para el par EURJPY durante el año 2023 en un marco temporal de 12 minutos, obtenemos los siguientes resultados de prueba a partir de algunos de los ajustes de entrada justos:

r0

Dado que estamos probando asesores expertos ensamblados por el asistente basándonos en el código de nuestra clase de señales personalizada, normalmente optimizamos los umbrales de apertura y cierre, el delta del precio de entrada, el vencimiento de las órdenes pendientes y, por supuesto, el valor umbral para el patrón probado/seleccionado. Los umbrales oscilan entre 0 y 100. Para los lectores nuevos, hay instrucciones aquí y aquí sobre cómo utilizar el código adjunto al final del artículo para crear un Asesor Experto mediante el Asistente MQL5.

Por lo tanto, nuestro patrón 0 es el más adecuado para confirmar tendencias, ya que encaja bien con las estrategias de seguimiento de tendencias.


Patrón de desvanecimiento

Nuestro siguiente patrón, el patrón 1, se refiere a circunstancias en las que el MFI marca una disminución del impulso a pesar de la continuación de la tendencia del precio. Por lo general, representa una pérdida de presión compradora o vendedora y, por lo tanto, se utiliza para anticipar reversiones o consolidaciones del mercado. La mejor forma de identificar el patrón Fade es a través de la divergencia, en situaciones en las que se señala un MFI rosa mientras el precio sigue subiendo (lo que sería una divergencia bajista) o se marca un MFI rosa con precios a la baja (lo que sería una divergencia alcista). Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrPink)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  return(true);
      }
   }
   return(false);
}

El patrón 1 también se caracteriza por un aplanamiento tras los picos de precios. Como se puede observar en la fórmula del color rosa anterior, el patrón rosa es principalmente el resultado de una disminución del volumen, lo que a su vez reduce la capacidad de mantener las tendencias predominantes. Las pruebas con el mismo par anterior, EURJPY, en un marco temporal de 12 minutos nos dan el siguiente informe.  

r1

Los datos utilizados para esta ejecución proceden de la optimización de los mismos parámetros descritos anteriormente: umbrales de apertura y cierre, diferencia de precio de entrada, vencimiento de órdenes pendientes y umbral de patrón. Dado que realizamos las pruebas exclusivamente con el patrón 1, el mapa de bits de entrada para los patrones utilizados es 2 elevado a 2, lo que da como resultado 2.

Las posibles causas de este patrón, además de la evidente disminución del volumen, son la recogida de beneficios por parte de los operadores o el agotamiento del impulso. Sus implicaciones también son un poco diversas. Podría ser una señal temprana de un cambio de tendencia, lo que significa que los operadores pueden prepararse para salir de las posiciones abiertas actuales o realizar entradas en la dirección opuesta. Alternativamente, podría tratarse de una señal de consolidación, especialmente cuando se observa sin volatilidad ni divergencia.

Sin embargo, el desvanecimiento es más fiable como señal cuando va acompañado de una divergencia de precios, ya que esto supone una alta probabilidad de reversión. Se puede llevar a cabo una gestión de riesgos que implique el uso de stops más ajustados, ya que el patrón de desvanecimiento actuará como una advertencia para estos ajustes de posición. Además, la combinación con las bandas de Bollinger y las medias móviles puede ayudar a marcar los retrocesos y confirmar aún más las señales.


Señal falsa

El patrón 2, que se caracteriza por la MFI azul, también se conoce como «señal falsa». «Falsa» porque la acción del precio en el gráfico no está corroborada por el volumen. A menudo lleva a los operadores a tomar posiciones demasiado pronto, lo que les hace perder dinero. Común en mercados volátiles o no volátiles debido a la prevalencia de falsas rupturas y reversiones, lo implementamos en MQl5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBlue)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  return(true);
      }
   }
   return(false);
}

En primer lugar, comprobamos que nuestro histograma MFI sea de color azul, lo que, tal y como se indica en la fórmula anterior, implica que el rango de precios está aumentando a medida que disminuye el volumen. Una vez confirmado el color azul, se produce un patrón alcista si el precio de cierre se sitúa por debajo de la media móvil, mientras que se produce un patrón bajista si ocurre lo contrario, es decir, si el precio de cierre se sitúa por encima de la media móvil.

La tesis central detrás de nuestra implementación es que la acción actual de los precios no refleja las tendencias subyacentes y, por lo tanto, es inminente una corrección. Realizamos una optimización durante el año 2023 con los dos patrones anteriores, utilizando el par EURJPY en un marco temporal de 12 minutos, y los ajustes de optimización favorables de esa optimización nos dan los siguientes resultados:

r2

Por lo tanto, el patrón 2 se deriva del bajo volumen y la falta de liquidez, lo que a menudo conduce a señales poco fiables. Por regla general, el ruido a corto plazo provocado por ciertos picos de volumen debido a acontecimientos noticiosos o a la manipulación del mercado puede dar lugar a señales MFI engañosas. Además, en los casos en los que el patrón falso simplemente corrige un retroceso en medio de una tendencia importante, puede servir como una fuerte señal de continuación de la tendencia. Confiar únicamente en el MFI sin un indicador de soporte podría dar lugar no solo a muchas operaciones, sino también a pérdidas. Por lo tanto, además del indicador MA que combinamos con el MFI para determinar el patrón 2, se puede utilizar un indicador alternativo, como un canal de precios, para filtrar los patrones falsos que seguramente se indicarán con frecuencia en tendencias muy fuertes en forma de retrocesos.

Además de indicadores de canal como las Bandas de Bollinger, se pueden emplear patrones de velas japonesas con niveles de soporte/resistencia. Y, como siempre, con patrones de baja probabilidad como este, es importante esperar a la confirmación y utilizar marcos temporales más amplios en el análisis.


Patrón de sentadilla

Nuestro patrón 3, el patrón de sentadilla, se produce cuando el MFI oscila mucho o se aplana a pesar de un movimiento significativo del precio o de la volatilidad. Es una señal de indecisión en el mercado, donde las presiones de compra y venta están casi a la par, lo que provoca que el mercado se «estancara» antes de que se produzca una ruptura o un cambio de tendencia.

Marcado por el color marrón, lo implementamos en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBrown)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) <= MA(X()+1) && Close(X()) >= MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) >= MA(X()+1) && Close(X()) <= MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Como podemos ver en la lista anterior, el primer requisito previo para este patrón son los histogramas marrones para el MFI que, tal y como se definen en las fórmulas de la introducción, se caracterizan por una caída del MFI y una caída del volumen. Por lo tanto, un posible patrón alcista, con este importante contexto de incertidumbre, se indicaría mediante el primer histograma MFI marrón y el cruce del precio desde debajo de la media móvil para cerrar por encima de ella.

Por otro lado, un patrón bajista también requeriría un histograma marrón del MFI, pero el precio cruzaría la media móvil desde arriba para cerrar por debajo de ella. Al igual que con los patrones 0-2 anteriores, si realizamos una optimización solo para este patrón asignando una entrada para Bitmap utilizada a 2 elevado a 3 (8), obtenemos los siguientes resultados de algunas de las configuraciones de entrada favorables:

r3

El patrón 3 es el resultado de la compresión del volumen que suele producirse en episodios de disminución del volumen de negociación, lo que indica una falta de convicción en el mercado. El patrón de consolidación suele preceder a un movimiento significativo en el precio, ya que el mercado suele estar pasando de una fase de consolidación a una nueva tendencia. Muy a menudo, antes de que se produzca el patrón de caída, se dan fases de acumulación y distribución, en las que los operadores y las instituciones pueden estar acumulando o distribuyendo posiciones para crear un equilibrio entre compradores y vendedores.

Estos periodos de baja volatilidad también pueden ser el resultado de periodos en los que los mercados están a la espera de un catalizador, como la publicación de datos económicos o acontecimientos geopolíticos. Por lo tanto, estas regiones MFI marrones podrían considerarse zonas de transición, ya que suelen aparecer y ayudar a definir regiones cruciales de soporte/resistencia en la acción del precio. Las implicaciones de esto son muy amplias; principalmente, indican una volatilidad inminente, ya que la caída se interpreta a menudo como una señal de que el mercado se está preparando para una ruptura. Aunque la dirección de la ruptura en sí misma no se puede predecir mediante el squat, combinarlo con otros indicadores e incluso con la acción del precio, tal y como hemos hecho con nuestra implementación MQL5 anterior, puede ayudar a identificar la siguiente dirección.

El patrón 3 también ofrece una buena oportunidad para establecer niveles de stop-loss ajustados cerca de los extremos recientes de los precios, lo que ayuda a minimizar el riesgo. Las posibles estrategias alternativas que se pueden desarrollar a partir de ella, además de nuestra implementación, pueden centrarse principalmente en filtrar las señales falsas. Por ejemplo, al esperar un repunte en el volumen después de una ruptura del precio, uno se basaría en dos señales, no solo en las acciones del precio.


Patrón de divergencia

Nuestro patrón 4 se basa en la divergencia entre el MFI y la acción del precio predominante. Dado que ya hemos establecido que el MFI mide el movimiento de los precios por unidad de volumen, revelando así la eficacia con la que los mercados absorben la liquidez, su dirección en este contexto podría dar lugar a cierta confusión. Las tendencias de precios son binarias desde nuestro punto de vista, lo que significa que consideramos tendencias alcistas o bajistas, por lo que esta parte es sencilla.

Sin embargo, en lo que respecta al MFI, un aumento en la magnitud no sirve de nada en este caso, ya que NO divergiría con una tendencia alcista (lo que significa que el aumento de los precios es paralelo al aumento del MFI) ni siquiera en caso de una caída bajista, ya que reflejaría lo mismo. Si, por el contrario, observamos una caída en el MFI, podemos ver fácilmente que cualquier tendencia predominante en el mercado marcaría una divergencia con respecto a él.

Si se están estableciendo mínimos más bajos en un MFI en descenso, esto marcaría una divergencia entre las fuertes tendencias bajistas y el tibio MFI. Por el contrario, si se están estableciendo máximos más altos, esto también marcaría una divergencia con un MFI en descenso, ya que apuntaría a rangos de precios decrecientes y, sin embargo, los precios estarían subiendo ligeramente. Por lo tanto, lo implementamos en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X()+1) > Low(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()+1) < High(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   return(false);
}

De nuestra lista anterior, en esta ocasión no buscamos ningún código de color, sin embargo, como se ha argumentado anteriormente, simplemente buscamos mínimos más bajos para marcar una señal alcista y máximos más altos para marcar la bajista. Y, como ya se ha mencionado, el MFI debería disminuir en ambos casos. Tras un periodo de optimización, al igual que con los patrones anteriores, obtenemos el siguiente informe de algunos de los resultados favorables de la optimización:

r4

El componente de volumen del MFI parece ser el elemento clave de este patrón. Esto se debe a que las divergencias que van acompañadas de una disminución del volumen suelen reforzar las señales de reversión, y sobre el papel se trata de un argumento sólido. Sin embargo, en nuestro caso estamos analizando un volumen creciente o constante, pero con rangos de precios a la baja, tal y como se indica en el valor absoluto del MFI. Aunque esto pueda parecer novedoso, los resultados de nuestras pruebas son prometedores. No obstante, los lectores siempre pueden modificar el código fuente adjunto y experimentar con el aumento del MFI tanto para máximos más altos como para mínimos más bajos para las configuraciones bajistas y alcistas, respectivamente.

A menudo también se recomienda combinar este patrón, el patrón 4, con otros indicadores de Bill Williams, como el oscilador Awesome o el oscilador Accelerator. Además, cuando hay una confluencia con la estructura de precios, por ejemplo, soporte/resistencia, la fiabilidad de este patrón aumenta considerablemente. También es importante señalar que, en mercados con fuertes tendencias, las divergencias suelen dar lugar a correcciones más que a reversiones completas. Por otro lado, en mercados con rangos limitados, la divergencia MFI puede ser más fiable. Como ya se ha argumentado anteriormente, los elementos adicionales, como la colocación de órdenes stop loss, también se pueden gestionar mejor con este patrón.


Señal de ruptura

El patrón 5 es similar al patrón 1, con la salvedad de que estamos buscando una ruptura. Por lo tanto, esto es sencillo, y su implementación en MQL5 es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) < MA(X()+1) && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) > MA(X()+1) && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Como se puede ver en nuestra lista anterior, solo hemos añadido la comprobación del cruce de MA al definir este patrón. La prueba realizada con los ajustes de entrada seleccionados de una optimización similar a la que hemos realizado con los patrones anteriores nos ofrece este informe:

Cuando el precio atraviesa un nivel clave (ya sea de soporte o resistencia) junto con una barra verde del MFI, esto suele indicar una ruptura válida. La definición estricta de los niveles clave de soporte/resistencia suele ser más evidente en el trading manual que cuando se automatiza una estrategia. Por eso, al aplicar estrictamente este patrón, se puede optar por realizar modificaciones caso por caso en función de la seguridad. A pesar de la alta probabilidad que presenta esta configuración, aún podría carecer de apoyo en cuanto al volumen, lo que podría suponer un riesgo de movimientos falsos.

La «falta de volumen» se deriva de la fórmula MFI que compartimos en la introducción al principio de este artículo, donde mostramos que el componente de volumen de la fórmula se encuentra en el denominador, por lo que un aumento en el MFI, aunque se muestre como un histograma verde, puede no tener un aumento proporcional en el volumen. Por lo tanto, combinarlo con las Bandas de Bollinger puede ser un paso más para proporcionar cierta seguridad ante las rupturas del déficit de volumen que podrían dar lugar a señales falsas.

Además, el uso de fractales o RSI puede ayudar a validar que el impulso se alinea con la ruptura o el cruce.


Continuación de la tendencia

Nuestro patrón 6 sirve como una extensión del patrón 5, ya que requiere dos barras MFI verdes consecutivas, en lugar de solo una como se requiere anteriormente. Este requisito de dos barras abarca tanto las configuraciones alcistas como bajistas. Además, un patrón alcista se define cuando el precio de cierre cruza por encima de la media móvil, mientras que un patrón bajista se caracteriza por un precio de cierre que se mueve en la dirección opuesta. Implementamos esto en MQL5 de la siguiente manera:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(Color(X()+1) == clrGreen && Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) > MA(X()+1) && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) < MA(X()+1) && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Una optimización realizada con ajustes similares a los patrones ya descritos anteriormente nos da el siguiente informe:

Al tratarse de una simple ampliación del patrón 5, tiende a incluir las notas ya tratadas sobre la interpretación y los inconvenientes del patrón.


Configuración del rango de negociación

Nuestro octavo y último patrón, el patrón 7, busca sacar provecho de la fase de consolidación del MFI marrón combinándolo con el RSI. Lo que denominamos «rango de negociación» es una forma de prepararse para las rupturas de volatilidad, como ya se ha argumentado anteriormente en el patrón 3. La implementación de MQL5 es la siguiente:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBrown)
   {  if(T == POSITION_TYPE_BUY && RSI(X()+1) <= 30.0 && RSI(X()) >= 30.0)
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && RSI(X()+1) >= 70.0 && RSI(X()) <= 70.0)
      {  return(true);
      }
   }
   return(false);
}

Basándonos en una barra MFI marrón, buscamos un patrón alcista si el RSI cruza desde debajo de 30 para cerrar por encima de él. Del mismo modo, se interpretaría un patrón bajista si el RSI cruzara desde por encima del nivel 70 para cerrar por debajo de él. Las pruebas con este patrón requieren que la entrada para los mapas de bits sea de 128 (2^7) y una optimización realizada solo para este patrón nos da el siguiente informe:

r7

He defendido que es mejor que los operadores prueben un patrón cada vez y luego seleccionen solo uno (o un máximo de dos) para utilizarlo en pruebas posteriores o en su implementación. Intentar comprobar todos los patrones podría producir resultados que son más difíciles de seguir adelante porque, en el proceso, muchos de los patrones individuales se anulan entre sí y, por lo tanto, se pierde el verdadero rendimiento de cada uno. No obstante, solo con fines informativos, intentamos optimizar los umbrales para todos los patrones y, al mismo tiempo, buscamos el mapa de bits utilizado por un patrón que maximice nuestro objetivo de prueba. Hicimos esto y los resultados de algunas de las mejores configuraciones se muestran a continuación:

r_oll

c_oll



Conclusión

Hemos examinado otro indicador de Bill Williams, el índice de facilitación del mercado, basándonos en patrones, tal y como hemos venido haciendo en estos artículos. Aunque no es un indicador muy común y claramente es del tipo que necesitaría ser utilizado por otros indicadores para generar señales, podría proporcionar una ventaja a los operadores que buscan algo fuera de lo común, además de los indicadores más habituales.

Nombre del archivo Descripción
SignalWZ_53.mqh Archivo de clase de señal personalizado.
wz_53.mq5 Asistente que ensambla el asesor experto con un encabezado que muestra los archivos utilizados.

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

Archivos adjuntos |
SignalWZ_53.mqh (17.07 KB)
wz_53.mq5 (7.41 KB)
Daniel Opoku
Daniel Opoku | 11 mar 2025 en 13:51

Gracias por la información sobre IMF. Lo revisaré y probaré de nuevo. ¿Cuál fue su relación riesgo-recompensa al probar esta estrategia?

.

Too Chee Ng
Too Chee Ng | 18 mar 2025 en 23:22
Buen artículo. Muchas gracias.
Too Chee Ng
Too Chee Ng | 11 abr 2025 en 11:22
En relación con lo siguiente:
//+------------------------------------------------------------------+
//| Comprueba el patrón 4.|
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X()+1) > Low(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()+1) < High(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   return(false);
}
Parece que el resaltado
MFI(X()+1) > MFI(X()

es cuestionable (especialmente si se compara con el algoritmo de otros patrones).

¿Podría ser uno de ellos:

MFI(X()+1) < MFI(X()
Daniel Opoku
Daniel Opoku | 24 abr 2025 en 08:19
Too Chee Ng #:
En relación con lo siguiente:
Parece que el resaltado

es cuestionable (especialmente si se compara con el algoritmo de otros patrones).

Podría ser uno de ellos:

MFI(X()+1) < MFI(X()

El autor quiere decir que para que la condición sea válida, la IFM anterior debe ser mayor que la IFM actual en ambos casos.

MFI(X()+1) > MFI(X()

En tal caso, está midiendo;

disminución de la fuerza del IMF pero aumento del mínimo inferior en tendencia bajista

 MFI(X()+1) > MFI(X()  &&  Low(X()+1) > Low(X()) 

disminución de la fuerza del IMF pero aumento del máximo superior en la tendencia alcista .

 MFI(X()+1) > MFI(X() &&  High(X()+1) < High(X()) 
Espero que esto ayude.
Too Chee Ng
Too Chee Ng | 29 abr 2025 en 09:18
Daniel Opoku #:

El autor quiere decir que para que la condición sea válida, la IFM anterior debe ser mayor que la IFM actual en ambos casos.

En tal caso, está midiendo;

disminución de la fuerza del IMF pero aumento del mínimo inferior en tendencia bajista

disminución de la fuerza del IMF pero aumento del máximo en la tendencia alcista .

Espero que esto le ayude.

Gracias por la explicación.

Sí, tiene sentido.

Predicción de tendencias con LSTM para estrategias de seguimiento de tendencias Predicción de tendencias con LSTM para estrategias de seguimiento de tendencias
La memoria a corto y largo plazo (Long Short-Term Memory, LSTM) es un tipo de red neuronal recurrente (Recurrent Neural Network, RNN) diseñada para modelar datos secuenciales capturando de manera efectiva las dependencias a largo plazo y abordando el problema del gradiente que se desvanece. En este artículo, exploraremos cómo utilizar LSTM para predecir tendencias futuras, mejorando el rendimiento de las estrategias de seguimiento de tendencias. El artículo tratará sobre la introducción de conceptos clave y la motivación detrás del desarrollo, la obtención de datos de MetaTrader 5, el uso de esos datos para entrenar el modelo en Python, la integración del modelo de aprendizaje automático en MQL5 y la reflexión sobre los resultados y las aspiraciones futuras basadas en pruebas estadísticas retrospectivas.
Automatización de estrategias de trading en MQL5 (Parte 5): Desarrollo de la estrategia Adaptive Crossover RSI Trading Suite Automatización de estrategias de trading en MQL5 (Parte 5): Desarrollo de la estrategia Adaptive Crossover RSI Trading Suite
En este artículo, desarrollamos el sistema Adaptive Crossover RSI Trading Suite, que utiliza cruces de medias móviles de 14 y 50 períodos como señales, confirmadas por un filtro RSI de 14 períodos. El sistema incluye un filtro de días de negociación, flechas de señal con anotaciones y un panel de control en tiempo real para la supervisión. Este enfoque garantiza precisión y adaptabilidad en el comercio automatizado.
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 11): EA de señales Heikin Ashi Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 11): EA de señales Heikin Ashi
MQL5 ofrece infinitas oportunidades para desarrollar sistemas de trading automatizados adaptados a sus preferencias. ¿Sabías que incluso puede realizar cálculos matemáticos complejos? En este artículo, presentamos la técnica japonesa Heikin-Ashi como una estrategia de trading automatizada.
Aprendizaje automático y Data Science (Parte 33): Pandas Dataframe en MQL5, recopilación de datos para facilitar el uso de ML Aprendizaje automático y Data Science (Parte 33): Pandas Dataframe en MQL5, recopilación de datos para facilitar el uso de ML
Cuando se trabaja con modelos de aprendizaje automático, es esencial garantizar la coherencia de los datos utilizados para el entrenamiento, la validación y las pruebas. En este artículo, crearemos nuestra propia versión de la biblioteca Pandas en MQL5 para garantizar un enfoque unificado para el manejo de datos de aprendizaje automático, con el fin de asegurar que se apliquen los mismos datos dentro y fuera de MQL5, donde se lleva a cabo la mayor parte del entrenamiento.