PositionSelect

Sélectionne une position ouverte pour pouvoir l'utiliser. Retourne si la fonction s'est terminé avec succès. Retourne false en cas d'échec. Pour plus de détails sur l'erreur, appelez GetLastError().

bool  PositionSelect(
   string  symbol      // nom du symbole
   );

Paramètres

symbol

[in]  Nom de l'instrument financier.

Valeur de Retour

Valeur de type bool.

Note

Pour le "netting" des positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING et ACCOUNT_MARGIN_MODE_EXCHANGE), seule une position peut exister pour un même symbole à tout moment. Cette position est le résultat d'une ou plusieurs transactions. Ne confondez pas les positions avec les ordres en attente valides, qui sont également affichés dans l'onglet Trading de la fenêtre Boîte à Outils.

Si les positions individuelles sont autorisées (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), plusieurs positions peuvent être ouvertes pour un même symbole. Dans ce cas, PositionSelect sélectionnera la position avec le ticket le plus petit.

La fonction PositionSelect() copie les données d'une position dans l'environnement du programme et les appels ultérieurs à PositionGetDouble(), PositionGetInteger() et PositionGetString() retournent les données copiées auparavant. Cela signifie que la position elle-même peut ne plus exister (ou que son volume, sa direction, etc. a changé), mais que les données de cette position sont toujours accessibles. Pour être sûr d'utiliser les données à jour d'une position, il est recommandé d'appeler PositionSelect() juste avant son utilisation.

Exemple :

#define   SYMBOL_NAME   "EURUSD"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- sélectionne une position sur un symbole spécifié
   if(!PositionSelect(SYMBOL_NAME))
     {
      PrintFormat("PositionSelect(%s) failed. Error %d",SYMBOL_NAMEGetLastError());
      return;
     }
 
//--- si une position est sélectionnée, nous pouvons obtenir ses données en utilisant PositionGetDouble(), PositionGetInteger() et PositionGetString()
//--- récupère le ticket de la position sélectionnée
   ResetLastError();
   long ticket=PositionGetInteger(POSITION_TICKET);
   if(ticket==0)
     {
      PrintFormat("Failed to get %s position ticket. Error %d"SYMBOL_NAMEGetLastError());
      return;
     }
     
//--- si un ticket est reçu avec succès, affiche le symbole de position sélectionné et le ticket dans le journal
   PrintFormat("The position that is selected on the %s symbol has ticket %I64d"SYMBOL_NAMEticket);
   /*
   résultat :
   The position that is selected on the EURUSD symbol has ticket 2810846623
   */
  }

Voir également

PositionGetSymbol(), PositionsTotal(), Propriétés d'une Position