copy_rates_range

Retourne les barres du terminal MetaTrader 5 dans la plage de dates spécifiée.

copy_rates_range(
   symbol,         // nom du symbole
   timeframe,      // période
   date_from,      // date à partir de laquelle les barres sont demandées
   date_to         // date jusqu'à laquelle les barres sont demandées
   )

Paramètres

symbol

[in]  Nom de l'instrument financier, par exemple, "EURUSD". Paramètre non nommé requis.

timeframe

[in] Période pour laquelle les barres sont demandées. Défini par une valeur de l'énumération TIMEFRAME. Paramètre sans nom requis.

date_from

[in] Date à partir de laquelle les barres sont demandées. Défini par l'objet 'datetime' ou en nombre de secondes écoulées depuis 1970.01.01. Les barres avec l'heure d'ouverture >= date_from sont retournées. Paramètre non nommé requis.

date_to

[in] Date jusqu'à laquelle les barres sont demandées. Défini par l'objet 'datetime' ou en nombre de secondes écoulées depuis 1970.01.01. Les barres avec l'heure d'ouverture <= date_to sont renvoyées. Paramètre non nommé requis.

Valeur de Retour

Renvoie les barres sous forme de tableau numpy avec les colonnes nommées time, open, high, low, close, tick_volume, spread et real_volume. Retourne None en cas d'erreur. Les informations sur l'erreur peuvent être obtenues en utilisant last_error().

Note

Voir la fonction CopyRates() pour plus d'informations.

Le terminal MetaTrader 5 fournit des barres uniquement dans l'historique disponible pour un utilisateur sur les graphiques. Le nombre de barres disponibles pour les utilisateurs est défini dans le paramètre "Max. Max. barres dans le graphique".

Lors de la création de l'objet 'datetime', Python utilise le fuseau horaire local, tandis que MetaTrader 5 stocke l'heure d'ouverture des ticks et des barres dans le fuseau horaire UTC (sans décalage). Par conséquent, 'datetime' doit être créé en temps UTC pour exécuter des fonctions qui utilisent le temps. Les données reçues du terminal MetaTrader 5 sont en heure UTC.

Exemple :

from datetime import datetime
import MetaTrader5 as mt5
# affiche les données sur le package MetaTrader 5
print("Auteur du package MetaTrader5 : ",mt5.__author__)
print("Version du package MetaTrader5 : ",mt5.__version__)
 
# importe le module 'pandas' pour afficher les données obtenues sous forme tabulaire
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
# importe le module pytz pour travailler avec le fuseau horaire
import pytz
 
# établit une connexion avec le terminal MetaTrader 5
if not mt5.initialize():
 print("initialize() a échoué, code d'erreur=",mt5.last_error())
    quit()
 
# définit le fuseau horaire sur UTC
timezone = pytz.timezone("Etc/UTC")
# crée des objets 'datetime' dans le fuseau horaire UTC pour éviter l'implémentation d'un décalage de fuseau horaire local
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, hour = 13, tzinfo=timezone)
# récupère des barres de USDJPY M5 dans l'intervalle 2020.01.10 00:00 - 2020.01.11 13:00 dans le fuseau horaire UTC
rates = mt5.copy_rates_range("USDJPY"mt5.TIMEFRAME_M5utc_from, utc_to)
 
# fermeture de la connexion au terminal MetaTrader 5
mt5.shutdown()
 
# affiche chaque élément des données obtenues sur une nouvelle ligne
print("Affiche les données brutes obtenues")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)
 
# crée le DataFrame à partir des données obtenues
rates_frame = pd.DataFrame(rates)
# convertit le temps en secondes au format 'datetime'
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# affiche les données
print("\nAffiche les données sous forme de tableau")
print(rates_frame.head(10))
 
Résultat :
Auteur du package MetaTrader5 :  MetaQuotes Software Corp.
Version du package MetaTrader5 :  5.0.29
 
Affiche les données brutes obtenues
(1578614400, 109.513, 109.527, 109.505, 109.521, 43, 2, 0)
(1578614700, 109.521, 109.549, 109.518, 109.543, 215, 8, 0)
(1578615000, 109.543, 109.543, 109.466, 109.505, 98, 10, 0)
(1578615300, 109.504, 109.534, 109.502, 109.517, 155, 8, 0)
(1578615600, 109.517, 109.539, 109.513, 109.527, 71, 4, 0)
(1578615900, 109.526, 109.537, 109.484, 109.52, 106, 9, 0)
(1578616200, 109.52, 109.524, 109.508, 109.51, 205, 7, 0)
(1578616500, 109.51, 109.51, 109.491, 109.496, 44, 8, 0)
(1578616800, 109.496, 109.509, 109.487, 109.5, 85, 5, 0)
(1578617100, 109.5, 109.504, 109.487, 109.489, 82, 7, 0)
 
Afficher les données sous forme de tableau
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-10 00:00:00  109.513  109.527  109.505  109.521           43       2            0
1 2020-01-10 00:05:00  109.521  109.549  109.518  109.543          215       8            0
2 2020-01-10 00:10:00  109.543  109.543  109.466  109.505           98      10            0
3 2020-01-10 00:15:00  109.504  109.534  109.502  109.517          155       8            0
4 2020-01-10 00:20:00  109.517  109.539  109.513  109.527           71       4            0
5 2020-01-10 00:25:00  109.526  109.537  109.484  109.520          106       9            0
6 2020-01-10 00:30:00  109.520  109.524  109.508  109.510          205       7            0
7 2020-01-10 00:35:00  109.510  109.510  109.491  109.496           44       8            0
8 2020-01-10 00:40:00  109.496  109.509  109.487  109.500           85       5            0
9 2020-01-10 00:45:00  109.500  109.504  109.487  109.489           82       7            0

Voir aussi

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range