Obtener valor de Profit de la última operación cerrada

 

Hola a todos!


Encontré un código en una librería en la sección de "Documentación" para obtener el ticket de la última operación cerrada, y lo que quiero es obtener el Profit (positivo o negativo) de esta última operación.


//---Conseguir el número de ticket de la última operación cerrada
int get_last_order( int type = -1, int mode = MODE_TRADES )
   {
    int     orders_total  = 0, ticket  = -1;
    string  symbol        = Symbol();
    datetime opn_time     = 0, ord_time = 0;
    
    if( mode == MODE_HISTORY )
        orders_total  = OrdersHistoryTotal();
    else
        orders_total  = OrdersTotal();
    
    for( int i = 0; i < orders_total; i++ )
       {
        if( OrderSelect( i, SELECT_BY_POS, mode ) )
          {
            if( OrderSymbol() != symbol )
                continue;
            if( OrderType() == type || type == - 1 )
              {      
               if( OrderMagicNumber() == magic || magic == 0 )
                 {
                   if( mode == MODE_TRADES )
                       ord_time = OrderOpenTime();
                   else
                       ord_time = OrderCloseTime();
                    
                   if( ord_time > opn_time )
                     {
                       opn_time = ord_time;
                       ticket = OrderTicket();
                     }
                 }
               }
          }
        else
          {
           ticket = -1;
           break;
          }
       }//end for
    
    return(ticket);    
   }
   
//---Averiguar el profit de la última operación
double Lx()
      {
       double Lx1=1;
       for(int i=0;i<OrdersHistoryTotal();i++)
           {
            int a1=OrderSelect(get_last_order(),SELECT_BY_TICKET,MODE_HISTORY);
            if (OrderMagicNumber()==magic && OrderSymbol()==Symbol()) Lx1=OrderProfit();
           }
       return (Lx1);
      }

Les adjunto el código, para ver si ustedes me pueden ayudar a solucionarlo.

La función para obtener el número de ticket funciona muy bien, pero el valor que obtengo de la función "Lx" es siempre "-0.1"  y no entiendo por qué, lo que quiero es obtener el valor del Profit de la última operación cerrada.


Espero me puedan ayudar, muchas gracias de antemano!

 
Olvidé mencionar que es en MQL4
 
//---Conseguir el número de ticket de la última operación cerrada
int get_last_order( int type = -1, int mode = MODE_TRADES )
   {
   int     orders_total  = 0, ticket  = -1;
   string  symbol        = Symbol();
   datetime opn_time     = 0, ord_time = 0;

   if( mode == MODE_HISTORY )
      orders_total  = OrdersHistoryTotal();
   else
      orders_total  = OrdersTotal();

   for( int i = 0; i < orders_total; i++ )
      {
      if( OrderSelect( i, SELECT_BY_POS, mode ) )
         {
         if( OrderSymbol() != symbol )continue;

         if( OrderType()==type && (OrderMagicNumber() == magic || magic == 0) )
            {
            if( mode == MODE_TRADES )
               ord_time = OrderOpenTime();
            else
               ord_time = OrderCloseTime();

            if( ord_time > opn_time )
               {
               opn_time = ord_time;
               ticket = OrderTicket();
               }
            }
         }
      else
         {
         ticket = -1;
         break;
         }
      }//end for

   return(ticket);
   }

//---Averiguar el profit de la última operación
double Lx(int type_) // 0=compras, 1=ventas
   {
   double Lx1=0;
   int ultimoTrade=get_last_order(type_,MODE_HISTORY); 

   if( OrderSelect(ultimoTrade,SELECT_BY_TICKET,MODE_HISTORY))
      {
      Lx1=OrderProfit();
      }
   return (Lx1);
   }

Para compras usas Lx(0) y para ventas usas  Lx(1)

Espero te sirva,

Saludos!!!

 
Miguel Antonio Rojas Martinez:

Para compras usas Lx(0) y para ventas usas  Lx(1)

Espero te sirva,

Saludos!!!

Muchísimas gracias!


Lo voy a probar.

 
Miguel Antonio Rojas Martinez:

Para compras usas Lx(0) y para ventas usas  Lx(1)

Espero te sirva,

Saludos!!!

Listo, ya lo probé, me funcionó muy bien, muchísimas gracias!!!

Razón de la queja: