Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Long Short only EA based on CExpert - Asesor Experto para MetaTrader 5

Visualizaciones:
1159
Ranking:
(30)
Publicado:
2016.12.27 12:49
\MQL5\Include\Expert\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Este EA permite eligir para la apertura sólo las posiciones largas/cortas (unas u otras) basándose en la extensión de la clase CExpert.

Se adjuntan dos archivos diferentes:

  • LongShortExpertModified.mqh: Esta extensión añade a la clase CExpert los métodos CheckOpen() y CheckReverse(), lo que permite abrir solamente las órdenes de un determinado tipo;
  • LongShortExpertMACD.mq5: Este EA es una modificación simple de la clase incorporada ExpertMACD.mq5, que permite abrir sólo un determinado tipo de las órdenes de acuerdo con los parámetros de entrada, aumentando de esa manera la precisión del uso del EA.
LongShortExpertModified

Estas adiciones modifican el comportamiento predefinido de la clase CExpert, y por defecto permiten trabajar sólo con un determinado tipo de las órdenes, de acuerdo con la siguiente enumeración:

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };

Esta enumeración va a utilizarse como parámetros de entrada para un EA hecho, con el fin de determinar el tipo de la orden que se le será permitido abrir. Está destinada exclusivamente para el uso interno y permite enviar sólo las órdenes necesarias. Las órdenes de reversa van a procesarse sólo si ambos tipos están permitidos: Sell y Buy (en la lista eso va a corresponder al valor BOTH_POSITION).

Para conseguirlo, los métodos CheckOpen() y CheckReverse() han sido reescritos:

class CLongShortExpertModified : public CExpert
  {
protected:
   ENUM_AVAILABLE_POSITIONS m_positions;
public:
                     CLongShortExpertModified(void);
                    ~CLongShortExpertModified(void);
   virtual bool      CheckOpen(void);
   virtual bool      CheckReverse(void);
   void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;};
  };


CheckOpen() sirve sólo para comprobar si se abre la posición larga o corta (de acuerdo con el valor m_positions):

bool CLongShortExpertModified :: CheckOpen()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
         return CheckOpenLong();         //comprobar sólo nuevas posiciones largas
      case SHORT_POSITION:
         return CheckOpenShort();        //comprobar sólo nuevas posiciones cortas
      default:
         return CExpert::CheckOpen();    //comportamiento por defecto
     }
  }

CheckReverse() comprueba la posición opuesta sólo si está permitido el procesamiento de ambos tipos de las órdenes:

bool CLongShortExpertModified::CheckReverse()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
      case SHORT_POSITION:
         return false;                    // la reversa no está permitida
      default:
         return CExpert::CheckReverse(); //comportamiento por defecto
     }
  }

LongShortExpertMACD

Esta clase es un ejemplo concreto del EA escrito con el uso de la clase descrita anteriormente a base del EA ExpertMACD que se incluye por defecto en la plataforma.

En primer lugar, se debe incluir la clase concreta del EA y añadir los parámetros de entrada. El EA externo también está asociado con la subclase, en vez de Cexpert por defecto.

#include <Expert\LongShortExpertModified.mqh>
//[...]
input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //short / long / both positions allowed
//[...]
CLongShortExpertModified ExtExpert;  //subclase CExpert diseñada especialmente

Después de la inicialización del EA, los parámetros deben establecerse de acuerdo con los valores de entrada:

if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(-1);
     }
   
   // El parámetro concreto que controla qué posiciones están permitidas
   ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);  


No hay que hacer ninguna modificación adicional. En la siguiente imagen se muestra la configuración de los parámetros de entrada para el EA:

Expert Advisor que genera sólo las órdenes cortas/largas

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

TrendSignal Indicator TrendSignal Indicator

Indicador TrendSignal para MetaTrader 5.

Mercado Aberto Mercado Aberto

Es un indicador simple que muestra el tiempo cuando el mercado está abierto.

CoensioTrader1V06 CoensioTrader1V06

Sistema de trading multidivisas basado en las Bandas de Bollinger y las técnicas de la «caza» de la tendencia.

FxTrend 25EMA FxTrend 25EMA

FxTrend 25EMA se basa en la diferencia entre los valores de EMA 25 durante dos diferentes momentos de tiempo.