copy_rates_from

Retourne les barres du terminal MetaTrader 5 à partir de la date spécifiée.

copy_rates_from(
   symbol,         // nom du symbole
   timeframe,      // période
   date_from,      // date de début
   count           // nombre de barres
   )

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 d'ouverture de la première barre de l'échantillon demandé. Défini par l'objet 'datetime' ou en nombre de secondes écoulées depuis 1970.01.01. Paramètre non nommé requis.

count

[in] Nombre de barres à récupérer. 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.

Seules les données dont la date est inférieure (donnée plus récente) ou égale à la date spécifiée seront retournées. Cela signifie que l'heure d'ouverture de n'importe quelle barre est toujours inférieure ou égale à celle spécifiée.

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.  

TIMEFRAME est une énumération avec les valeurs possibles de période du graphique

ID

Description

TIMEFRAME_M1

1 minute

TIMEFRAME_M2

2 minutes

TIMEFRAME_M3

3 minutes

TIMEFRAME_M4

4 minutes

TIMEFRAME_M5

5 minutes

TIMEFRAME_M6

6 minutes

TIMEFRAME_M10

10 minutes

TIMEFRAME_M12

12 minutes

TIMEFRAME_M12

15 minutes

TIMEFRAME_M20

20 minutes

TIMEFRAME_M30

30 minutes

TIMEFRAME_H1

1 heure

TIMEFRAME_H2

2 heures

TIMEFRAME_H3

3 heures

TIMEFRAME_H4

4 heures

TIMEFRAME_H6

6 heures

TIMEFRAME_H8

8 heures

TIMEFRAME_H12

12 heures

TIMEFRAME_D1

1 jour

TIMEFRAME_W1

1 semaine

TIMEFRAME_MN1

1 mois

 

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 un objet '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)
# récupère 10 barres H4 de l'EURUSD à partir du 01.10.2020 dans le fuseau horaire UTC
rates = mt5.copy_rates_from("EURUSD"mt5.TIMEFRAME_H4utc_from10)
 
# ferme la connexion au terminal MetaTrader 5
mt5.shutdown()
# affiche chaque élément des données obtenues dans une nouvelle ligne
print("Affiche les données brutes obtenues")
for rate in rates:
    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)  
 
 
Résultat :
Auteur du package MetaTrader5 :  MetaQuotes Software Corp.
Version du package MetaTrader5 :  5.0.29
 
Affiche les données brutes obtenues
(1578484800, 1.11382, 1.11385, 1.1111, 1.11199, 9354, 1, 0)
(1578499200, 1.11199, 1.11308, 1.11086, 1.11179, 10641, 1, 0)
(1578513600, 1.11178, 1.11178, 1.11016, 1.11053, 4806, 1, 0)
(1578528000, 1.11053, 1.11193, 1.11033, 1.11173, 3480, 1, 0)
(1578542400, 1.11173, 1.11189, 1.11126, 1.11182, 2236, 1, 0)
(1578556800, 1.11181, 1.11203, 1.10983, 1.10993, 7984, 1, 0)
(1578571200, 1.10994, 1.11173, 1.10965, 1.11148, 7406, 1, 0)
(1578585600, 1.11149, 1.11149, 1.10923, 1.11046, 7468, 1, 0)
(1578600000, 1.11046, 1.11097, 1.11033, 1.11051, 3450, 1, 0)
(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)
 
Afficher les données sous forme de tableau
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-08 12:00:00  1.11382  1.11385  1.11110  1.11199         9354       1            0
1 2020-01-08 16:00:00  1.11199  1.11308  1.11086  1.11179        10641       1            0
2 2020-01-08 20:00:00  1.11178  1.11178  1.11016  1.11053         4806       1            0
3 2020-01-09 00:00:00  1.11053  1.11193  1.11033  1.11173         3480       1            0
4 2020-01-09 04:00:00  1.11173  1.11189  1.11126  1.11182         2236       1            0
5 2020-01-09 08:00:00  1.11181  1.11203  1.10983  1.10993         7984       1            0
6 2020-01-09 12:00:00  1.10994  1.11173  1.10965  1.11148         7406       1            0
7 2020-01-09 16:00:00  1.11149  1.11149  1.10923  1.11046         7468       1            0
8 2020-01-09 20:00:00  1.11046  1.11097  1.11033  1.11051         3450       1            0
9 2020-01-10 00:00:00  1.11051  1.11093  1.11017  1.11041         2448       1            0

Voir aussi

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range