PositionSelect

Wählt eine offene Position für die weitere Arbeit aus. Gibt true zurück, wenn die Durchführung der Funktion erfolgreich beendet wird.  Gibt false zurück, wenn die Durchführung der Funktion erfolglos beendet wird. Für den Erhalt der fehlerbezogenen Information, rufen Sie die Funktion GetLastError() auf.

bool  PositionSelect(
   string  symbol,     // Name des Finanzinstruments
   );

Parameter

symbol

[in]  Name des Finanzinstruments.

Rückgabewert

Wert vom Typ bool.

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 pro Symbol vorhanden sein. In diesem Fall wählt PositionSelect die Funktion mit dem kleinsten Ticket.

Die Funktion PositionSelect() kopiert die Daten der Position in die Programmumgebung und ermöglicht die weiteren Aufrufe von PositionGetDouble(), PositionGetInteger() und PositionGetString(), um die jeweiligen Daten abzurufen. Das bedeutet, dass die Position selbst nicht mehr existieren kann (oder ihr Volumen, ihre Richtung usw. haben sich verändert), aber die alten Daten dieser Position können trotzdem noch existieren. Um die neuesten Daten einer Position zu erhalten, ist es empfehlenswert, die Funktion PositionSelect() aufzurufen, bevor man diese Daten verwendet.

Beispiel:

#define   SYMBOL_NAME   "EURUSD"
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- wähle eine Position des angegebenen Symbols
   if(!PositionSelect(SYMBOL_NAME))
     {
      PrintFormat("PositionSelect(%s) failed. Error %d",SYMBOL_NAMEGetLastError());
      return;
     }
 
//--- wenn eine Position ausgewählt ist, können wir seine Daten mit PositionGetDouble(), PositionGetInteger() und PositionGetString() abrufen.
//--- Abrufen der mit der Ticketnummer ausgewählten Position//--- Holen Sie sich das ausgewählte Positionsticket
   ResetLastError();
   long ticket=PositionGetInteger(POSITION_TICKET);
   if(ticket==0)
     {
      PrintFormat("Failed to get %s position ticket. Error %d"SYMBOL_NAMEGetLastError());
      return;
     }
     
//--- Wenn ein Ticket erfolgreich empfangen wurde, drucke das ausgewählte Positionssymbol und das Ticket im Journal aus
   PrintFormat("The position that is selected on the %s symbol has ticket %I64d"SYMBOL_NAMEticket);
   /*
   Ergebnis:
   The position that is selected on the EURUSD symbol has ticket 2810846623
   */
  }

Siehe auch

PositionGetSymbol(), PositionsTotal(), Eigenschaften der Positionen