positions_get

Retourne les positions ouvertes avec la possibilité de filtrer par symbole ou ticket. Il existe trois options d'appel.

Appel sans paramètres. Renvoie les positions ouvertes pour tous les symboles.

positions_get()

Appel spécifiant un symbole pour lequel les positions ouvertes sont demandées.

positions_get(
   symbol="SYMBOL"      // nom du symbole
)

Appel spécifiant un groupe de symboles pour lesquels les positions ouvertes sont demandées.

positions_get(
 group="GROUP" // filtre pour sélectionner les positions par symboles
)

Appel spécifiant un ticket de position.

positions_get(
   ticket=TICKET        // ticket
)

Paramètres

symbol="SYMBOL"

[in]  Nom du symbole. Paramètre nommé facultatif. Si un symbole est spécifié, le paramètre ticket est ignoré.

group="GROUP"

[in] Le filtre pour organiser un groupe de symboles nécessaires. Paramètre nommé facultatif. Si le groupe est spécifié, la fonction renvoie uniquement les positions répondant aux critères spécifiés pour un nom de symbole.

ticket=TICKET

[in]  Ticket de la position (POSITION_TICKET). Paramètre nommé facultatif.

Valeur de Retour

Renvoie les informations sous la forme d'une structure de tuple nommée (namedtuple). Retourne None en cas d'erreur. Les informations sur l'erreur peuvent être obtenues en utilisant last_error().

Note

La fonction permet de recevoir toutes les positions ouvertes dans un appel similaire à PositionsTotal et PositionSelect.

Le paramètre group peut contenir plusieurs conditions séparées par des virgules. Une condition peut être définie comme un masque à l'aide de '*'. Le symbole de négation logique '!' peut être utilisé pour une exclusion. Toutes les conditions sont appliquées séquentiellement, ce qui signifie que les conditions d'inclusion à un groupe doivent être spécifiées en premier, suivies d'une condition d'exclusion. Par exemple, group= "*, !EUR" signifie que les positions de tous les symboles doivent être sélectionnées en premier et que celles contenant "EUR" dans les noms de symboles doivent être exclues par la suite.

Exemple :

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# nombre de colonnes à afficher
pd.set_option('display.width', 1500)      # largeur max d'affichage de la table
# affiche les données sur le package MetaTrader 5
print("Auteur du package MetaTrader5 : ",mt5.__author__)
print("Version du package MetaTrader5 : ",mt5.__version__)
print()
# établit une connexion avec le terminal MetaTrader 5
if not mt5.initialize():
 print("initialize () a échoué, code d'erreur =",mt5.last_error())
    quit()
 
# obtient les positions ouvertes sur USDCHF
positions=mt5.positions_get(symbol="USDCHF")
if positions==None:
    print("Aucune position sur USDCHF, code d'erreur={}".format(mt5.last_error()))
elif len(positions)>0:
    print("Total des positions sur USDCHF =",len(positions))
 # affiche toutes les positions ouvertes
    for position in positions:
        print(position)
 
# obtient la liste des positions sur les symboles dont les noms contiennent "*USD*"
usd_positions=mt5.positions_get(group="*USD*")
if usd_positions==None:
    print("Aucune position pour group=\"*USD*\", code d'erreur={}".format(mt5.last_error()))
elif len(usd_positions)>0:
    print("positions_get(group=\"*USD*\")={}".format(len(usd_positions)))
 # affiche ces positions sous forme de tableau à l'aide de pandas.DataFrame
    df=pd.DataFrame(list(usd_positions),columns=usd_positions[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    df.drop(['time_update', 'time_msc', 'time_update_msc', 'external_id'], axis=1, inplace=True)
    print(df)
 
# ferme la connexion au terminal MetaTrader 5
mt5.shutdown()
 
 
Résultat :
Auteur du package MetaTrader5 :  MetaQuotes Software Corp.
Version du package MetaTrader5 :  5.0.29
 
positions_get(group="*USD*")=5
      ticket                time  type  magic  identifier  reason  volume  price_open       sl       tp  price_current  swap  profit  symbol comment
0  548297723 2020-03-18 15:00:55     1      0   548297723       3    0.01     1.09301  1.11490  1.06236        1.10104 -0.10   -8.03  EURUSD        
1  548655158 2020-03-18 20:31:26     0      0   548655158       3    0.01     1.08676  1.06107  1.12446        1.10099 -0.08   14.23  EURUSD        
2  548663803 2020-03-18 20:40:04     0      0   548663803       3    0.01     1.08640  1.06351  1.11833        1.10099 -0.08   14.59  EURUSD        
3  548847168 2020-03-19 01:10:05     0      0   548847168       3    0.01     1.09545  1.05524  1.15122        1.10099 -0.06    5.54  EURUSD        
4  548847194 2020-03-19 01:10:07     0      0   548847194       3    0.02     1.09536  1.04478  1.16587        1.10099 -0.08   11.26  EURUSD   

Voir aussi

positions_total, orders_get