Cómo Consultar la Última Operación Cerrada en MetaTrader 5

Mike 2024.04.22 03:51 15 0 0
Archivos adjuntos

En este artículo, te mostraré cómo obtener los datos de la última operación cerrada sin necesidad de usar bucles. Así podrás tener acceso rápido a información clave sobre tus operaciones.

  • Primero, puedes crear una variable para establecer la hora de inicio del día. (Esto no es estrictamente necesario).
  • También puedes crear algunas variables adicionales para mostrar un resultado gráfico y utilizarlas en otros bloques de código. (Esto tampoco es necesario).
  • Utilizar este código dentro de la función OnTick(); mostrará el resultado en cada tick. También puedes configurarlo para que se ejecute una vez por cada barra.

// Variables
string DayStart = "00:00"; // Hora de inicio del día
double LastClosed_Profit; // Beneficio de la última operación cerrada
string TradeSymbol, TradeType;

// Inicialización del Asesor Experto --------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

// Desinicialización del Asesor Experto -------------------
void OnDeinit(const int reason)
  {
  }

// Función OnTick --------------------------
void OnTick()
  {
// Verifica la última operación cerrada.
   CheckLastClosed();
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void CheckLastClosed()
  {
   datetime HistoryTime = StringToTime(DayStart);

// Historial desde el inicio del día hasta el tiempo actual
   if(HistorySelect(HistoryTime,TimeCurrent))
     {
      int Total = HistoryDealsTotal();

      // Obtener el número de ticket de la última operación y seleccionarlo para trabajar con él.
      ulong Ticket = HistoryDealGetTicket(Total -1);

      // Obtener los datos necesarios.
      LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);
      TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);

      // Identificar si es una operación de venta.
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)
        {
         TradeType = "Operación de Venta";
        }

      // Identificar si es una operación de compra
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)
        {
         TradeType = "Operación de Compra";
        }

      // Salida gráfica.
      Comment("\n","Total de Operaciones - :  ", Total,
              "\n","Último Ticket - :  ", Ticket,
              "\n", "Último Beneficio Cerrado -:  ", LastClosed_Profit,
              "\n", "Última Operación fue -:  ", TradeType);

     }
  }//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

Además, puedes obtener el historial completo de operaciones (desde el inicio de la cuenta) utilizando la función HistorySelect(); de esta manera:

// Obtener todo el historial
HistorySelect(0,TimeCurrent());


    Lista
    Comentarios 0