HistoryOrderSelect

Wählt in der Historie der Order für den weiteren Zugang durch entsprechenden Funktionen aus. Gibt true zurück, wenn die Durchführung der Funktion erfolgreich beendet wird. Gibt false zurück, wenn die Durchführung der Funktion erfolglos beendet wird. Für den Erhalt der fehlerbezogenen Information rufen Sie die Funktion GetLastError() auf.

bool  HistoryOrderSelect(
   ulong  ticket,      // Orderticket
   );

Parameter

ticket

[in]  Orderticket

Rückgabewert

Gibt true im Erfolgsfall zurück, anderenfalls false.

Hinweis

Man darf eine Order aus der Historie und gültige schwebende Aufträge (pending orders) nicht miteinander verwechseln, die in der Registerkarte  "Handel" in der Werkzeugleiste "Instrumente" dargestellt werden. Die Liste der Order, die annulliert wurden oder zur Ausführung der Handelsoperation geführt haben, kann man in der Registerkarte "Historie" in der Werkzeugleiste "Instrumente" des Client-Terminals sehen.

Die Funktion HistoryOrderSelect() löscht im mql5-Programm die Liste der Order aus der Historie, die für Aufrufe zugänglich sind, und kopiert darin die einzige Order, wenn die Ausführung HistoryOrderSelect() erfolgreich beendet hat. Wenn es notwendig ist, alle Deals durchzusehen, die von der Funktion HistorySelect() gewählt wurden, ist es besser die Funktion HistoryOrderGetTicket() zu verwenden.

Beispiel:

#define   TICKET    1819621374   // Beispiel einer Ticketnummer einer bekannten Order aus der Kontohistorie
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- wähle eine historische Order anhand des in TICKET angegebenen Ticketnummer
   if(!HistoryOrderSelect(TICKET))
     {
      PrintFormat("HistoryOrderSelect(%I64u) failed. Error %d"TICKETGetLastError());
      return;
     }
 
//--- wenn eine Order erfolgreich ausgewählt wurde, ruf deren Daten ab und druck die Order-Beschreibung im Journal aus
   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));
   /*
   Ergebnis für verschiedene angegebene Tickets:
   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
   */
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Auftragstyps                       |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Order-Status                       |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Order-Grundes                      |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Zeit in Millisekunden                               |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Siehe auch

HistorySelect(), HistoryOrderGetTicket(), Ordereigenschaften