HistoryOrderSelect

Elige en el historial una orden para recurrir posteriormente a ésta a través de las funciones correspondientes. Devuelve true en caso de que la ejecución de la función se finalice con éxito, de lo contrario devuelve false. Para obtener la información sobre el error hay que llamar a la función GetLastError().

bool  HistoryOrderSelect(
   ulong  ticket,      // ticket de orden
   );

Parámetros

ticket

[in]  Ticket de la orden.

Valor devuelto

Devuelve true en caso del éxito, de lo contrario devuelve false.

Nota

No se debe confundir las órdenes del historial de trading con las órdenes pendientes actuales que se muestran en la pestaña "Trading" del panel "Caja de Herramientas" del terminal de cliente. La lista de las órdenes que han sido canceladas o las que han llevado a la ejecución de una operación comercial se puede ver en la pestaña "Historial" del panel "Caja de Herramientas" del terminal de cliente.

La función HistoryOrderSelect() limpia en un programa mql5 la lista de órdenes del historial, las que están disponible, y copia en esta lista sólo una orden, si la ejecución de la función HistoryOrderSelect() se ha completado con éxito. Si hace falta repasar todas las transacciones seleccionadas por la función HistorySelect() es mejor utilizar la función HistoryOrderGetTicket().

Ejemplo:

#define   TICKET    1819621374   // ticket de cualquier orden conocida, por ejemplo, de la historia de la cuenta
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- seleccionamos una orden histórica según el ticket especificado en TICKET
   if(!HistoryOrderSelect(TICKET))
     {
      PrintFormat("HistoryOrderSelect(%I64u) failed. Error %d"TICKETGetLastError());
      return;
     }
 
//--- si la orden se ha seleccionado con éxito, obtenemos sus datos y mostramos la descripción de la orden en el registro
   ENUM_ORDER_TYPE   order_type  = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(TICKETORDER_TYPE);
   ENUM_ORDER_STATE  order_state = (ENUM_ORDER_STATE)HistoryOrderGetInteger(TICKETORDER_STATE);
   ENUM_ORDER_REASON order_reason= (ENUM_ORDER_REASON)HistoryOrderGetInteger(TICKETORDER_REASON);
   long              order_time  = HistoryOrderGetInteger(TICKETORDER_TIME_SETUP_MSC);
   string            order_symbol=HistoryOrderGetString(TICKETORDER_SYMBOL);
   double            order_vol_init=HistoryOrderGetDouble(TICKETORDER_VOLUME_INITIAL);
   double            order_vol_curr=HistoryOrderGetDouble(TICKETORDER_VOLUME_CURRENT);
   PrintFormat("%s Order %.2f/%s %s #%I64u %s by %s at %s",
               order_symbolorder_vol_init, (order_vol_curr>0 ? DoubleToString(order_vol_curr,2) : "0"),
               OrderTypeDescription(order_type), TICKETOrderStateDescription(order_state),
               OrderReasonDescription(order_reason), TimeMscToString(order_time));
   /*
   resultado para los diferentes tickets indicados:
   EURUSD Order 0.50/0.50 Buy Limit #2812894647 Canceled by Client at 2024.09.04 19:02:31.793
   EURUSD Order 0.10/0 Sell #1753011743 Filled by Take Profit at 2023.06.12 17:04:20.353
   GBPUSD Order 0.10/0 Buy #1819621374 Filled by Client at 2023.07.24 06:16:25.746
   */
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del tipo de orden                         |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case ORDER_TYPE_BUY              :  return("Buy");
      case ORDER_TYPE_SELL             :  return("Sell");
      case ORDER_TYPE_BUY_LIMIT        :  return("Buy Limit");
      case ORDER_TYPE_SELL_LIMIT       :  return("Sell Limit");
      case ORDER_TYPE_BUY_STOP         :  return("Buy Stop");
      case ORDER_TYPE_SELL_STOP        :  return("Sell Stop");
      case ORDER_TYPE_BUY_STOP_LIMIT   :  return("Buy Stop Limit");
      case ORDER_TYPE_SELL_STOP_LIMIT  :  return("Sell Stop Limit");
      default                          :  return("Unknown order type: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del estado de la orden                    |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
  {
   switch(state)
     {
      case ORDER_STATE_STARTED         :  return("Started");
      case ORDER_STATE_PLACED          :  return("Placed");
      case ORDER_STATE_CANCELED        :  return("Canceled");
      case ORDER_STATE_PARTIAL         :  return("Partial");
      case ORDER_STATE_FILLED          :  return("Filled");
      case ORDER_STATE_REJECTED        :  return("Rejected");
      case ORDER_STATE_EXPIRED         :  return("Expired");
      case ORDER_STATE_REQUEST_ADD     :  return("Request Add");
      case ORDER_STATE_REQUEST_MODIFY  :  return("Request Modify");
      case ORDER_STATE_REQUEST_CANCEL  :  return("Request Cancel");
      default                          :  return("Unknown state: "+(string)state);
     }
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del motivo de la colocación de la orden   |
//+------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
  {
   switch(reason)
     {
      case ORDER_REASON_CLIENT   :  return("Client");
      case ORDER_REASON_MOBILE   :  return("Mobile");
      case ORDER_REASON_WEB      :  return("Web");
      case ORDER_REASON_EXPERT   :  return("Expert");
      case ORDER_REASON_SL       :  return("Stop Loss");
      case ORDER_REASON_TP       :  return("Take Profit");
      case ORDER_REASON_SO       :  return("Stop Out");
      default                    :  return("Unknown reason: "+(string)reason);
     }
  }
//+------------------------------------------------------------------+
//| Retorna la hora en milisegundos                                  |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Véase también

HistorySelect(), HistoryOrderGetTicket(), Propiedades de órdenes