history_deals_get

Ottiene affari(deals) dalla cronistoria di trading entro l'intervallo specificato con la possibilità di filtrare per ticket o posizione.

Chiamata specificando un intervallo di tempo. Restituisce tutti i deals che rientrano nell'intervallo specificato.

history_deals_get(
   date_from,                // data in cui sono richiesti i deals
   date_to,                  // data, fino alla quale sono richiesti i deals
   group="GROUP"        // filtro per selezionare deals per simboli
   )

Chiama specificando il ticket dell'ordine. Restituisce tutti i deals con il ticket ordine specificato nelle proprietà DEAL_ORDER.

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

Chiama specificando il ticket della posizione. Restituisce tutti i deals con il ticket della posizione specificato nella proprietà DEAL_POSITION_ID.

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

ticket=TICKET

[in] Ticket di un ordine (archiviato inDEAL_ORDER) per cui devono essere ricevuti tutti i deals. Parametro opzionale. Se non specificato, il filtro non viene applicato.

position=POSITION

[in] Ticket di una posizione (memorizzato in DEAL_POSITION_ID) per cui devono essere ricevuti tutti i deals. 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 i deals della cronistoria entro un periodo specificato in una singola chiamata simile al tandem HistoryDealsTotal e HistoryDealSelect.

Il parametro group consente di ordinare i deals 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. 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:

import MetaTrader5 as mt5
from datetime import datetime
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 deals nella cronistoria
from_date=datetime(2020,1,1)
to_date=datetime.now()
# ottiene deals per simboli i cui nomi contengono "GBP" entro un intervallo specificato
deals=mt5.history_deals_get(from_dateto_date, group="*GBP*")
if deals==None:
    print("Nessun deals per il gruppo=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(deals)> 0:
    print("history_deals_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(deals)))
 
# ottiene deals per simboli i cui nomi non contengono né "EUR" né "GBP"
deals = mt5.history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*")
if deals == None:
    print("Nessun deal, error code={}".format(mt5.last_error()))
elif len(deals) > 0:
    print("history_deals_get(from_date, to_date, group=\"*,!*EUR*,!*GBP*\") ="len(deals))
    # mostra tutti i deals ottenuti 'così come sono'<
    for deal in deals:
        print("  ",deal)
    print()
    # mostra questi deals come una tabella usando pandas.DataFrame
    df=pd.DataFrame(list(deals),columns=deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    print(df)
print("")
 
# ottiene tutti i deals relativi alla posizione #530218319
position_id=530218319
position_deals = mt5.history_deals_get(position=position_id)
if position_deals == None:
    print("Nessun deal con la posizione #{}".format(position_id))
    print("error code ="mt5.last_error())
elif len(position_deals) > 0:
    print("Deals con id posizione #{}: {}".format(position_id, len(position_deals)))
    # mostra questi deals come una tabella usando pandas.DataFrame
    df=pd.DataFrame(list(position_deals),columns=position_deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], 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_deals_get(from_date, to_date, group="*GBP*") = 14
 
history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*") = 7
   TradeDeal(ticket=506966741, order=0, time=1582202125, time_msc=1582202125419, type=2, entry=0, magic=0, position_id=0, reason=0, volume=0.0, pri ...
   TradeDeal(ticket=507962919, order=530218319, time=1582303777, time_msc=1582303777582, type=0, entry=0, magic=0, position_id=530218319, reason=0, ...
   TradeDeal(ticket=513149059, order=535548147, time=1583176242, time_msc=1583176242265, type=1, entry=1, magic=0, position_id=530218319, reason=0, ...
   TradeDeal(ticket=516943494, order=539349382, time=1583510003, time_msc=1583510003895, type=1, entry=0, magic=0, position_id=539349382, reason=0, ...
   TradeDeal(ticket=516943915, order=539349802, time=1583510025, time_msc=1583510025054, type=0, entry=0, magic=0, position_id=539349802, reason=0, ...
   TradeDeal(ticket=517139682, order=539557870, time=1583520201, time_msc=1583520201227, type=0, entry=1, magic=0, position_id=539349382, reason=0, ...
   TradeDeal(ticket=517139716, order=539557909, time=1583520202, time_msc=1583520202971, type=1, entry=1, magic=0, position_id=539349802, reason=0, ...
 
      ticket      order                time       time_msc  type  entry  magic  position_id  reason  volume    price  commission  swap     profit  fee  symbol comment external_id
0  506966741          0 2020-02-20 12:35:25  1582202125419     2      0      0            0       0    0.00  0.00000         0.0   0.0  100000.00  0.0                            
1  507962919  530218319 2020-02-21 16:49:37  1582303777582     0      0      0    530218319       0    0.01  0.97898         0.0   0.0       0.00  0.0  USDCHF                    
2  513149059  535548147 2020-03-02 19:10:42  1583176242265     1      1      0    530218319       0    0.01  0.95758         0.0   0.0     -22.35  0.0  USDCHF                    
3  516943494  539349382 2020-03-06 15:53:23  1583510003895     1      0      0    539349382       0    0.10  0.93475         0.0   0.0       0.00  0.0  USDCHF                    
4  516943915  539349802 2020-03-06 15:53:45  1583510025054     0      0      0    539349802       0    0.10  0.66336         0.0   0.0       0.00  0.0  AUDUSD                    
5  517139682  539557870 2020-03-06 18:43:21  1583520201227     0      1      0    539349382       0    0.10  0.93751         0.0   0.0     -29.44  0.0  USDCHF                    
6  517139716  539557909 2020-03-06 18:43:22  1583520202971     1      1      0    539349802       0    0.10  0.66327         0.0   0.0      -0.90  0.0  AUDUSD                    
 
Deals con ID posizione #530218319: 2
      ticket      order                time       time_msc  type  entry  magic  position_id  reason  volume    price  commission  swap  profit  fee  symbol comment external_id
0  507962919  530218319 2020-02-21 16:49:37  1582303777582     0      0      0    530218319       0    0.01  0.97898         0.0   0.0    0.00  0.0  USDCHF                    
1  513149059  535548147 2020-03-02 19:10:42  1583176242265     1      1      0    530218319       0    0.01  0.95758         0.0   0.0  -22.35  0.0  USDCHF   

See also

history_deals_total, history_orders_get