orders_get

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

Chiamata senza parametri. Restituisce gli ordini attivi su tutti i simboli.

orders_get()

Chiama specificando un simbolo per cui devono essere ricevuti gli ordini attivi.

orders_get(
   symbol="SYMBOL"      // nome simbolo
)

Chiama specificando un gruppo di simboli per cui devono essere ricevuti gli ordini attivi.

orders_get(
   group="GROUP"        // filtro per selezionare gli ordini, per simboli
)

Chiama specificando il ticket dell'ordine.

orders_get(
   ticket=TICKET        // ticket
)

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 gli ordini attivi che soddisfano un criterio specificato per un nome simbolo.

ticket=TICKET

[in]  Order ticket (ORDER_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 tutti gli ordini attivi all'interno di una chiamata similmente al tandem OrdersTotal e OrderSelect.

Il parametro group consente di ordinare gli ordini in base ai simboli. '*' può essere usato all'inizio e alla fine di una stringa.

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 gli ordini per tutti i simboli devono essere selezionati prima, e quelli che contengono "EUR" nei nomi dei simboli devono essere esclusi 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()
 
# visualizza i dati sugli ordini attivi su GBPUSD
orders=mt5.orders_get(symbol="GBPUSD")
if orders==None:
    print("Niente ordini su GBPUSD, error code={}".format(mt5.last_error()))
elif len(orders)>0:
    print("Totale ordini su GBPUSD:",len(orders))
    # mostra tutti gli ordini attivi
    for order in orders:
        print(order)
print()
 
# ottiene l'elenco degli ordini sui simboli i cui nomi contengono "*GBP*"
gbp_orders=mt5.orders_get(group="*GBP*")
if gbp_orders==None:
    print("Niente ordini col gruppo=\"*GBP*\", error code={}".format(mt5.last_error()))
elif len(gbp_orders)>0:
    print("orders_get(group=\"*GBP*\")={}".format(len(gbp_orders)))
    # visualizza questi ordini come una tabella usando pandas.DataFrame
    df=pd.DataFrame(list(gbp_orders),columns=gbp_orders[0]._asdict().keys())
    df.drop(['time_done', 'time_done_msc', 'position_id', 'position_by_id', 'reason', 'volume_initial', 'price_stoplimit'], axis=1, inplace=True)
    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
    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
 
Totale ordini su GBPUSD: 2
TradeOrder(ticket=554733548, time_setup=1585153667, time_setup_msc=1585153667718, time_done=0, time_done_msc=0, time_expiration=0, type=3, type_time=0, ...
TradeOrder(ticket=554733621, time_setup=1585153671, time_setup_msc=1585153671419, time_done=0, time_done_msc=0, time_expiration=0, type=2, type_time=0, ...
 
orders_get(group="*GBP*")=4
      ticket          time_setup  time_setup_msc  time_expiration  type  type_time  type_filling  state  magic  volume_current  price_open   sl   tp  price_current  symbol comment external_id
0  554733548 2020-03-25 16:27:47   1585153667718                0     3          0             2      1      0             0.2     1.25379  0.0  0.0        1.16803  GBPUSD                    
1  554733621 2020-03-25 16:27:51   1585153671419                0     2          0             2      1      0             0.2     1.14370  0.0  0.0        1.16815  GBPUSD                    
2  554746664 2020-03-25 16:38:14   1585154294401                0     3          0             2      1      0             0.2     0.93851  0.0  0.0        0.92428  EURGBP                    
3  554746710 2020-03-25 16:38:17   1585154297022                0     2          0             2      1      0             0.2     0.90527  0.0  0.0        0.92449  EURGBP    

See also

orders_total, positions_get