history_orders_get

Ottiene ordini dalla cronistoria di trading con la possibilità di filtrare per ticket o posizione. Esistono tre opzioni di chiamata.

Chiamata specificando un intervallo di tempo. Restituisce tutti gli ordini che rientrano nell'intervallo specificato.

history_orders_get(
   date_from,                // data da cui vengono richiesti gli ordini
   date_to,                  // data, fino alla quale sono richiesti gli ordini
   group="GROUP"        // filtro per la selezione degli ordini tramite simboli
   )

Chiama specificando il ticket dell'ordine. Restituisce un ordine con il ticket specificato.

history_orders_get(
   ticket=TICKET        // ticket dell'ordine
)

Chiama specificando il ticket della posizione. Restituisce tutti gli ordini con il ticket della posizione specificato nella proprietà ORDER_POSITION_ID.

history_orders_get(
   position=POSITION    // ticket della positione
)

Parametri

date_from

[in] Data di richiesta degli ordini. Impostata dall'oggetto 'datetime' o come numero di secondi trascorsi dal 1970.01.01. Il parametro richiesto unnamed viene specificato per primo.

date_to

[in] Data, fino alla quale sono richiesti gli ordini. Impostata dall'oggetto 'datetime' o come numero di secondi trascorsi dal 1970.01.01. Il parametro richiesto senza nome viene specificato per secondo.

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

ticket=TICKET

[in] Ticket dell'ordine che dovrebbe essere ricevuto. Parametro opzionale. Se non specificato, il filtro non viene applicato.

position=POSITION

[in] Ticket di una posizione (memorizzato in ORDER_POSITION_ID) per cui devono essere ricevuti tutti gli ordini. Parametro opzionale. Se non specificato, il filtro non viene applicato.

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 della cronistoria entro un periodo specificato in una singola chiamata simile al tandem HistoryOrdersTotal e HistoryOrderSelect.

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. Ad esempio, group= "*, !EUR" significa che i deals per tutti i simboli dovrebbero essere selezionati per primi e quelli che contengono "EUR" nei nomi dei simboli dovrebbero essere esclusi in seguito.

Esempio:

from datetime import datetime
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 il numero di ordini nella cronistoria
from_date=datetime(2020,1,1)
to_date=datetime.now()
history_orders=mt5.history_orders_get(from_date, to_date, group="*GBP*")
if history_orders==None:
    print("Nessun ordine della cronistoria con gruppo=\"*GBP*\", error code={}".format(mt5.last_error()))
elif len(history_orders)>0:
    print("history_orders_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(history_orders)))
print()
 
# mostra tutti gli ordini storici per un ticket di posizione
position_id=530218319
position_history_orders=mt5.history_orders_get(position=position_id)
if position_history_orders==None:
    print("Nessun ordine con posizione #{}".format(position_id))
    print("error code =",mt5.last_error())
elif len(position_history_orders)>0:
    print("Totale ordini della cronistoria sulla posizione #{}: {}".format(position_id,len(position_history_orders)))
   # visualizza tutti gli ordini storici con il ticket della posizione specificata
    for position_order in position_history_orders:        
        print(position_order)
    print()
    # visualizza questi ordini come una tabella usando pandas.DataFrame
    df=pd.DataFrame(list(position_history_orders),columns=position_history_orders[0]._asdict().keys())
    df.drop(['time_expiration','type_time','state','position_by_id','reason','volume_current','price_stoplimit','sl','tp'], axis=1, inplace=True)
    df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
    df['time_done'] = pd.to_datetime(df['time_done'], 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
 
history_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14
 
Ordini storici totali nella posizione #530218319: 2
TradeOrder(ticket=530218319, time_setup=1582282114, time_setup_msc=1582282114681, time_done=1582303777, time_done_msc=1582303777582, time_expiration=0, ...
TradeOrder(ticket=535548147, time_setup=1583176242, time_setup_msc=1583176242265, time_done=1583176242, time_done_msc=1583176242265, time_expiration=0, ...
 
      ticket          time_setup  time_setup_msc           time_done  time_done_msc  type  type_filling  magic  position_id  volume_initial  price_open  price_current  symbol comment external_id
0  530218319 2020-02-21 10:48:34   1582282114681 2020-02-21 16:49:37  1582303777582     2             2      0    530218319            0.01     0.97898        0.97863  USDCHF                    
1  535548147 2020-03-02 19:10:42   1583176242265 2020-03-02 19:10:42  1583176242265     1             0      0    530218319            0.01     0.95758        0.95758  USDCHF   

See also

history_deals_total, history_deals_get