HistoryDealGetString

Retourne la propriété demandée d'une transaction. La propriété de la transaction doit être de type string. Il existe 2 variantes de la fonction.

1. Retourne immédiatement la valeur de la propriété.

string  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id        // Identifiant de la propriété
   );

2. Retourne true ou false, suivant le succès de la fonction. En cas de succès, la valeur de la propriété est placée dans la variable correspondante passée par référénce (le dernier paramètre).

bool  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id,       // Identifiant de la propriété
   string&                    string_var         // Valeur de la propriété
   );

Paramètres

ticket_number

[in]  Ticket de la transaction.

property_id

[in]  Identifiant de la propriété de la transaction. La valeur peut être l'une des valeurs de l'énumération ENUM_DEAL_PROPERTY_STRING

string_var

[out]  Variable de type string qui prendra la valeur de la propriété demandée.

Valeur de Retour

Valeur de type string.

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.

Exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- demande l'historique des transactions et des ordres
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- en boucle sur la liste des transactions dans l'historique du compte
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
      //--- obtient le ticket de la prochaine transaction (la transaction est automatiquement sélectionnée pour obtenir ses propriétés)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- obtient le type et l'orientation de la transaction et affiche l'en-tête de la liste des propriétés de la transaction sélectionnée
      string type=DealTypeDescription((ENUM_DEAL_TYPE)HistoryDealGetInteger(ticketDEAL_TYPE));
      string entry=DealEntryDescription((ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticketDEAL_ENTRY));
      PrintFormat("String properties of an deal %s entry %s #%I64u:"typeentryticket);
      
      //--- affiche toutes les propriétés de la transaction sélectionnée sous l'en-tête
      HistoryDealPropertiesStringPrint(ticket13);
     }
   /*
   résultat :
   String properties of an deal Buy entry In #2785021084:
   Symbol:      EURUSD
   Comment:     Test PositionGetString
   External ID:
   String properties of an deal Buy entry Out #2497993663:
   Symbol:      EURUSD
   Comment:     [tp 1.08639]
   External ID
   */
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal les propriétés réelles de la transaction |
//+------------------------------------------------------------------+
void HistoryDealPropertiesStringPrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value ="";
   
//--- définit le texte d'en-tête et la largeur du champ d'en-tête
//--- si la largeur de l'en-tête est passée à la fonction égale à zéro, alors la largeur sera la taille de la ligne d'en-tête + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- récupère et affiche dans le journal le symbole de la transaction avec la largeur d'en-tête spécifiée
   if(!HistoryDealGetString(ticketDEAL_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- affiche le commentaire de la transaction dans le journal
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- affiche l'identifiant de la transaction dans un système de trading externe
   header="Extarnal ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| 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);
     }
  }

Voir également

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