HistoryDealSelect

Sélectionne une transaction dans l'historique pour l'utiliser ensuite avec les fonctions correspondantes. La fonction retourne si la fonction s'est terminé avec succès. Elle retourne false si la fonction a échoué. Pour plus de détails sur l'erreur, appelez GetLastError().

bool  HistoryDealSelect(
   ulong  ticket      // ticket de la transaction
   );

Paramètres

ticket

[in]  Ticket de la transaction.

Valeur de Retour

Retourne true en cas de succès, sinon false.

Note

Ne confondez pas les ordres, les transactions et les positions. Chaque transaction est le résultat de l'exécution d'un ordre, chaque position est le résultat global d'une ou plusieurs transactions.

HistoryDealSelect() supprime dans un programme MQL5 la liste des transactions disponibles pour référence et copie la transaction unique si HistoryDealSelect() s'est terminée avec succès. Si vous devez parcourir toutes les transactions sélectionnées avec la fonction HistorySelect(), il est préférable d'utiliser HistoryDealGetTicket().

Exemple :

#define   TICKET    2620919264   // ticket de toute transaction connue, par exemple, à partir de l'historique du compte du terminal 
 
long      ExtTicket=TICKET;      // définit le ticket spécifié sur la variable de substitution de la macro pour le test dans le script,
                                 // ou gère les transactions dans le gestionnaire OnTradeTransaction() de l'EA : 
//+------------------------------------------------------------------+
//| Expert TradeTransaction handler                                  |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransactiontrans,
                        const MqlTradeRequestrequest,
                        const MqlTradeResultresult)
  {
   //--- si une opération ajoute une transaction à l'historique 
   if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
     {
      //--- sélectionne une offre par son ticket, récupère ses données et affiche la description de la transaction dans le journal 
      HistoryDealSelectProcess(trans.deal);
     }
  }
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- sélectionne une transaction par son ticket, récupère ses données et affiche la description de la transaction dans le journal
   HistoryDealSelectProcess(ExtTicket);
   /*
  résultat :
   (Position ID #2645974677EURUSD Deal Out 0.10 Buy #2620919264 by order #2646028969 at 1.091782024.07.15 18:16:32.570
   */
  }
//+------------------------------------------------------------------+
//| Sélectionne une transaction par son ticket et l'affiche          |
//+------------------------------------------------------------------+
void HistoryDealSelectProcess(const ulong deal_ticket)
  {
//--- sélectionne une transaction historique par le ticket spécifié dans deal_ticket
   ResetLastError();
   if(!HistoryDealSelect(deal_ticket))
     {
      PrintFormat("HistoryDealSelect(%I64u) failed. Error %d"deal_ticketGetLastError());
      return;
     }
 
//--- si une transaction est sélectionnée avec succès, récupère ses données et affiche sa description dans le journal
   ENUM_DEAL_TYPE    deal_type  = (ENUM_DEAL_TYPE)HistoryDealGetInteger(ExtTicketDEAL_TYPE);
   ENUM_DEAL_ENTRY   deal_entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(ExtTicketDEAL_ENTRY);
   ENUM_DEAL_REASON  deal_reason= (ENUM_DEAL_REASON)HistoryDealGetInteger(ExtTicketDEAL_REASON);
   long              deal_time  = HistoryDealGetInteger(ExtTicketDEAL_TIME_MSC);
   long              deal_order = HistoryDealGetInteger(ExtTicketDEAL_ORDER);
   long              deal_pos_idHistoryDealGetInteger(ExtTicketDEAL_POSITION_ID);
   string            deal_symbolHistoryDealGetString(ExtTicketDEAL_SYMBOL);
   double            deal_volumeHistoryDealGetDouble(ExtTicketDEAL_VOLUME);
   double            deal_price = HistoryDealGetDouble(ExtTicketDEAL_PRICE);
   int               digits     = (int)SymbolInfoInteger(deal_symbolSYMBOL_DIGITS);
   
   PrintFormat("(Position ID #%I64d) %s Deal %s %.2f %s #%I64u by order #%I64d at %.*f, %s",
               deal_pos_iddeal_symbolDealEntryDescription(deal_entry), deal_volume,
               DealTypeDescription(deal_type), ExtTicketdeal_orderdigitsdeal_price,
               TimeMscToString(deal_time));
  }
//+------------------------------------------------------------------+
//| Retourne la description du type de la transaction                |
//+------------------------------------------------------------------+
string DealTypeDescription(const ENUM_DEAL_TYPE type)
  {
   switch(type)
     {
      case DEAL_TYPE_BUY                     :  return("Buy");
      case DEAL_TYPE_SELL                    :  return("Sell");
      case DEAL_TYPE_BALANCE                 :  return("Balance");
      case DEAL_TYPE_CREDIT                  :  return("Credit");
      case DEAL_TYPE_CHARGE                  :  return("Additional charge");
      case DEAL_TYPE_CORRECTION              :  return("Correction");
      case DEAL_TYPE_BONUS                   :  return("Bonus");
      case DEAL_TYPE_COMMISSION              :  return("Additional commission");
      case DEAL_TYPE_COMMISSION_DAILY        :  return("Daily commission");
      case DEAL_TYPE_COMMISSION_MONTHLY      :  return("Monthly commission");
      case DEAL_TYPE_COMMISSION_AGENT_DAILY  :  return("Daily agent commission");
      case DEAL_TYPE_COMMISSION_AGENT_MONTHLY:  return("Monthly agent commission");
      case DEAL_TYPE_INTEREST                :  return("Interest rate");
      case DEAL_TYPE_BUY_CANCELED            :  return("Canceled buy deal");
      case DEAL_TYPE_SELL_CANCELED           :  return("Canceled sell deal");
      case DEAL_DIVIDEND                     :  return("Dividend operations");
      case DEAL_DIVIDEND_FRANKED             :  return("Franked (non-taxable) dividend operations");
      case DEAL_TAX                          :  return("Tax charges");
      default                                :  return("Unknown deal type: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la méthodde de changement de position                   |
//+------------------------------------------------------------------+
string DealEntryDescription(const ENUM_DEAL_ENTRY entry)
  {
   switch(entry)
     {
      case DEAL_ENTRY_IN      :  return("In");
      case DEAL_ENTRY_OUT     :  return("Out");
      case DEAL_ENTRY_INOUT   :  return("Reverce");
      case DEAL_ENTRY_OUT_BY  :  return("Out by");
      case DEAL_ENTRY_STATE   :  return("Status record");
      default                 :  return("Unknown deal entry: "+(string)entry);
     }
  }
//+------------------------------------------------------------------+
//| Retourne l'heure en millisecondes                                |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Voir également

HistorySelect(), HistoryDealGetTicket(), Propriétés d'une transaction