history_orders_get

Retourne les ordres de l'historique de trading avec la possibilité de filtrer par ticket ou par position. Il existe trois options d'appel.

Appel spécifiant un intervalle de temps. Retourne tous les ordres compris dans l'intervalle spécifié.

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

Appel spécifiant le ticket de l'ordre. Retourne l'ordre avec le ticket spécifié.

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

Appel spécifiant le ticket de la position. Retourne tous les ordres avec le ticket de position spécifié dans la propriété ORDER_POSITION_ID.

history_orders_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 ordres répondant à des critères spécifiés pour un nom de symbole.

ticket=TICKET

[in] Ticket de l'ordre qui est demandé. 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 ORDER_POSITION_ID) pour laquelle tous les ordres doivent être reçues. 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 tous les ordres d'historique dans une période spécifiée en un seul appel similaire à HistoryOrdersTotal et HistoryOrderSelect.

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 :

from datetime import datetime
import MetaTrader5 as mt5
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()
 
# récupère le nombre d'ordres dans l'historique
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("Aucun ordre pour le groupe=\"*GBP*\", code d'erreur={}".format(mt5.last_error()))
elif len(history_orders)>0:
    print("history_orders_get({}, {}, group=\"*GBP*\")={}".format(from_date,to_date,len(history_orders)))
print()
 
# affiche tous les ordres historiques par un ticket de position
position_id=530218319
position_history_orders=mt5.history_orders_get(position=position_id)
if position_history_orders==None:
    print("Aucun ordre pour la position #{}".format(position_id))
    print("code d'erreur=",mt5.last_error())
elif len(position_history_orders)>0:
    print("Total des ordres de l'historique pour la position #{}: {}".format(position_id,len(position_history_orders)))
   # affiche tous les ordres historiques ayant un ticket de position spécifié
    for position_order in position_history_orders:        
        print(position_order)
    print()
 # affiche ces ordres sous forme de tableau à l'aide de 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)
 
# 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_orders_get(2020-01-01 00:00:00, 2020-03-25 17:17:32.058795, group="*GBP*")=14
 
Total des ordres de l'historique pour la position #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   

Voir aussi

history_deals_total, history_deals_get