HistoryDealGetString

Restituisce la proprietà richiesta di una operazione. La proprietà dell'operazione deve essere di tipo stringa. Ci sono due varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

string  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id        // Identificativo della proprietà
   );

2. Restituisce true o false, a seconda del successo della funzione. In caso di successo, il valore della proprietà è posto in una variabile di destinazione passata per riferimento dall ultimo parametro.

bool  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id,       // Identificativo della proprietà
   string&                    string_var         // Qui si accetta il valore della proprietà
   );

Parametri

ticket_number

[in]  Ticket dell'operazione.

property_id

[in] Identificativo della proprietà dell'operazione. Il valore può essere uno dei valori dell'enumerazione ENUM_DEAL_PROPERTY_STRING.

string_var

[out] Variabile di tipo stringa che accetta il valore della proprietà richiesta.

Valore restituito

Valore di tipo stringa.

Nota

Attenzione a non confondere ordini, operazioni e posizioni. Ogni operazione è il risultato dell'esecuzione di un ordine, ogni posizione è il risultato di riepilogo di una o più operazioni.

Esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- cronologia delle operazioni e degli ordini
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- in un ciclo dalla lista delle operazioni nella cronologia del conto
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
 //--- ottenere il ticket dell'operazione successiva (l'operazione viene selezionata automaticamente per ottenere le sue proprietà)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
 //--- ottenere il tipo e la direzione dell'operazione e visualizzare l'intestazione per l'elenco delle proprietà effettive dell'operazione selezionata
      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);
      
 //--- stampare tutte le proprietà effettive dell'operazione selezionata sotto l'intestazione
      HistoryDealPropertiesStringPrint(ticket13);
     }
   /*
   risultato:
   String properties of an deal Buy entry In #2785021084:
   Symbol:      EURUSD
   Comment:     Test PositionGetString
   Extarnal ID:
   String properties of an deal Buy entry Out #2497993663:
   Symbol:      EURUSD
   Comment:     [tp 1.08639]
   Extarnal ID
   */
  }
//+---------------------------------------------------------------------------------+
//| Visualizzare le proprietà della stringa dell'operazione selezionata nel journal |
//+---------------------------------------------------------------------------------+
void HistoryDealPropertiesStringPrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value ="";
   
//--- definire il testo dell'intestazione e la larghezza del campo dell'intestazione
//--- se la larghezza dell'intestazione viene passata alla funzione uguale a zero, allora la larghezza sarà la dimensione della riga dell'intestazione + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- ottenere e visualizzare il simbolo dell'operazione con la larghezza specificata dell'intestazione nel journal
   if(!HistoryDealGetString(ticketDEAL_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- visualizzare il commento dell'operazione nel journal
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- visualizzare l'ID dell'operazione in un sistema di trading esterno
   header="Extarnal ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Restituire la descrizione del tipo di operazione                 |
//+------------------------------------------------------------------+
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);
     }
  }
//+----------------------------------------------------------------------------+
//| Restituire la modalità di variazione della posizione                       |
//+----------------------------------------------------------------------------+
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);
     }
  }

Vedi anche

HistoryDealsTotal(), HistorySelect(), HistoryDealGetTicket(), Proprietà Operazioni