Asesores Expertos: Fractals at Close prices EA

 

Fractals at Close prices EA:

Asesor Experto a base del indicador "Fractals at Close prices".


Autor: Vladimir Karputov

 

****

 

Esto es interesante! la idea es buena, pero el fractal no ayuda! ¡Si cambias el indicador fractal por un indicador zigzag, el resultado puede ser mucho mejor! ¡Dejo aquí mi consejo!

 

La idea es la misma pero con un indicador de zigzag y abrir orden solo después de un gap como este de la imagen, ¡tendremos un EA más interesante!

Archivos adjuntos:
zigzag.png  19 kb
 
kwlin_089:

La idea es la misma, pero con un indicador de zigzag y una orden de apertura sólo después de un gap como este de la imagen, ¡tendremos un EA más interesante!


En ZigZag fue este código: Última ZZ50

Estrategia basada en el indicador ZigZag y órdenes pendientes.

El código nació en la rama Estrategia basada en el indicador "ZigZag" - "Last ZZ50".

Autor de la idea - Vitaly Muzichenko, implementación del código MQL5 - Vladimir Karputov.

El principio general de la estrategia "Last ZZ50":

Estrategia basada en el indicador "ZigZag" - "Último ZZ50"

En el indicador ZigZag, siempre consideramos los dos últimos rayos: AB y BC. El rayo AB es un rayo que todavía no es fijo y puede cambiar (el punto A puede cambiar su posición).

Las órdenes pendientes se colocan en el centro del rayo AB y BC con un cálculo tal que:

  • La activación de una orden pendiente en el rayo AB es un caso de continuación de la tendencia demostrada por el rayo BC;
  • la activación de la orden pendiente en el rayo BC es un caso de inversión de la tendencia, demostrada por el rayo BC.

Dado que el rayo AB es un rayo que aún no está fijo y puede cambiar (el punto A puede cambiar su posición), la orden pendiente se modificará todo el tiempo para que su precio esté siempre en el centro del rayo AB.

El seguimiento de posiciones abiertas funciona según la regla: espere hasta que la posición esté en beneficio (excluyendo comisión y swap) en al menos (Trailing Stop + Trailing Step) pips, y entonces active el seguimiento para esta posición.

 
Vladimir Karputov :

Había este código para ZigZag: Last ZZ50

Estrategia basada en el indicador "ZigZag" y órdenes pendientes.

El código nació en la rama Estrategia basada en el indicador "ZigZag" - "Last ZZ50".

El autor de la idea es Vitaly Muzichenko, la implementación del código MQL5 - Vladimir Karputov.

El principio general de la estrategia "Última ZZ50":

En el indicador ZigZag siempre consideramos los dos últimos rayos: AB y BC. El rayo AB es un rayo que todavía no es fijo y puede cambiar (el punto A puede cambiar su posición).

Las órdenes pendientes se colocan en el centro del rayo AB y BC con un cálculo tal que:

  • La activación de una orden pendiente en el rayo AB es un caso de continuación de la tendencia mostrada por el rayo BC;
  • la activación de la orden pendiente en el rayo BC es el caso de inversión de la tendencia, que se demuestra por el rayo BC.

Dado que el rayo AB es un rayo que aún no está fijo y que puede cambiar (el punto A puede cambiar de posición), la orden pendiente se modificará en todo momento para que su precio se encuentre siempre en el centro del rayo AB.

El arrastre de posiciones abiertas funciona según la regla: espere hasta que la posición esté en beneficios (excluyendo comisión y swap) por al menos (Trailing Stop + Trailing Step) pips, y entonces active el arrastre para esta posición.

El problema con esta estrategia de "Último ZZ50" es que abre muchas órdenes pendientes en medio del zigzag del indicador, y esto causa mucha confusión llevando a muchas pérdidas y drawdowns. De la manera que has construido este indicador "Fractales a Precios de Cierre EA", es más interesante adaptar el indicador zigzag.

¡Si hay una manera de hacer un EA, que sería interesante! ¡Creo que crearía un excelente EA!
 
kwlin_089:
El problema de esta estrategia "Last ZZ50" es que abre muchas órdenes pendientes en medio del zigzag del indicador, ***

Nunca es tarde para poner un límite al número de posiciones abiertas consecutivas.

 

¿Tiene alguna función para evitar que cierre la orden en la señal contraria?

 

¡Quizás true/false para activar y desactivar el signo contrario o incluso decirme que puedo extraer del código para poder probarlo sin cerrar órdenes en signo contrario! ¡Gracias por su cooperación con este EA!

 
kwlin_089:

¿Tiene alguna función para evitar que cierre la orden en la señal contraria?


Sólo tienes que comentar esas líneas:

   if(InpStarHour<InpEndHour) // comercio en un día
     {
      if(time_current<time_start || time_current>=time_end)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour>InpEndHour) // comercio con transición al día siguiente
     {
      if(struct_time_current.hour<InpStarHour && struct_time_current.hour>=InpEndHour)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour==InpEndHour)
     {
      ¡¡¡// trade full day!!!
     }
 
Vladimir Karputov :

Sólo tienes que comentar esas líneas:

¡Yo lo hice pero no funcionó, entonces esa parte del código posteado aparentemente tiene que ver con abrir y cerrar el gráfico! Pero lo que necesito es que no cierre la posición cuando aparezca la señal fractal contraria, es decir, quiero cerrar la posición sólo en "stop loss" o "take profit"

Intenté comentar esta parte del código, que resultó ser correcta, pero no funciona

 //--- 
   if (last_lower!= EMPTY_VALUE && previous_lower!= EMPTY_VALUE )
       if (previous_lower<last_lower)
        {
          ClosePositions( POSITION_TYPE_SELL ); 
         if (CalculatePositions( POSITION_TYPE_BUY )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Ask ()-ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Ask ()+ExtTakeProfit;
            OpenBuy(sl,tp);
           }
        }
   if (last_upper!= EMPTY_VALUE && previous_upper!= EMPTY_VALUE )
       if (previous_upper>last_upper)
        {
          ClosePositions( POSITION_TYPE_BUY ); 
         if (CalculatePositions( POSITION_TYPE_SELL )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Bid ()+ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Bid ()-ExtTakeProfit;
            OpenSell(sl,tp);
           }
        }
 //--- 
   Trailing();
  }