Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 1329
- Ranking:
- Publicado:
- 2016.12.27 12:49
-
¿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.
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:
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/1896

Indicador TrendSignal para MetaTrader 5.

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

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

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