positions_get

Ottiene posizioni aperte con la possibilità di filtrare per simbolo o ticket. Esistono tre opzioni di chiamata.

Chiamata senza parametri. Restituisce posizioni open per tutti i simboli.

positions_get()

Chiama specificando un simbolo per cui devono essere ricevute posizioni aperte.

positions_get(
   symbol="SYMBOL"      // nome del simbolo
)

Chiama specificando un gruppo di simboli per cui devono essere ricevute le posizioni aperte.

positions_get(
   group="GROUP"        // filtra per la selezione delle posizioni tramite simboli
)

Chiama specificando un ticket di posizione.

positions_get(
   ticket=TICKET        // ticket
)

Parametri

symbol="SYMBOL"

[in] Nome simbolo. Parametro named opzionale. Se viene specificato un simbolo, il parametro ticket viene ignorato.

group="GROUP"

[in] Il filtro per disporre un gruppo di simboli necessari. Parametro named opzionale. Se viene specificato il gruppo, la funzione restituisce solo le posizioni che soddisfano un criterio specificato per un nome simbolo.

ticket=TICKET

[in]  Ticket posizione (POSITION_TICKET). Parametro named facoltativo.

Valore di Ritorno

Restituisce informazioni sotto forma di una struttura denominata tupla (namedtuple). Restituisce Nessuna in caso di errore. Le informazioni sull'errore possono essere ottenute utilizzando last_error().

Nota

La funzione consente di ricevere tutte le posizioni aperte all'interno di una chiamata similmente al tandem PositionsTotal e PositionSelect.

Il parametro group può contenere diverse condizioni separate da virgola. Una condizione può essere impostata come maschera usando '*'. Il simbolo di negazione logica "!" può essere utilizzato per un'esclusione. Tutte le condizioni vengono applicate in sequenza, il che significa che le condizioni di inclusione in un gruppo devono essere specificate prima, seguite da una condizione di esclusione. Per esempio, group= "*, !EUR" significa che le posizioni per tutti i simboli devono essere selezionate per prime e quelle che contengono "EUR" nei nomi dei simboli devono essere escluse in seguito.

Esempio:

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# numero di colonne da visualizzare
pd.set_option('display.width', 1500)      # larghezza massima della tabella da visualizzare
# visualizza i dati sul pacchetto MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# stabilisce la connessione al terminale MetaTrader 5
if not mt5.initialize():
    print("initialize() fallito, error code =",mt5.last_error())
    quit()
 
# ottiene posizioni aperte su USDCHF
positions=mt5.positions_get(symbol="USDCHF")
if positions==None:
    print("Niente posizioni su USDCHF, error code={}".format(mt5.last_error()))
elif len(positions)>0:
    print("Totale posizioni su USDCHF =",len(positions))
    # mostra tutte le posizioni aperte
    for position in positions:
        print(position)
 
# ottiene l'elenco delle posizioni sui simboli i cui nomi contengono "*USD*"
usd_positions=mt5.positions_get(group="*USD*")
if usd_positions==None:
    print("Niente posizioni col gruppo=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(usd_positions)>0:
    print("positions_get(group=\"*USD*\")={}".format(len(usd_positions)))
    # visualizza queste posizioni come una tabella usando 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)
 
# interrompe la connessione al terminale MetaTrader 5
mt5.shutdown()
 
 
Risultato:
Autore del pacchetto MetaTrader5: MetaQuotes Software Corp.
Versione del pacchetto 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   

See also

positions_total, orders_get