copy_rates_range

Ottiene barre nell'intervallo di date specificato dal terminale MetaTrader 5.

copy_rates_range(
   symbol,       // nome del simbolo
   timeframe,    // timeframe
   date_from,    // data in cui sono richieste le barre
   date_to       // data, fino alla quale sono richieste le barre
   )

Parametri

symbol

[in] Nome dello strumento finanziario, ad esempio "EURUSD". Parametro richiesto senza nome.

timeframe

[in]  Timeframe per cui sono richieste le barre. Impostato da un valore dell'enumerazione TIMEFRAME. Parametro unnamed richiesto.

date_from

[in] Data di richiesta delle barre. Impostata dall'oggetto 'datetime' o come numero di secondi trascorsi dal 1970.01.01. Vengono restituite le barre con l'orario di apertura >= date_from. Parametro richiesto senza nome.

date_to

[in] Data, fino alla quale sono richieste le barre. Impostata dall'oggetto 'datetime' o come numero di secondi trascorsi dal 1970.01.01. Vengono restituite le barre con l'orario di apertura <= date_to. Parametro richiesto senza nome.

Valore di Ritorno

Restituisce le barre come matrice numpy con le colonne denominate time, open, high, low, close, tick_volume, spread e real_volume. Restituisce Nessuno in caso di errore. Le informazioni sull'errore possono essere ottenute utilizzando last_error().

Nota

Vedere la funzione CopyRates() per ulteriori informazioni.

Il terminale MetaTrader 5 fornisce barre solo all'interno di una cronologia disponibile per un utente su charts. Il numero di barre disponibili per gli utenti sono impostate nel parametro "Max. barre nel chart".

Durante la creazione dell'oggetto 'datetime', Python utilizza il fuso orario locale, mentre MetaTrader 5 memorizza il tick e la barra dell'ora aperta nel fuso orario UTC (senza lo slittamento). Pertanto, 'datetime' deve essere creato nell'ora UTC per l'esecuzione di funzioni che utilizzano l'ora. I dati ricevuti dal terminale MetaTrader 5 hanno l'ora UTC.

Esempio:

from datetime import datetime
import MetaTrader5 as mt5
# visualizza i dati sul pacchetto MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# importa il modulo 'pandas' per visualzzare i dati ottenuti in forma tabellare
import pandas as pd
pd.set_option('display.max_columns', 500# numero di colonne da visualizzare
pd.set_option('display.width', 1500)      # max table width to display
# import pytz module for working with time zone
import pytz
 
# stabilisce la connessione al terminale MetaTrader 5
if not mt5.initialize():
    print("initialize() fallito, error code =",mt5.last_error())
    quit()
 
# imposta fuso orario UTC
timezone = pytz.timezone("Etc/UTC")
# crea oggetti 'datetime' nel fuso orario UTC per evitare l'implementazione di un offset fuso orario locale
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, hour = 13, tzinfo=timezone)
# ottiene barre da USDJPY M5 nell'intervallo 2020.01.10 00:00 - 2020.01.11 13:00 in UTC time zone
rates = mt5.copy_rates_range("USDJPY"mt5.TIMEFRAME_M5utc_from, utc_to)
 
# chiude la connessione a MetaTrader 5 terminal
mt5.shutdown()
 
# visualizza ogni elemento dei dati ottenuti in una nuova riga
print("Visualizza i dati ottenuti 'così come sono' ")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)
 
# crea DataFrame dai dati ottenuti
rates_frame = pd.DataFrame(rates)
# converte il tempo in secondi nel formato 'datetime'
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# display data
print("\nMostra dataframe con i dati")
print(rates_frame.head(10))
 
Risultato:
Autore del pacchetto MetaTrader5: MetaQuotes Software Corp.
Versione del pacchetto MetaTrader5: 5.0.29
 
Visualizza i dati ottenuti "così come sono"
(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)
 
Visualizza dataframe con i dati
                 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

See also

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range