HistoryDealGetString

Gibt die angeforderte Eigenschaft des Deals zurück. Die Eigenschaft des Deals muss vom Typ string sein. Es gibt 2 Varianten der Funktion.

1. Gibt den Wert der Eigenschaft selbst zurück.

string  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id        // Identifikator der Eigenschaft
   );

2. Gibt true oder false zurück, abhängig davon, ob die Funktion erfolgreich durchgeführt wird. Im Erfolgsfall wird der Wert der Variable der Empfangsvaiable zugewiesen, die durch Referenz als letzter Parameter übertragen wird.  

bool  HistoryDealGetString(
   ulong                      ticket_number,     // Ticket
   ENUM_DEAL_PROPERTY_STRING  property_id,       // Identifikator der Eigenschaft
   string&                    string_var         // hier nehmen wir den Wert der Eigenschaft auf 
   );

Parameter

ticket_number

[in]  Ticket des Deals.

property_id

[in]  Identifikator der Eigenschaft des Deals. Wert kann einer der Enumerationswerte ENUM_DEAL_PROPERTY_STRING sein.

string_var

[out]  Variable vom Typ string, die den Wert der angeforderten Eigenschaft annimmt.

Rückgabewert

Wert vom Typ string.

Hinweis

Man darf Order, Deal und Position nicht miteinander verwechseln. Jeder Deal ist das Ergebnis der Ausführung eines Auftrags (order), jede Position ist das Abschlussergebnis eines oder mehrerer Deals.

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Handels- und Auftragshistorie anfordern
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- in einer Schleife durch die Liste der Deals in der Kontohistorie
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
      //--- Ticket des nächsten Deals abrufen (der Deal wird automatisch ausgewählt, um seine Eigenschaften abzurufen)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- Typ und Richtung des Deals abrufen und die Kopfzeile für die Liste der „double“-Eigenschaften des ausgewählten Deals anzeigen
      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);
      
      //--- alle „double“-Eigenschaften des ausgewählten Deals unter der Überschrift drucken
      HistoryDealPropertiesStringPrint(ticket13);
     }
   /*
   Ergebnis:
   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
   */
  }
//+------------------------------------------------------------------+
//| Ausdruck der Texteigenschaften des ausgewählten Deals im Journal |
//+------------------------------------------------------------------+
void HistoryDealPropertiesStringPrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value ="";
   
//--- Definieren der Kopftextes und der Breite des Textfeldes
//--- Wenn der Funktion eine Breite von Null übergeben wird, dann ist die Breite die Größe der Kopfzeile + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- Abrufen und Ausdruck des Deal-Symbols mit der angegebenen Kopfzeilenbreite im Journal
   if(!HistoryDealGetString(ticketDEAL_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Kommentar zum Deal im Journal anzeigen
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Ausdruck der Deal-ID eines externen Handelssystems
   header="Extarnal ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Deal-Typs                          |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Änderungsmethode der 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);
     }
  }

Siehe auch

HistoryDealsTotal(), HistorySelect(), HistoryDealGetTicket(), Eigenschaften der Deals