Cerrar operaciones según drawdown

 

Hola a todos!

Quisiera saber si existe un EA que cierre automáticamente todas las operaciones abiertas al momento de llegar a un drawdown establecido.

Manejo cuentas fondeadas y allí existe el límite de 5% diario como máximo de pérdida. Así que quisiera encontrar un EA para que al momento de llegar, 

por ejemplo, al 4% de drawdown, se cierren todas las operaciones.


Gracias de antemano.

 
John Jairo:

Podrá encargarlo en: https://www.mql5.com/es/job

Podrá comprarlo en: https://www.mql5.com/es/market

 

Y buscarlo, en lugar de preguntar en:

MT4 - https://www.mql5.com/es/code/14582 (Codebase)

MT5 - https://www.mql5.com/en/forum/324732 (Foro)


//+------------------------------------------------------------------+
//|                                          Percentage Drawdown.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
//---
CPositionInfo  m_position;                   // object of CPositionInfo class
CTrade         m_trade;                      // object of CTrade class
//--- input parameters
input double   InpDrawdown    = -1;          // drawdown (in %)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   m_trade.SetExpertMagicNumber(456);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(Symbol());
   m_trade.SetDeviationInPoints(10);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positions
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         double price_current = m_position.PriceCurrent();
         double price_open    = m_position.PriceOpen();
         if(m_position.PositionType()==POSITION_TYPE_BUY)
           {
            if(price_open>price_current)
              {
               /*
               price_open
                    |
               price_current

               price_open                 -> 100%
               price_open-price_current   -> x%
               */
               if(((price_open-price_current)*100.0/price_open)<=InpDrawdown)
                  m_trade.PositionClose(m_position.Ticket());
              }
           }
         else
           {
            if(price_open<price_current)
              {
               /*
               price_current
                    |
               price_open

               price_open                 -> 100%
               price_current-price_open   -> x%
               */
               if(((price_current-price_open)*100.0/price_open)<=InpDrawdown)
                  m_trade.PositionClose(m_position.Ticket());
              }
           }
        }
//---
  }
//+------------------------------------------------------------------+


No he comprobado que ninguno de los dos códigos funcione, pero al menos tienes un punto de referencia

Close all orders once the drawdown reaches a specific percentage
  • www.mql5.com
This code has some functions to close all opened orders once the drawdown reaches a specific percentage of the account balance.
Archivos adjuntos:
Razón de la queja: