English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
preview
Aprendiendo a diseñar un sistema de trading con Bears Power Index

Aprendiendo a diseñar un sistema de trading con Bears Power Index

MetaTrader 5Trading | 14 noviembre 2022, 09:22
511 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introducción

En este artículo, nos familiarizaremos con otra herramienta técnica que podemos usar de manera rentable en el comercio solo o en combinación con otras herramientas. Asimismo, aprenderemos cómo crear sistemas comerciales utilizando el indicador Bears Power. Como en toda la serie, trataremos de comprender la esencia de las cosas y aprenderemos a usar de forma eficaz los conocimientos adquiridos. Una vez más, el trabajo con el indicador se dividirá en varios temas:

  1. Definición del indicador Bears Power
  2. Estrategia basada en el indicador Bears Power
  3. Esquema de una estrategia comercial basada en el indicador Bears Power
  4. Sistema comercial basado en el indicador Bears Power
  5. Conclusión

En la sección "Definición del indicador Bears Power", aprenderemos con detalle qué significa la mencionada desviación, qué hace y cómo se puede calcular manualmente. La información detallada sobre los cálculos nos ayudará a comprender mejor la esencia del indicador y luego nos permitirá usarlo de forma más eficiente. Para una mejor comprensión, analizaremos un ejemplo de cálculo. A continuación, estudiaremos algunas estrategias simples que nos ayudarán a comprender mejor este indicador y familiarizarnos con sus opciones de uso en el comercio. Además, desarrollaremos gráficos paso a paso para cada estrategia analizada que servirán como una base excelente para crear un sistema comercial que genere automáticamente señales según el índice Bears Power. Finalmente, pasaremos a la parte más interesante de este artículo: la creación de sistemas comerciales en MQL5 (MetaQuotes Language) basados en las estrategias de indicadores analizadas. Los sistemas resultantes generarán automáticamente señales en la plataforma MetaTrader 5.

Recomendamos al lector trabajar por su cuenta cada fragmento de código presentado en este artículo, porque la práctica es una parte esencial del aprendizaje. En el presente artículo, usaremos la plataforma comercial MetaTrader 5 y el editor de lenguaje MetaQuotes. Si no sabe cómo descargar o usar el MetaEditor, le recomendamos leer la sección "Escribiendo el código MQL5 en el MetaEditor" de uno de mis artículos anteriores.

¡Atención! Toda la información del presente artículo se ofrece «tal cual», únicamente con fines ilustrativos, y no supone ningún tipo de recomendación. El artículo no garantiza ningún resultado en absoluto. Todo lo que ponga en práctica usando este artículo como base, lo hará bajo su propia cuenta y riesgo; el autor no garantiza resultado alguno.

Y ahora, manos a la obra.


Definición del indicador Bears Power

En esta sección, nos familiarizaremos con el indicador en sí, aprenderemos con todo detalle qué significa, qué hace y cómo se puede calcular manualmente. Bears Power (Índice de fuerza bajista) es un indicador oscilador que fluctúa alrededor de cero y mide el sentimiento bajista en el mercado. También muestra cuando entran en juego los toros (movimientos alcistas) y los osos (movimientos bajistas) se debilitan. La oferta y la demanda son muy importantes en cualquier mercado, pues suponen la fuerza que mueve los mercados hacia arriba y hacia abajo. Por eso es importante saber si los toros o los osos controlan el mercado y cuál es la intensidad de dicho control. Este indicador fue creado por Alexander Elder en un intento de medir este concepto y ver cómo los osos controlan el mercado.

¿Cómo hace esto el indicador? Podremos obtener la respuesta a esta pregunta comprendiendo las características del cálculo. Para calcular el índice de fuerza, haremos lo siguiente.

  1. Encontraremos el mínimo para el periodo.
  2. Encontremos la media móvil exponencial (EMA). Hablamos de este indicador, sus cálculos y su uso en uno de los artículos anteriores, "Cómo desarrollar sistemas basados ​​en medias móviles".
  3. Vamos a calcular el valor de la fuerza bajista; para ello, restaremos la EMA del mínimo del periodo.

Low — precio mínimo para el periodo.

EMA — media móvil exponencial.

Bears Power = Low - EMA

Cuando los osos controlan el mercado, la mayoría de las veces empujan el mercado hacia abajo. Por ello, en la fórmula para calcular el indicador, usaremos el valor del mínimo. Luego hallaremos la diferencia entre el mínimo y la EMA y obtendremos un oscilador que fluctúa alrededor del nivel cero. Cuando el valor del indicador se acerca al nivel cero y lo cruza hacia arriba, esto puede ser una señal de que la fuerza bajista se está debilitando.

Resulta positivo usar la fuerza bajista con algún tipo de indicador de tendencia, ya que ofrecerá información más efectiva. Analizaremos esta combinación más adelante, al trabajar con las estrategias. Esta es una de las grandes características del análisis técnico, ya que nos permite usar una combinación de diferentes conceptos y obtener más información sobre el instrumento desde diferentes perspectivas.

El terminal MetaTrader 5 tiene un indicador listo para usar. Para ejecutarlo en un gráfico de símbolos comerciales, elegiremos el menú "Insertar -> Indicadores -> Osciladores -> Bears Power". Veamos esto en la siguiente figura:

 Iniciando el indicador Bears Power en el gráfico

Después de seleccionar Bears Power en el menú, se abrirá la ventana de parámetros del indicador, que tendrá el aspecto que sigue:

 Parámetro de Bears Power

1 - periodo de cálculo del indicador.

2 - color de las barras para mostrar la fuerza bajista

3 - grosor de las barras para mostrar la fuerza baista

Seleccionamos los parámetros necesarios del indicador, presionamos el botón OK y el indicador se iniciará en el gráfico como mostramos a continuación:

Indicador Bears Power en un gráfico

Al igual que en el gráfico anterior, en la parte inferior tendremos un indicador adjunto al gráfico y sus barras fluctuarán alrededor de cero. Cuando el indicador esté por debajo de cero, indicará la predominancia de la fuerza bajista, mientras que la proximidad a cero y los valores superiores al mismo indicarán que la fuerza de bajista se está debilitando.


Estrategia basada en el indicador Bears Power

En esta parte aprenderemos a usar el indicador Bears Power según su concepto, usando como ejemplo estrategias simples. Asimismo, analizaremos cada una de las estrategias y las condiciones con las que funcionan. Querría llamar su atención sobre el hecho de que todas estas estrategias se presentan aquí solo con fines ilustrativos, para ayudar a los lectores a comprender el concepto básico del trabajo. Una vez más, será esencial que ponga a prueba cuidadosamente cualquier nuevo conocimiento antes de aplicarlo a su cuenta real, para asegurarse así de que se adapte a su estilo y comprensión del comercio.

    Estrategia uno: movimiento de Bears Power

      Según esta estrategia, obtendremos señales en función de la posición de los valores actuales y anteriores del índice de fuerza. Si el valor actual es mayor que el anterior, será una señal del aumento del indicador Bears Power. Por el contrario, si el valor actual es más bajo que el anterior, será una señal de la disminución del indicador Bears Power.

      Esquemáticamente:

      Valor actual de Bears Power > Valor anterior de Bears Power --> El indicador Bears Power aumenta

      Valor actual de Bears Power < Valor anterior de Bears Power --> El indicador Bears Power disminuye

        Estrategia dos: Bears Power: índice fuerte o divergencia

          Esta estrategia generará señales de fuertes movimientos o divergencias basadas en la evaluación de cuatro valores: el mínimo actual, el mínimo anterior, el valor de fuerza actual y el valor de fuerza anterior. Cuando el mínimo actual esté por debajo del mínimo anterior y el Bears Power actual esté por debajo del valor anterior, tendremos un movimiento fuerte. Si el mínimo actual es menor que el máximo anterior y el valor del índice de fuerza actual es mayor que su valor anterior, será una señal de divergencia alcista.

          Esquemáticamente:

          Mínimo actual < Mínimo anterior y Bears Power actual < Bears Power anterior --> Movimiento fuerte

          Mínimo actual < Mínimo anterior y Bears Power actual > Bears Power anterior --> Divergencia alcista

            Estrategia tres

              Según esta estrategia, obtendremos un disparador que se puede usar para generar señales de compra y venta. Para ello, evaluaremos también cuatro valores, a saber: el Bears Power actual, el nivel cero, el precio de cierre actual y la media móvil exponencial actual. Si la fuerza actual de Bears Power es mayor que cero y el cierre actual está por encima de la media móvil exponencial, será una señal de compra. Si la fuerza actual de Bears Power está por debajo de cero y el cierre actual está por debajo de la media móvil exponencial, será una señal de venta.

              Esquemáticamente:

              Fuerza actual de Bears Power > Nivel cero y precio de cierre actual > EMA --> Compra

              Fuerza actual de Bears Power < Nivel cero y precio de cierre actual < EMA --> Venta


              Esquema de una estrategia comercial basada en el indicador Bears Power

              A continuación, desarrollaremos esquemas paso a paso para cada una de las estrategias analizadas; esto nos ayudará a desarrollar sistemas comerciales basados en ellas.

                Estrategia uno: movimiento de Bears Power

                  Primero debemos comprender qué debe hacer el programa para trabajar con esta estrategia. Como analizamos anteriormente, deberemos verificar dos valores en cada tick: el Bears Power actual y el valor anterior. El programa tendrá que determinar cuál de estos valores es mayor. Si el valor actual es mayor que el anterior, deberá devolver la señal como un comentario en el gráfico con el siguiente contenido:

                  • Bears Power aumenta
                  • Valor de Bears Power
                  • Valor anterior de Bears Power

                  Cada valor deberá mostrarse en una línea aparte. 

                  De lo contrario, si el valor actual es mayor que el anterior, el asesor debería mostrar otro comentario en el gráfico:

                  • Bears Power disminuye
                  • Valor de Bears Power
                  • Valor anterior de Bears Power

                  Este esquema paso a paso le ayudará a desarrollar un sistema comercial para esta estrategia:

                  Esquema de la estrategia comercial según el movimiento de Bears Power

                    Estrategia dos: Bears Power: índice fuerte o divergencia

                      Según esta estrategia, el sistema comercial deberá verificar cuatro valores: el mínimo actual, el mínimo anterior, el valor Bears Power actual y el anterior. Después de eso, el sistema deberá determinar si se cumplen las condiciones: el valor actual del mínimo es menor que el anterior y, al mismo tiempo, el valor actual del indicador es menor que el anterior. En caso afirmativo, el sistema comercial deberá mostrar una señal en el gráfico como un comentario con los siguientes valores:

                      • Movimiento fuerte
                      • Mínimo actual
                      • Mínimo anterior
                      • Valor actual de Bears Power
                      • Valor anterior de Bears Power

                      De lo contrario, si el mínimo actual es menor que el anterior y la fuerza actual es mayor que la anterior, el comentario deberá indicar la divergencia resultante:

                      • Divergencia alcista
                      • Mínimo actual
                      • Mínimo anterior
                      • Valor actual de Bears Power
                      • Valor anterior de Bears Power

                      También hemos creado un plan paso a paso para crear un sistema comercial basado en las estrategias discutidas.

                      Gráfico de la estrategia comercial Bears Power: fuerza o divergencia

                       

                        Estrategia tres: señales de Bears Power

                          Usando como base de esta estrategia, crearemos un sistema comercial que verificará cuatro valores en cada tick: el Bears Power actual, el nivel cero, el cierre actual y la media móvil exponencial actual. Después de eso, el sistema deberá determinar si se cumplen las condiciones: el valor actual de Bears Power está por encima de cero y, al mismo tiempo, el precio de cierre actual está por encima de la MA exponencial. En caso afirmativo, el sistema comercial deberá mostrar una señal en el gráfico como un comentario con los siguientes valores:

                          • Señal de compra
                          • Precio Close actual
                          • Valor actual de EMA
                          • Valor actual de Bears Power

                          De lo contrario, si el valor actual de Bears Power está por debajo de cero y, al mismo tiempo, el precio de cierre actual está por debajo de la MA exponencial, el sistema comercial debería mostrar otra señal en el gráfico con los siguientes valores:

                          • Señal de venta
                          • Precio Close actual
                          • Valor actual de EMA
                          • Valor actual de Bears Power

                          También hemos creado un plan paso a paso para crear un sistema comercial basado en las estrategias discutidas.

                          Gráfico de la estrategia de señales según Bears Power

                          Sistema comercial basado en el indicador Bears Power

                          En este apartado, aprenderemos cómo crear un sistema comercial para cada una de las estrategias consideradas. En primer lugar, crearemos un sencillo sistema comercial que mostrará un comentario en el gráfico con el valor actual de Bears Power. Este nos servirá de base a la hora de crear otras estrategias.

                          A continuación, mostramos el código para crear este sistema comercial.

                          Luego crearemos el array bearspower usando la función double:

                          double bearpowerArray[];

                          Después clasificaremos el array creado usando la función ArraySetAsSeries, que retornará un valor booleano.

                          ArraySetAsSeries(bearpowerArray,true);

                          Después definiremos el indicador Bears Power usando la función iBearsPower para retornar el identificador del indicador. Parámetros:

                          • symbol — nombre del símbolo; nosotros tenemos "_Symbol", es decir, calculamos el indicador según el símbolo del gráfico actual.
                          • period — marco temporal para el cálculo; el valor "_Period" señalará que el indicador se calculará en el marco temporal actual.
                          • ma_period — periodo de la media móvil; en nuestro caso, 13
                          int bearpowerDef = iBearsPower(_Symbol,_Period,13);

                          Luego rellenaremos el array usando la función CopyBuffer con los datos del indicador Bears Power. Los parámetros de esta función serán:

                          • indicator_handle — identificador del indicador, bearpowerDef.     
                          • buffer_num — número del búfer de indicador, lo estableceremos en 0.
                          • start_pos — indica la posición del comienzo del cálculo; especificaremos 0.         
                          • count — cantidad de datos para copiar; indicaremos 3.                
                          • buffer[] — definimos el array de precios a copiar; nosotros tenemos StdDevArray.
                          CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);

                          Después definiremos bearpowerVal, para ello, crearemos una variable usando la función NormalizeDouble, que retornará un valor double. Los parámetros de esta función serán:

                          • value — valor normalizado de bearpowerArray[0].
                          • digits — número de dígitos decimales tras la coma, 6.
                          double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);

                          A continuación, generaremos un comentario para el gráfico con el valor actual de Bears Power usando la función Comment:

                          Comment("Bear's Power Value is ",bearpowerVal);

                          The following is the full code to create this trading system:

                          //+------------------------------------------------------------------+
                          //|                                          Simple Bear's Power.mq5 |
                          //|                                  Copyright 2022, MetaQuotes Ltd. |
                          //|                                             https://www.mql5.com |
                          //+------------------------------------------------------------------+
                          #property copyright "Copyright 2022, MetaQuotes Ltd."
                          #property link      "https://www.mql5.com"
                          #property version   "1.00"
                          //+------------------------------------------------------------------+
                          void OnTick()
                            {
                             double bearpowerArray[];
                          
                             ArraySetAsSeries(bearpowerArray,true);
                          
                             int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                          
                             CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                          
                             double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                          
                             Comment("Bear's Power Value is ",bearpowerVal);
                          
                            }
                          //+------------------------------------------------------------------+
                          

                          Después de realizar la compilación, el asesor aparecerá en la ventana del Navegador en MetaTrader 5:

                           Bears Power en el navegador

                          Arrastramos nuestro programa desde el Navegador al gráfico y lo soltamos. Se abrirá una ventana así:

                           Ventana del programa Simple Bears Power

                          Pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

                          Simple Bears Power en el gráfico

                          En la esquina superior derecha del gráfico, se mostrará una indicación de que el asesor se está ejecutando. Podrá saber que el programa está funcionando por los comentarios que aparecen en el gráfico, como en este ejemplo:

                           Señal de la estrategia Simple Bears Power

                          Como podemos ver en el gráfico anterior, en la esquina superior izquierda se muestra el valor de la fuerza bajista.

                            Estrategia uno: movimiento de Bears Power

                              A continuación, le mostramos el código completo para crear dicha estrategia:

                              //+------------------------------------------------------------------+
                              //|                                        Bear's Power Movement.mq5 |
                              //|                                  Copyright 2022, MetaQuotes Ltd. |
                              //|                                             https://www.mql5.com |
                              //+------------------------------------------------------------------+
                              #property copyright "Copyright 2022, MetaQuotes Ltd."
                              #property link      "https://www.mql5.com"
                              #property version   "1.00"
                              //+------------------------------------------------------------------+
                              void OnTick()
                                {
                                 double bearpowerArray[];
                              
                                 ArraySetAsSeries(bearpowerArray,true);
                              
                                 int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                              
                                 CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                              
                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                              
                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                              
                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                                }
                              //+------------------------------------------------------------------+
                              

                              Diferencias en este código:

                              Ahora determinaremos el valor actual (bearpowerVal) y el valor anterior (bearpowerPrevVal) de Bears Power:

                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                              

                              Las condiciones de la estrategia.

                              En caso de aumento:

                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                              

                              En caso de movimiento descendente:

                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                              

                              Después de realizar la compilación, el asesor aparecerá en la ventana del Navegador en MetaTrader 5:

                               Bears Power en el navegador 2

                              Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Después de eso, la ventana del asesor aparecerá nuevamente:

                               Ventana de Bears Power Movement

                              Pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

                              Bears Power Movement en el gráfico

                              Como podemos ver en la captura de pantalla, en la esquina superior derecha del gráfico se muestra una indicación de que el asesor está funcionando. Si el asesor se ha iniciado y está funcionando, la información debería aparecer en el gráfico.

                              Si el indicador aumenta + los valores actuales en la ventana de datos:

                               Bears Power Movement - aumento - datos actuales

                              Como se ve en el gráfico anterior, en su parte superior generamos una señal de crecimiento, el valor de la fuerza actual y el valor anterior. La ventana de datos muestra el valor actual del indicador Bears Power.

                              Si el indicador aumenta + valores anteriores en la ventana de datos:

                              Bears Power Movement - aumento - datos anteriores

                              Esta opción se diferencia de la anterior en que la ventana de datos muestra el valor anterior de la fuerza bajista.

                              Si el indicador disminuye + valores actuales en la ventana de datos:

                               Bears Power Movement - disminución - datos actuales

                              Como podemos ver en el gráfico anterior, en su parte superior hemos generado una señal de descenso, el valor de la fuerza actual y el valor anterior. La ventana de datos muestra el valor actual del indicador Bears Power.

                              Si el indicador disminuye + valores anteriores en la ventana de datos:

                               Bears Power Movimiento - disminución - datos anteriores

                              Esta opción se diferencia de la anterior en que la ventana de datos muestra el valor anterior de la fuerza bajista.

                                Estrategia dos: Bears Power: índice fuerte o divergencia

                                  A continuación, le mostramos el código completo para crear dicha estrategia:

                                  //+------------------------------------------------------------------+
                                  //|                          Bear's Power - Strong or Divergence.mq5 |
                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                  //|                                             https://www.mql5.com |
                                  //+------------------------------------------------------------------+
                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                  #property link      "https://www.mql5.com"
                                  #property version   "1.00"
                                  //+------------------------------------------------------------------+
                                  void OnTick()
                                    {
                                     double bearpowerArray[];
                                     MqlRates priceArray[];
                                  
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                  
                                     int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                  
                                     CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                  
                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Diferencias en este código:

                                  Creamos dos arrays: bearpowerArray y priceArray:

                                     double bearpowerArray[];
                                     MqlRates priceArray[];
                                  

                                  Clasificamos los arrays: Para clasificar bearpowerArray, usamos la función "ArraySetAsSeries". Para el array de precios priceArray, usamos la función CopyRates para obtener los datos históricos de MqlRates. Parámetros de la función:

                                  • symbol name (nombre del símbolo) —_Symbol.
                                  • timeframe (marco temporal) — _Period.
                                  • start time (hora de inicio) — 0.
                                  • stop time (hora de parada) — 3.
                                  • rates array — pArray.
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                  

                                  Defining current and previous values of bear's power and lows by using the "NormalizeDouble" function.

                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);
                                  

                                  Condiciones de la estrategia.

                                  En caso de movimiento fuerte:

                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                  

                                  En caso de divergencia alcista:

                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                  

                                  Después de realizar la compilación, el asesor aparecerá en la ventana del Navegador en MetaTrader 5:

                                  Bears Power en el navegador 3

                                  Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Después de eso, la ventana del asesor aparecerá nuevamente:

                                  Ventana de la estrategia comercial Bears Power - Fuerza o divergencia

                                  Pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

                                   Estrategia comercial Bears Power - Fuerza o divergencia - en el gráfico

                                  En la esquina superior derecha del gráfico, se muestra la indicación de que el asesor del sistema comercial Bears Power - Strong or Divergence está en funcionamiento. Las señales del asesor se muestran de la forma siguiente.

                                  En caso de movimiento fuerte + datos actuales:

                                   Bears Power - Fuerza o divergencia - fuerza y datos actuales

                                  El gráfico muestra la información que necesitamos. El comentario contendrá los siguientes valores:

                                  • Movimiento fuerte
                                  • Mínimo actual
                                  • Mínimo anterior
                                  • Valor actual de Bears Power
                                  • Valor anterior de Bears Power 

                                  Fuerte movimiento a la baja + datos anteriores:

                                   Bears Power - Fuerza o divergencia - fuerza y datos previos

                                  El gráfico muestra exactamente el mismo comentario, pero la ventana de datos representa los valores anteriores.

                                  Divergencia alcista y datos actuales:

                                  Bears Power - Fuerza o divergencia - divergencia alcista y datos actuales

                                  El comentario en el gráfico muestra la siguiente señal y los valores adicionales:

                                  • Divergencia alcista
                                  • Mínimo actual
                                  • Mínimo anterior
                                  • Valor actual de Bears Power
                                  • Valor anterior de Bears Power  

                                  Divergencia alcista y datos anteriores:

                                   Bears Power - Fuerza o divergencia - divergencia alcista y datos anteriores

                                  El gráfico muestra nuevamente un comentario con una señal sobre la divergencia formada, pero los valores anteriores se muestran en la ventana de datos.

                                    Estrategia tres: señales de Bears Power

                                      El código completo del sistema comercial que opera según esta estrategia tiene el aspecto siguiente:

                                      //+------------------------------------------------------------------+
                                      //|                                         Bear's Power signals.mq5 |
                                      //|                                  Copyright 2022, MetaQuotes Ltd. |
                                      //|                                             https://www.mql5.com |
                                      //+------------------------------------------------------------------+
                                      #property copyright "Copyright 2022, MetaQuotes Ltd."
                                      #property link      "https://www.mql5.com"
                                      #property version   "1.00"
                                      //+------------------------------------------------------------------+
                                      void OnTick()
                                        {
                                         double bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];
                                      
                                         ArraySetAsSeries(bearpowerArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                      
                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);
                                      
                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                      
                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                      
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                      
                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                      
                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      
                                      

                                      Diferencias en este código:

                                      Crearemos tres arrays: bearpowerArray, naArray y priceArray.

                                         double bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];
                                      

                                      Luego clasificaremos los arrays creados.

                                         ArraySetAsSeries(bearpowerArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                      

                                      Después usaremos la función iBearsPower para el indicador de fuerza bajista e iMA para el indicador de media móvil. Las funciones retornarán el identificador del indicador.

                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);
                                      

                                      A continuación, rellenaremos el array utilizando la función CopyBuffer con los datos del indicador Bears Power y de la media móvil.

                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                      

                                      Después determinaremos el valor actual del Bear Power Index, la media móvil exponencial y el precio de cierre actual.

                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                      

                                      Condiciones de esta estrategia:

                                      Condiciones para una señal de compra:

                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                      

                                      Condiciones para una señal de venta:

                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                      

                                      Después compilamos el código del asesor, y este aparecerá en la ventana del Navegador, en el terminal de MetaTrader 5:

                                      Bears Power en el navegador 4

                                      Clicamos dos veces en el archivo o lo arrastramos y soltamos en el gráfico. Después de eso, la ventana del asesor aparecerá nuevamente:

                                      Ventana de señales de Bears Power

                                      Pulsamos OK y el programa (asesor) se iniciará en el gráfico como se muestra en la figura siguiente:

                                       Bears Power Signals en el gráfico

                                      Podemos ver que el asesor experto está adjunto al gráfico, así como el icono correspondiente en la esquina superior derecha. El sistema comercial genera señales, y se ven así:

                                      Condiciones para una señal de compra:

                                       Bears Power Signals - señal de compra

                                      El comentario en el gráfico muestra la siguiente señal y los valores adicionales:

                                      • Señal de compra
                                      • Valor actual del precio de cierre.
                                      • Valor actual de EMA
                                      • Valor de Bears Power

                                      Si hay una señal de venta:

                                      Bears Power Signals - señal de venta

                                      El comentario en el gráfico muestra la siguiente señal y los valores adicionales:

                                      • Señal de venta
                                      • Valor actual del precio de cierre.
                                      • Valor actual de EMA
                                      • Valor de Bears Power


                                      Conclusión

                                      Creo que hemos abarcado todos los conceptos básicos necesarios del indicador Bears Power. Además, hemos aprendido qué es, qué mide y cómo se puede calcular manualmente. También hemos aprendido a encontrar el indicador incorporado en el terminal MetaTrader 5 y a ejecutarlo en el gráfico. A continuación, analizaremos cómo usar el índice de fuerza bajista según la idea del indicador. Para hacer esto, analizaremos algunas estrategias simples. El objetivo principal de estas estrategias será mostrar cómo se pueden utilizar los indicadores. Si quiere utilizar alguna de las estrategias en una cuenta real, asegúrese de probarla minuciosamente antes para asegurarse de que se adapte a sus necesidades. Entonces, vamos a familiarizarnos con las siguientes estrategias:

                                      Movimiento del indicador Bears Power: esta estrategia se puede utilizar para determinar la dirección del índice de fuerza bajista.

                                      Bears Power - Fuerza o divergencia: nos permite confirmar la presencia de un movimiento fuerte o revela una divergencia.

                                      Señales de Bears Power: la estrategia genera señales de compra y venta.

                                      Después de eso, hemos creado planes paso a paso para desarrollar cada una de las estrategias discutidas. Dichos planes ayudan a desarrollar organizadamente ideas en forma de esquemas comprensibles. Luego hemos pasado al tema más interesante, la escritura de sistemas comerciales en MQL5 que puedan generar señales de forma automática y precisa. Estos están pensados para su uso en la plataforma comercial MetaTrader 5.

                                      Esperamos que el lector haya trabajado en cada código por su cuenta: así aprenderá a escribir los códigos de la estrategia comercial. Precisamente dedicando tiempo a los ejercicios prácticos y a la resolución autónoma de varios problemas, desarrollaremos y mejoraremos las habilidades de programación. La programación es una habilidad esencial que, si se aplica correctamente, hace que el comercio sea más fácil, más disciplinado y más eficiente. Los programas nos ahorran tiempo al ejecutar automáticamente ciertos pasos y también nos permiten evitar la influencia de las emociones, que puede afectar negativamente a nuestros resultados. Después de todo, los robots comerciales y otras aplicaciones funcionan siguiendo estrictamente la estrategia establecida en ellos.

                                      Esperamos que el artículo le resulte útil y le ayude a alcanzar sus objetivos comerciales. Si le ha gustado este artículo y lo ha encontrado útil, lea los artículos anteriores de la misma serie para aprender a desarrollar un sistema comercial basado en los indicadores técnicos más populares. En artículos anteriores, ya hemos abarcado muchas herramientas populares, incluidos la media móvil, el indicador MACD, el estocástico, RSI, ADX y muchos otros.

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

                                      Redes neuronales: así de sencillo (Parte 24): Mejorando la herramienta para el Transfer Learning Redes neuronales: así de sencillo (Parte 24): Mejorando la herramienta para el Transfer Learning
                                      En el último artículo, creamos una herramienta capaz de crear y editar arquitecturas de redes neuronales. Hoy querríamos proponerles continuar con el desarrollo de esta herramienta, para lograr que resulte más fácil de usar. En cierto modo, esto se aleja un poco de nuestro tema, pero estará de acuerdo con que la organización del espacio de trabajo desempeña un papel importante en el resultado final.
                                      DoEasy. Elementos de control (Parte 14): Nuevo algoritmo de denominación de los elementos gráficos. Continuamos trabajando con el objeto WinForms TabControl DoEasy. Elementos de control (Parte 14): Nuevo algoritmo de denominación de los elementos gráficos. Continuamos trabajando con el objeto WinForms TabControl
                                      En este artículo, crearemos un nuevo algoritmo para nombrar todos los elementos gráficos y construir gráficos personalizados. Asimismo, continuaremos desarrollando el objeto WinForms TabControl.
                                      DoEasy. Elementos de control (Parte 15): Objeto WinForms TabControl - múltiples filas de encabezados de pestañas, métodos de trabajo con pestañas DoEasy. Elementos de control (Parte 15): Objeto WinForms TabControl - múltiples filas de encabezados de pestañas, métodos de trabajo con pestañas
                                      En este artículo, continuaremos desarrollando el objeto WinForm TabControl: hoy crearemos la clase de objeto de pestaña, haremos posible la disposición de los encabezados de las pestañas en varias filas y añadiremos los métodos para trabajar con las pestañas del objeto.
                                      Aprendizaje automático y Data Science - Redes neuronales (Parte 01): Análisis de redes neuronales con conexión directa Aprendizaje automático y Data Science - Redes neuronales (Parte 01): Análisis de redes neuronales con conexión directa
                                      A muchos les gustan todas las operaciones que hay detrás de las redes neuronales, pero pocos las entienden. En este artículo, intentaremos explicar en términos sencillos lo que ocurre detrás un perceptrón multinivel con conexión Feed Forward.