copy_ticks_range

Abrufen der Ticks der angegebenen Zeitspanne vom MetaTrader 5 Terminal.

copy_ticks_range(
   symbol,       // Symbolname
   date_from,    // Zeitpunkt, ab dem die Ticks angefordert werden
   date_to,      // Zeitpunkt, bis zu dem die Ticks angefordert werden
   flags         // Kombination der Flags, die den Typ der benötigten Ticks spezifizieren
   )

Parameter

symbol

[in]  Name des Finanzinstruments, zum Beispiel "EURUSD". Benötigter unbenannter Parameter.

date_from

[in]  Zeitpunkt, ab dem die Ticks benötigt werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Benötigter unbenannter Parameter.

date_to

[in]  Zeitpunkt, bis zu dem die Bars benötigt werden. Ausgewählt und gesetzt durch ein Objekt vom Typ 'datetime' oder der Anzahl der Sekunden seit dem 1970.01.01. Benötigter unbenannter Parameter.

flags

[in]  Die Flag, die den Typ der benötigten Ticks spezifiziert. COPY_TICKS_INFO – Ticks mit den Änderungen von Bid und/oder Ask, COPY_TICKS_TRADE – Ticks mit den Änderungen von Last und Volume, COPY_TICKS_ALL – alle Ticks. Die Werte der Flags sind beschreiben in der Enumeration COPY_TICKS. Benötigter unbenannter Parameter.

Rückgabewert

Rückgabe der Ticks als numpy Array mit den benannten Spalten time, bid, ask, last und flags. Die Werte der 'flags' kann eine Kombination der Flags der Enumeration TICK_FLAG sein. Im Falle eines Fehlers wird nichts zurückgegeben. Die Information über den Fehler kann über last_error() abgerufen werden.

Hinweis

Siehe die Funktion CopyTicks für weitere Informationen.

Beim Erstellen des Objekts 'datetime' verwendet Python die lokale Zeitzone, MetaTrader 5 hingegen die Zeitzone von UTC (ohne Zeitverschiebung). Daher sollte 'datetime' in UTC-Zeit für die Funktionen erstellt werden, die die Zeit benötigen. Die aus MetaTrader 5 erhaltenen Daten haben UTC-Zeit, aber Python wendet beim Versuch, sie zu drucken, wieder die lokale Zeit (inkl. Verschiebung) an. Daher sollten die gewonnenen Daten auch für die visuelle Darstellung korrigiert werden.

Beispiel:

from datetime import datetime
import MetaTrader5 as mt5
# Datenanzeige des Pakets von MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# Importieren des Moduls 'panda' für eine Darstellung der erhaltenen Daten in Tabellenform
import pandas as pd
pd.set_option('display.max_columns', 500# Anzahl der anzuzeigenden Spalten
pd.set_option('display.width', 1500)      # Maximale Tabellenbreite für die Anzeige
# Importieren der Moduls pytz für die Arbeit mit Zeitzonen
import pytz
 
# Verbindung herstellen zum MetaTrader 5 Terminal
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# Setzen der Zeitzone auf UTC
timezone = pytz.timezone("Etc/UTC")
# Erstellen des Objekts 'datetime' in der UTC-Zeitzone, um eine Verwendung der lokalen Zeitzone zu vermeiden
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, tzinfo=timezone)
# Anforderung der Ticks von AUDUSD im Zeitintervall 11.01.2020 - 11.01.2020
ticks = mt5.copy_ticks_range("AUDUSD"utc_from, utc_tomt5.COPY_TICKS_ALL)
print("Ticks received:",len(ticks))
 
# Schließen der Verbindung zum MetaTrader 5 Terminal
mt5.shutdown()
 
# Darstellung der Daten von jedem Tick in einer neuen Zeile
print("Display obtained ticks 'as is'")
count = 0
for tick in ticks:
    count+=1
    print(tick)
    if count >= 10:
        break
 
# Erstellen des DataFrame aus den erhaltenen Daten
ticks_frame = pd.DataFrame(ticks)
# Konvertieren der Zeit in Sekunden im Datumsformat
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
 
# Datenanzeige
print("\nDisplay dataframe with ticks")
print(ticks_frame.head(10)
 
Ergebnis:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Ticks received: 37008
Anzeige der erhaltenen Ticks 'as is'
(1578614400, 0.68577, 0.68594, 0., 0, 1578614400820, 134, 0.)
(1578614401, 0.68578, 0.68594, 0., 0, 1578614401128, 130, 0.)
(1578614401, 0.68575, 0.68594, 0., 0, 1578614401128, 130, 0.)
(1578614411, 0.68576, 0.68594, 0., 0, 1578614411388, 130, 0.)
(1578614411, 0.68575, 0.68594, 0., 0, 1578614411560, 130, 0.)
(1578614414, 0.68576, 0.68595, 0., 0, 1578614414973, 134, 0.)
(1578614430, 0.68576, 0.68594, 0., 0, 1578614430188, 4, 0.)
(1578614450, 0.68576, 0.68595, 0., 0, 1578614450408, 4, 0.)
(1578614450, 0.68576, 0.68594, 0., 0, 1578614450519, 4, 0.)
(1578614456, 0.68575, 0.68594, 0., 0, 1578614456363, 130, 0.)
 
Darstellung von dataframe mit Ticks
                 time      bid      ask  last  volume       time_msc  flags  volume_real
0 2020-01-10 00:00:00  0.68577  0.68594   0.0       0  1578614400820    134          0.0
1 2020-01-10 00:00:01  0.68578  0.68594   0.0       0  1578614401128    130          0.0
2 2020-01-10 00:00:01  0.68575  0.68594   0.0       0  1578614401128    130          0.0
3 2020-01-10 00:00:11  0.68576  0.68594   0.0       0  1578614411388    130          0.0
4 2020-01-10 00:00:11  0.68575  0.68594   0.0       0  1578614411560    130          0.0
5 2020-01-10 00:00:14  0.68576  0.68595   0.0       0  1578614414973    134          0.0
6 2020-01-10 00:00:30  0.68576  0.68594   0.0       0  1578614430188      4          0.0
7 2020-01-10 00:00:50  0.68576  0.68595   0.0       0  1578614450408      4          0.0
8 2020-01-10 00:00:50  0.68576  0.68594   0.0       0  1578614450519      4          0.0
9 2020-01-10 00:00:56  0.68575  0.68594   0.0       0  1578614456363    130          0.0

Siehe auch

CopyRates, copy_rates_from_pos, copy_rates_range, copy_ticks_from, copy_ticks_range