history_deals_get

Retourne les transactions de l'historique de trading avec la possibilité de filtrer par ticket ou par position.

Appel spécifiant un intervalle de temps. Retourne toutes les transactions comprises dans l'intervalle spécifié.

history_deals_get(
   date_from,         // date à laquelle les transactions sont demandées
   date_to,           // date jusqu'à laquelle les transactions sont demandées
   group="GROUP"      // filtre pour sélectionner les transactions par symboles
   )

Appel spécifiant le ticket de l'ordre. Retourne toutes les transactions ayant le ticket d'ordre spécifié dans la propriété DEAL_ORDER.

history_deals_get(
   ticket=TICKET        // ticket de l'ordre
)

Appel spécifiant le ticket de la position. Retourne toutes les transactions ayant le ticket de position spécifié dans la propriété DEAL_POSITION_ID.

history_deals_get(
   position=POSITION    // ticket de la position
)

Paramètres

date_from

[in]  Date à partir de laquelle les ordres sont demandés. Défini par l'objet 'datetime' ou en nombre de secondes écoulées depuis 1970.01.01. Le paramètre sans nom requis est spécifié en premier.

date_to

[in] Date jusqu'à laquelle les ordres sont demandées. Défini par l'objet 'datetime' ou en nombre de secondes écoulées depuis 1970.01.01. Le paramètre non nommé requis est spécifié en second.

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 transactions répondant à un critère spécifié pour un nom de symbole.

ticket=TICKET

[in] Ticket d'un ordre (stocké dans DEAL_ORDER) pour lequel toutes les transactions sont demandées. Paramètre facultatif. S'il n'est pas spécifié, le filtre n'est pas appliqué.

position=POSITION

[in] Ticket d'une position (stocké dans DEAL_POSITION_ID) pour laquelle toutes les transactions sont demandées. Paramètre facultatif. S'il n'est pas spécifié, le filtre n'est pas appliqué.

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 transactions d'historique dans une période spécifiée en un seul appel similaire à HistoryDealsTotal et HistoryDealSelect.

Le paramètre group permet de trier les transactions par symboles. '*' peut être utilisé au début et à la fin d'une chaîne.

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 transactions pour 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
from datetime import datetime
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 le nombre de transactions dans l'historique
from_date=datetime(2020,1,1)
to_date=datetime.now()
# récupère les transactions des symboles dont les noms contiennent "GBP" dans un intervalle spécifié
deals=mt5.history_deals_get(from_dateto_date, group="*GBP*")
if deals==None:
    print("Aucune transaction pour le groupe=\"*USD*\", code d'erreur={}".format(mt5.last_error()))
elif len(deals)> 0:
    print("history_deals_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(deals)))
 
# récupère les transactions des symboles dont les noms ne contiennent ni "EUR" ni "GBP"
deals = mt5.history_deals_get(from_date, to_date, group="*,!*EUR*,!*GBP*")
if deals == None:
    print("Aucune transaction, code d'erreur={}".format(mt5.last_error()))
elif len(deals) > 0:
    print("history_deals_get(from_date, to_date, group=\"*,!*EUR*,!*GBP*\") ="len(deals))
    # affiche toutes les transactions brutes obtenues
    for deal in deals:
        print("  ",deal)
    print()
 # affiche ces transactions sous forme de tableau à l'aide de pandas.DataFrame
    df=pd.DataFrame(list(deals),columns=deals[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    print(df)
print("")
 
# récupère toutes les transactions liées à la position #530218319
position_id=530218319
position_deals = mt5.history_deals_get(position=position_id)
if position_deals == None:
    print("Aucune transaction pour la position #{}".format(position_id))
    print("code d'erreur ="mt5.last_error())
elif len(position_deals) > 0:
    print("Transactions de la position #{}: {}".format(position_id, len(position_deals)))
 # affiche ces transactions sous forme de tableau à l'aide de 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)
 
# 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
 
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                    
 
Transactions de la position #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   

Voir aussi

history_deals_total, history_orders_get