copy_rates_from

Ottiene barre dal terminale MetaTrader 5 a partire dalla data specificata.

copy_rates_from(
   symbol,       // nome del simbolo
   timeframe,    // timeframe
   date_from,    // data iniziale di apertura della barra
   count         // numero di 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 apertura della prima barra dal campione richiesto. Impostata dall'oggetto 'datetime' o come numero di secondi trascorsi dal 1970.01.01. Parametro richiesto senza nome.

count

[in] Numero di barre da ricevere. 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 Nessuna in caso di errore. Le informazioni sull'errore possono essere ottenute utilizzando last_error().

Nota

Vedere la funzione CopyRates() per ulteriori informazioni.

Solo i dati la cui data è minore (prima) o uguale alla data specificata. Vuol dire, che il tempo di apertura di ogni barra è sempre minore o uguale a quello specificato.

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.  

TIMEFRAME è un'enumerazione con i valori del perioro possibili per il chart

ID

Descrizione

TIMEFRAME_M1

1 minuto

TIMEFRAME_M2

2 minuti

TIMEFRAME_M3

3 minuti

TIMEFRAME_M4

4 minuti

TIMEFRAME_M5

5 minuti

TIMEFRAME_M6

6 minuti

TIMEFRAME_M10

10 minuti

TIMEFRAME_M12

12 minuti

TIMEFRAME_M12

15 minuti

TIMEFRAME_M20

20 minuti

TIMEFRAME_M30

30 minuti

TIMEFRAME_H1

1 ora

TIMEFRAME_H2

2 ore

TIMEFRAME_H3

3 ore

TIMEFRAME_H4

4 ore

TIMEFRAME_H6

6 ore

TIMEFRAME_H8

8 ore

TIMEFRAME_H12

12 ore

TIMEFRAME_D1

1 giorno

TIMEFRAME_W1

1 settimana

TIMEFRAME_MN1

1 mese

 

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 visualizzare 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
# importa il modulo pytz per lavorare con il fuso orario
import pytz
 
# stabilisce la connessione al terminale MetaTrader 5
if not mt5.initialize():
    print("initialize() fallito, error code =",mt5.last_error())
    quit()
 
# imposta il fuso orario su UTC
timezone = pytz.timezone("Etc/UTC")
# crea un oggetto 'datetime' nel fuso orario UTC per evitare l'implementazione di un fuso orario locale
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# ottiene 10 barre EUR4 USD H4 a partire dal 01.10.2020 nel fuso orario UTC
rates = mt5.copy_rates_from("EURUSD"mt5.TIMEFRAME_H4utc_from10)
 
# interrompe la connessione al terminale MetaTrader 5
mt5.shutdown()
# visualizza ogni elemento dei dati ottenuti in una nuova riga
print("Mostra i dati ottenuti 'così come sono' '")
for rate in rates:
    print(rate)
 
# create DataFrame dai dati ottenuti
rates_frame = pd.DataFrame(rates)
# converti il tempo in secondi nel formato datetime
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
                           
# visualizza dati
print("\nMostra dataframe con dati")
print(rates_frame)  
 
 
Risultato:
Autore del pacchetto MetaTrader5: MetaQuotes Software Corp.
Versione del pacchetto MetaTrader5: 5.0.29
 
Visualizza i dati ottenuti "così come sono"
(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)
 
Visualizza dataframe con i dati
                 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

See also

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range