EA MT4 Cerrar todas las ordenes con un Boton

 

Publi

Cerrar todas las ordenes con un Boton

 

Publi

Resultados 1 al 7 de 7


  1. #1




    Reputación:
    Poder de reputación: 10

    Espana
    Mensajes: 35
    Créditos: 1.074

    Cerrar todas las ordenes con un Boton


    Publi
    Hola a tod@s, estoy intentando hacer un EA que me cierre todas las posiciones cuando pulse un boton en el grafico con la idea de hacer operaciones rapidas.Pero soy novato en programacion, subo el codigo por si alguien puede decirme lo que esta mal o si quieren modificarlo y mejorar la idea.


    Código:
    #property strict
    
    extern int Slippage=0;
    
    //+------------------------------------------------------------------+
    //|                  Creo y posiciono el Boton                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    
       ObjectCreate(0,"Boton",OBJ_BUTTON,0,0,0);
       ObjectSetInteger(0,"Boton",OBJPROP_COLOR,clrWhite);
       ObjectSetInteger(0,"Boton",OBJPROP_BGCOLOR,clrGreen);
       ObjectSetInteger(0,"Boton",OBJPROP_XDISTANCE,3);
       ObjectSetInteger(0,"Boton",OBJPROP_YDISTANCE,80);
       ObjectSetInteger(0,"Boton",OBJPROP_XSIZE,175);
       ObjectSetInteger(0,"Boton",OBJPROP_YSIZE,48);
       ObjectSetString(0,"Boton",OBJPROP_FONT,"Arial");
       ObjectSetString(0,"Boton",OBJPROP_TEXT,"Cerrar Todo");
       ObjectSetInteger(0,"Boton",OBJPROP_FONTSIZE,11);
       ObjectSetInteger(0,"Boton",OBJPROP_SELECTABLE,0);
     
     
    //---
       return(INIT_SUCCEEDED);
      }
    
    //+------------------------------------------------------------------+ 
    void OnDeinit(const int reason)
      {
       ObjectDelete(0,"Boton");
      }
    
    //+------------------------------------------------------------------+
    void OnChartEvent(const int id,
                      const long &lparam,
                      const double &dparam,
                      const string &sparam)
     {
    
       if(id==CHARTEVENT_OBJECT_CLICK)
         {
          string clickedChartObject=sparam;
    
          if(clickedChartObject=="Boton")
            {
    
             bool selected=ObjectGetInteger(0,"Boton",OBJPROP_STATE);
    
             if(selected)
               {
                for(int i=OrdersTotal()-1;i>=0;i--)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);   
                    OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet);
                   } 
               }
    
            }
    
    
         ChartRedraw(0);return;
         
        }
     }
    Foro de Forex Trading United
    Última edición por Neo Trader; 09:23 a las Razón: Añadir etiqueta "CODE" al código


  2. Publi
    Publi


  3. #2
    Avatar de Samuu
    Erectus


    Reputación:
    Poder de reputación: 17

    Mensajes: 1.306
    Créditos: 0

    Re: Cerrar todas las ordenes con un Boton

    Hola s_sp, te adjunto un EA que cierra automaticamente todas las operaciones abiertas, aunque lo de las ordenes pendientes que comenta trader201 sería muy interesantes, ya que aunque no estén abiertas, tal vez quieras eliminarlas.

    Saludos
    Samuu

    - - - Updated - - -

    Para que funcione tienes que cargarlo en el grafico concreto y pon su parámetro en TRUE y ya con eso funciona.
    Foro de Forex Trading United
    Archivos adjuntados Archivos adjuntados

  4. #3




    Reputación:
    Poder de reputación: 10

    Espana
    Mensajes: 35
    Créditos: 1.074

    Re: Cerrar todas las ordenes con un Boton

    Gracias a todos por vuestras respuestas. Lo solucione cambiando
    if(id==CHARTEVENT_OBJECT_CLICK) por if(id==CHARTEVENT_CLICK), tambien le añadi OrderDelete
    Foro de Forex Trading United

  5. #4

    antecessor


    Reputación:
    Poder de reputación: 15

    Venezuela
    Mensajes: 589
    Créditos: 2.342

    Re: Cerrar todas las ordenes con un Boton

    Hola S_SP. Yo estoy haciendo algo similar: un EA que cierre todas las posiciones, pero incluyendo también las órdenes pendientes, para lo cual solo agrego OrderDelete si la operación es tipo Stop o Límite.

    Te lo comento por si no lo habías tomado en cuenta y te es también de utilidad.

    Recibe un saludo.
    Foro de Forex Trading United

  6. #5




    Reputación:
    Poder de reputación: 11

    Mensajes: 293
    Créditos: 777

    Re: Cerrar todas las ordenes con un Boton

    Cita Iniciado por S_SP Ver mensaje
    Hola a tod@s, estoy intentando hacer un EA que me cierre todas las posiciones cuando pulse un boton en el grafico con la idea de hacer operaciones rapidas.Pero soy novato en programacion, subo el codigo por si alguien puede decirme lo que esta mal o si quieren modificarlo y mejorar la idea.


    Código:
    #property strict
    
    extern int Slippage=0;
    
    //+------------------------------------------------------------------+
    //|                  Creo y posiciono el Boton                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    
       ObjectCreate(0,"Boton",OBJ_BUTTON,0,0,0);
       ObjectSetInteger(0,"Boton",OBJPROP_COLOR,clrWhite);
       ObjectSetInteger(0,"Boton",OBJPROP_BGCOLOR,clrGreen);
       ObjectSetInteger(0,"Boton",OBJPROP_XDISTANCE,3);
       ObjectSetInteger(0,"Boton",OBJPROP_YDISTANCE,80);
       ObjectSetInteger(0,"Boton",OBJPROP_XSIZE,175);
       ObjectSetInteger(0,"Boton",OBJPROP_YSIZE,48);
       ObjectSetString(0,"Boton",OBJPROP_FONT,"Arial");
       ObjectSetString(0,"Boton",OBJPROP_TEXT,"Cerrar Todo");
       ObjectSetInteger(0,"Boton",OBJPROP_FONTSIZE,11);
       ObjectSetInteger(0,"Boton",OBJPROP_SELECTABLE,0);
     
     
    //---
       return(INIT_SUCCEEDED);
      }
    
    //+------------------------------------------------------------------+ 
    void OnDeinit(const int reason)
      {
       ObjectDelete(0,"Boton");
      }
    
    //+------------------------------------------------------------------+
    void OnChartEvent(const int id,
                      const long &lparam,
                      const double &dparam,
                      const string &sparam)
     {
    
       if(id==CHARTEVENT_OBJECT_CLICK)
         {
          string clickedChartObject=sparam;
    
          if(clickedChartObject=="Boton")
            {
    
             bool selected=ObjectGetInteger(0,"Boton",OBJPROP_STATE);
    
             if(selected)
               {
                for(int i=OrdersTotal()-1;i>=0;i--)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);   
                    OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet);
                   } 
               }
    
            }
    
    
         ChartRedraw(0);return;
         
        }
     }
    Código:
    void CierraTodas(){
      int total = OrdersTotal();
      for(int i=total-1;i>=0;i--)
      {
        OrderSelect(i, SELECT_BY_POS);
        int type   = OrderType();
    
    
        bool result = false;
        
        switch(type)
        {
          //Close opened long positions
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                              break;
          
          //Close opened short positions
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                              break;
    
    
          //Close pending orders
          case OP_BUYLIMIT  :
          case OP_BUYSTOP   :
          case OP_SELLLIMIT :
          case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
        }
        
        if(result == false)
        {
          Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
          Sleep(3000);
        }  
      }
       return(0);
    }
    Amigo aqui te pongo la funcion para cerrar todas las posiciones, ahora solo tienes que llamarle cuando desees:
    double AccountEquity( )
    Returns equity value of the current account. Equity calculation depends on trading server settings.
    double OrderProfit( )
    Returns the net profit value (without swaps or commissions) for the selected order. For open positions, it is the current unrealized profit. For closed orders, it is the fixed profit.
    Returns profit for the currently selected order.
    Note: The order must be previously selected by the OrderSelect() function
    double AccountProfit( )
    Returns profit value of the current account.

    Estoy a punto de embarcar asi que espero que te sirva.
    Foro de Forex Trading United

  7. #6
    Avatar de manusenda
    Erectus


    Reputación:
    Poder de reputación: 11

    Espana
    Mensajes: 130
    Créditos: 1.713

    Re: Cerrar todas las ordenes con un Boton

    Es un buen proyecto, yo suelo usar un script muy sencillo que na más lanzarlo al gráfico te cierra todas las operaciones. este tipo de script lo encuentras en cualquier sitio, y siempre le puedes poner teclas de acceso rápido.

    Pero tu idea de cerrar las operaciones pulsando un botón la veo muy eficiente.

    Si encuentras algo en condiciones avísame, yo intentaré encontrar algo.

    Bueno un saludo compañero!
    Foro de Forex Trading United

    <()>manusenda<()>

  8. #7

    Re: Cerrar todas las ordenes con un Boton


    Publi
    Cita Iniciado por S_SP Ver mensaje
    Hola a tod@s, estoy intentando hacer un EA que me cierre todas las posiciones cuando pulse un boton en el grafico con la idea de hacer operaciones rapidas.Pero soy novato en programacion, subo el codigo por si alguien puede decirme lo que esta mal o si quieren modificarlo y mejorar la idea.


    Código:
    #property strict
    
    extern int Slippage=0;
    
    //+------------------------------------------------------------------+
    //|                  Creo y posiciono el Boton                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    
       ObjectCreate(0,"Boton",OBJ_BUTTON,0,0,0);
       ObjectSetInteger(0,"Boton",OBJPROP_COLOR,clrWhite);
       ObjectSetInteger(0,"Boton",OBJPROP_BGCOLOR,clrGreen);
       ObjectSetInteger(0,"Boton",OBJPROP_XDISTANCE,3);
       ObjectSetInteger(0,"Boton",OBJPROP_YDISTANCE,80);
       ObjectSetInteger(0,"Boton",OBJPROP_XSIZE,175);
       ObjectSetInteger(0,"Boton",OBJPROP_YSIZE,48);
       ObjectSetString(0,"Boton",OBJPROP_FONT,"Arial");
       ObjectSetString(0,"Boton",OBJPROP_TEXT,"Cerrar Todo");
       ObjectSetInteger(0,"Boton",OBJPROP_FONTSIZE,11);
       ObjectSetInteger(0,"Boton",OBJPROP_SELECTABLE,0);
     
     
    //---
       return(INIT_SUCCEEDED);
      }
    
    //+------------------------------------------------------------------+ 
    void OnDeinit(const int reason)
      {
       ObjectDelete(0,"Boton");
      }
    
    //+------------------------------------------------------------------+
    void OnChartEvent(const int id,
                      const long &lparam,
                      const double &dparam,
                      const string &sparam)
     {
    
       if(id==CHARTEVENT_OBJECT_CLICK)
         {
          string clickedChartObject=sparam;
    
          if(clickedChartObject=="Boton")
            {
    
             bool selected=ObjectGetInteger(0,"Boton",OBJPROP_STATE);
    
             if(selected)
               {
                for(int i=OrdersTotal()-1;i>=0;i--)
                   {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);   
                    OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet);
                   } 
               }
    
            }
    
    
         ChartRedraw(0);return;
         
        }
     }
    Me encantaría ayudarte pero la programación no es mi paso fuerte.

    Buscando un poco por internet he encontrado esto, puedes utilizar el traductor de google para entenderlo y ver cual se adapta a lo que necesitas.

    Tambien te puede servir esto de esta pagina, donde estan los scripts llamados Scripts Instantáneos de Gallant

    Suerte y ya me contaras.
    Foro de Forex Trading United

This website uses cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

 

Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal