PositionGetString

Funktion gibt die angeforderte Eigenschaft der offenen Position zurück, die vorher mit der Funktion PositionGetSymbol oder PositionSelect ausgewählt wurde. Eigenschaft der Position muss vom Typ string sein. Es gibt 2 Varianten der Funktion.

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

string  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id      // Identifikator der Eigenschaft
   );

2.Gibt true oder false zurück, abhängig davon, ob die Funktion erfolgreich durchgeführt wurde. Im Erfolgsfall wird der Wert der Eigenschaft der Empfangsvariable zugewiesen, die per Referenz als letzter Parameter übergeben wird.

bool  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id,     // Eigenschaftsidentifikator
   string&                        string_var       // hier nehmen wir den Wert der Eigenschaft auf 
   );

Parameter

property_id

[in]  Identifikator der Positionseigenschaft. Wert kann einer der Enumerationswerte ENUM_POSITION_PROPERTY_STRING sein.

string_var

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

Rückgabewert

Wert vom Typ string.

Hinweis

Im Netting Mode (ACCOUNT_MARGIN_MODE_RETAIL_NETTING und ACCOUNT_MARGIN_MODE_EXCHANGE) kann nur eine Position pro Symbol vorhanden sein, die das Ergebnis eines oder mehrerer Handelsgeschäfte darstellt. Man darf Positionen und aktuelle Pending Orders, die auch im Tab Handel in der Werkzeugleiste angezeigt werden, nicht miteinander verwechseln.

Bei einer unabhängigen Verrechnung von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) können gleichzeitig mehrere Positionen für ein Symbol existieren.

Um die neuesten Daten einer Position zu erhalten, ist es empfehlenswert, die Funktion PositionSelect() aufzurufen, bevor man diese Daten verwendet.

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- in einer Schleife durch die Liste aller Positionen des Kontos
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- Abrufen des Tickets der nächsten Position, durch die automatische Auswahl einer Position, um auf ihre Eigenschaften zuzugreifen
      ulong ticket=PositionGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- Positionstyp abrufen und Kopfzeile für die Liste der „string“-Eigenschaften der Position anzeigen
      string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
      PrintFormat("String properties of an open position %s #%I64u:"typeticket);
      
      //--- alle „string“-Eigenschaften der ausgewählten Position unter der Kopfzeile drucken
      PositionPropertiesStringPrint(15);
     }
   /*
   Ergebnis:
   String properties of an open position Buy #2810798881:
   Symbol:        EURUSD
   Comment:       Test PositionGetString
   External ID:   
   */
  }
//+------------------------------------------------------------------+
//| String-Eigenschaften der gewählten Position ins Journal drucken  |
//+------------------------------------------------------------------+
void PositionPropertiesStringPrint(const 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 Anzeigen des Positionssymbols mit der angegebenen Breite der Kopfzeile im Journal
   if(!PositionGetString(POSITION_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Positionskommentar im Journal anzeigen
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Anzeige der Positions-ID eines externen Systems im Journal
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }

Siehe auch

PositionGetSymbol(), PositionSelect(), Eigenschaften der Positionen