Gracias.
Muy claro.
Muy claro.
Disculpe autor. EA sin reverse y con lote seleccionable.
EA con lote seleccionable -> cambios en LongShortExpertMACD.mq5:
//+------------------------------------------------------------------+ //|LongShortExpertMACD.mq5 //| Copyright 2009-2013, MetaQuotes Software Corp. - 2013, jlwarrior | //| https://login.mql5.com/en/users/jlwarrior | //+------------------------------------------------------------------+ #property copyright "2009-2013, MetaQuotes Software Corp - 2013, jlwarrior" #property link "https://login.mql5.com/en/users/jlwarrior" #property version "1.00" //+------------------------------------------------------------------+ //| Include| //+------------------------------------------------------------------+ #include <Expert\LongShortExpertModified.mqh> #include <Expert\Signal\SignalMACD.mqh> #include <Expert\Trailing\TrailingNone.mqh> #include <Expert\Money\MoneyFixedLot.mqh> //+------------------------------------------------------------------+ //| Entradas| //+------------------------------------------------------------------+ //--- entradas para el experto input string Inp_Expert_Title ="Long/Short ExpertMACD"; int Expert_MagicNumber =10981; bool Expert_EveryTick =false; input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; /corto/largo/ambas posiciones permitidas //--- entradas MACDExpert por defecto input int Inp_Signal_MACD_PeriodFast =12; // Periodo MACD rápido input int Inp_Signal_MACD_PeriodSlow =24; // Periodo MACD lento input int Inp_Signal_MACD_PeriodSignal=9; // Señal Periodo MACD input double Inp_Money_Lot =0.5; // Valor del lote input int Inp_Signal_MACD_TakeProfit =50; // Valor de Take Profit input int Inp_Signal_MACD_StopLoss =20; // Valor Stop Loss //+------------------------------------------------------------------+ //| Objeto experto global| //+------------------------------------------------------------------+ CLongShortExpertModified ExtExpert; //diseño específico Subclase CExpert //+------------------------------------------------------------------+ //| Función de inicialización del experto| //+------------------------------------------------------------------+ int OnInit(void) { //--- Inicializando experto if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- fallido printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); } // Parámetro específico que controla las posiciones permitidas ExtExpert.SetAvailablePositions(Inp_Allowed_Positions); //--- Creación del objeto señal CSignalMACD *signal=new CSignalMACD; if(signal==NULL) { //--- fallido printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(-2); } //--- Añadir señal a experto (se borrará automáticamente)) if(!ExtExpert.InitSignal(signal)) { //--- fallido printf(__FUNCTION__+": error initializing signal"); ExtExpert.Deinit(); return(-3); } //--- Establecer parámetros de señal signal.PeriodFast(Inp_Signal_MACD_PeriodFast); signal.PeriodSlow(Inp_Signal_MACD_PeriodSlow); signal.PeriodSignal(Inp_Signal_MACD_PeriodSignal); signal.TakeLevel(Inp_Signal_MACD_TakeProfit); signal.StopLevel(Inp_Signal_MACD_StopLoss); //--- Comprobar parámetros de señal if(!signal.ValidationSettings()) { //--- fallido printf(__FUNCTION__+": error signal parameters"); ExtExpert.Deinit(); return(-4); } //--- Creación del objeto final CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- fallido printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(-5); } //--- Añadir final a experto (se borrará automáticamente)) if(!ExtExpert.InitTrailing(trailing)) { //--- fallido printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(-6); } //--- Establecer parámetros finales //--- Comprueba los parámetros finales if(!trailing.ValidationSettings()) { //--- fallido printf(__FUNCTION__+": error trailing parameters"); ExtExpert.Deinit(); return(-7); } //--- Creación del objeto dinero CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- fallido printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(-8); } //--- Añadir dinero a experto (se borrará automáticamente)) if(!ExtExpert.InitMoney(money)) { //--- fallido printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(-9); } //--- Establecer parámetros monetarios money.Lots(Inp_Money_Lot); //--- Comprobar parámetros de dinero if(!money.ValidationSettings()) { //--- fallido printf(__FUNCTION__+": error money parameters"); ExtExpert.Deinit(); return(-10); } //--- Ajuste de todos los indicadores necesarios if(!ExtExpert.InitIndicators()) { //--- fallido printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-11); } //--- tener éxito return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Función de desinicialización del experto| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| Función-manejador de eventos "tick"| //+------------------------------------------------------------------+ void OnTick(void) { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| Función-manejador de eventos "comercio"| //+------------------------------------------------------------------+ void OnTrade(void) { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| Controlador de función-evento "temporizador"| //+------------------------------------------------------------------+ void OnTimer(void) { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+
EA sin reverse -> cambios en LongShortExpertModified.mqh:
//+------------------------------------------------------------------+ //|LongShortExpertModified.mqh | //|Copyright 2013, jlwarrior | //| https://login.mql5.com/en/users/jlwarrior | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //+------------------------------------------------------------------+ //| enumeración para controlar si las posiciones largas / cortas o ambas son|| //| permitido abrir| //+------------------------------------------------------------------+ //--- enum ENUM_AVAILABLE_POSITIONS { LONG_POSITION, SHORT_POSITION, BOTH_POSITION }; //+------------------------------------------------------------------+ //| Clase CLongShortExpertModified.| //| Propósito: Permite abrir sólo posiciones largas / cortas / ambas || //| Propósito: Permite abrir sólo posiciones largas / cortas / ambas. //| Deriva de la clase CExpert (modifica sólo los métodos Open / Reverse)|| //+------------------------------------------------------------------+ class CLongShortExpertModified : public CExpert { protected: ENUM_AVAILABLE_POSITIONS m_positions; public: CLongShortExpertModified(void); ~CLongShortExpertModified(void); virtual bool CheckOpen(void); void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; }; //+------------------------------------------------------------------+ //| Constructor| //+------------------------------------------------------------------+ CLongShortExpertModified ::CLongShortExpertModified(void) : m_positions(BOTH_POSITION) { } //+------------------------------------------------------------------+ //| Destructor| //+------------------------------------------------------------------+ CLongShortExpertModified ::~CLongShortExpertModified(void) { } //+------------------------------------------------------------------+ //| Comprobar posiciones abiertas permitidas| //+------------------------------------------------------------------+ bool CLongShortExpertModified :: CheckOpen() { switch(m_positions) { case LONG_POSITION: return CheckOpenLong(); //comprueba sólo las nuevas posiciones largas case SHORT_POSITION: return CheckOpenShort(); //comprueba sólo las nuevas posiciones cortas default: return CExpert::CheckOpen(); //comportamiento por defecto } } //+------------------------------------------------------------------+
¿dónde está el campo para introducir el código de acción para Largo x corto?

Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Long Short only EA based on CExpert:
Es un Asesor Experto a base de CExpert que permite abrir sólo las órdenes largas o cortas.
Autor: Jose