PositionSelectByTicket

Wählt eine offene Position nach dem angegebenen Ticket für die weitere Arbeit aus. Gibt true bei einem erfolgreichen Beenden der Funktion zurück. Gibt false zurück, wenn das Beenden der Funktion fehlgeschlagen ist. Rufen Sie die Funktion GetLastError() auf, um Details zum Fehler zu bekommen.

bool  PositionSelectByTicket(
   ulong   ticket     // das Ticket der Position
   );

Parameter

ticket

[in]  Ticket der Position.

Rückgabewert

Der Wert von bool.

Hinweis

Die Funktion PositionSelectByTicket() kopiert die Daten der Position in die Programmumgebung und ermöglicht die weiteren Aufrufe von PositionGetDouble(), PositionGetInteger() und PositionGetString(), um die jeweiligen Daten abzurufen. Es kann sein, dass die Position nicht mehr vorhanden ist (oder ihr Volumen, Richtung usw. sich geändert haben), aber die alten Daten dieser Position können trotzdem noch existieren. Um aktuelle Details zu einer Position zu erhalten, sollte man unmittelbar davor die Funktion PositionSelectByTicket() aufrufen.

Beispiel:

#define   EXPERT_MAGIC  123456   // MagicNumber
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Anforderungs- und Ergebnisstrukturen deklarieren und initialisieren
   MqlTradeRequest request={};
   MqlTradeResult  result ={};
   
//--- Handelsanforderungsparameter ausfüllen, um eine Kaufposition zu eröffnen
   request.action    = TRADE_ACTION_DEAL;                      // Typ der Handelsoperation
   request.symbol    = Symbol();                               // Symbol
   request.volume    = 0.1;                                    // Volumen von 0.1 Lot
   request.type      = ORDER_TYPE_BUY;                         // Auftragstyp
   request.price     = SymbolInfoDouble(Symbol(), SYMBOL_ASK); // Eröffnungspreis
   request.deviation = 5;                                      // erlaubte Abweichung vom Preis
   request.magic     = EXPERT_MAGIC;                           // MagicNumber des Auftrags
   
//--- eine Anfrage senden. Wenn das Senden einer Anfrage fehlgeschlagen ist, zeige den Fehlercode an und beende den Vorgang
   if(!OrderSend(requestresult))
     {
      PrintFormat("OrderSend error "GetLastError());
      return;
     }
      
//--- Operationsdaten anzeigen
   PrintFormat("Trade request result: retcode: %u, deal: %I64u, order: %I64u"result.retcoderesult.dealresult.order);
   
//--- Abrufen des Positionstickets aus dem Ergebnis der Handelsoperation und Auswahl der Position nach dem Ticket.
//--- Das Ticket einer neu eröffneten Position entspricht dem Ticket des Auftrags, der den Deal generiert hat.
   ulong ticket=result.order;
   ResetLastError();
   if(!PositionSelectByTicket(ticket))
     {
      PrintFormat("PositionSelectByTicket(%I64u) failed. Error %d"ticketGetLastError());
      return;
     }
 
//--- Daten einer per Ticket ausgewählten Position im Journal anzeigen
   ENUM_POSITION_TYPE type  = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   long               time  = PositionGetInteger(POSITION_TIME_MSC);
   double             price = PositionGetDouble(POSITION_PRICE_OPEN);
   double             volumePositionGetDouble(POSITION_VOLUME);
   string             symbolPositionGetString(POSITION_SYMBOL);
   int                digits= (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   PrintFormat("Current selected position: %s %.2f %s #%I64u at %.*f, %s",
               symbolvolume, (type==POSITION_TYPE_BUY ? "Buy" : "Sell"), ticketdigitspriceTimeMscToString(time));
   /*
   Ergebnis:
   Trade request resultretcode10009deal2778100901order2803905975
   Current selected positionEURUSD 0.10 Buy #2803905975 at 1.106722024.09.02 12:09:51.239
   */
  }
//+------------------------------------------------------------------+
//| Rückgabe der Zeit in Millisekunden                               |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Sieh auch

PositionGetSymbol(), PositionsTotal(), Eigenschaften der Position