CopyRates
Gibt die historischen Zeitreihendaten der Struktur MqlRates der angegebenen Symbolperiodenlänge in der angegebenen Menge in eine Matrix oder einen Vektor zurück. Die Elemente werden von der Gegenwart in die Vergangenheit gereiht und das heißt, dass die Startposition 0 gleich der aktuellen Bar ist.
Die Daten werden so kopiert, dass das älteste Element an den Anfang der Matrix oder des Vektors gesetzt wird. Es gibt drei Funktionsmöglichkeiten.
Zugriff über die Anfangsposition und die Anzahl der gewünschten Elemente
bool matrix::CopyRates(
|
Zugriff mit Anfangsdatum und der Anzahl der benötigten Elemente
bool matrix::CopyRates(
|
Zugriff mit Anfangs- und Endzeitpunkt des gewünschten Zeitraums
bool matrix::CopyRates(
|
Vektor-Methoden
Zugriff über die Anfangsposition und die Anzahl der gewünschten Elemente
bool vector::CopyRates(
|
Zugriff mit Anfangsdatum und der Anzahl der benötigten Elemente
bool vector::CopyRates(
|
Zugriff mit Anfangs- und Endzeitpunkt des gewünschten Zeitraums
bool vector::CopyRates(
|
Parameter
symbol
[in] Symbolname
period
[in] Zeitrahmen.
rates_mask
[in] Kombination der Flags aus der Enumeration ENUM_COPY_RATES, die den Typ der angeforderten Zeitreihe angeben. Beim Kopieren in einen Vektor kann nur ein Wert aus der Enumeration ENUM_COPY_RATES angegeben werden, andernfalls tritt ein Fehler auf.<Segment 1412>
Rstart
[in] Index des ersten zu kopierenden Elements.
count
[in] Anzahl der zu kopierenden Elemente.
from
[in] Zeit des Balkens des ersten Elements.
ändert auf
[in] Zeit des Balkens des letzten Elements.
Rückgabewert
Rückgabe von true bei Erfolg, sonst false im Falle eines Fehlers.
Hinweis
Wenn das Intervall der angeforderten Daten komplett außerhalb der auf dem Server verfügbaren Daten liegt, dann liefert die Funktion false. Wenn die Daten außerhalb von TERMINAL_MAXBARS (maximale Anzahl von Balken im Chart) angefordert werden, gibt die Funktion ebenfalls falsezurück.
Wenn Daten von einem EA oder einem Skript angefordert werden, wird ein Download vom Server initiiert, wenn das Terminal die entsprechenden Daten nicht lokal hat, oder die Konstruktion der notwendigen Zeitreihen beginnt, wenn die Daten aus der lokalen Historie konstruiert werden können, aber noch nicht bereit sind. Die Funktion gibt die Menge zurück, die bis zum Ablauf der Zeitüberschreitung zur Verfügung stehen wird, der Download der Historie wird jedoch fortgesetzt, und die Funktion gibt bei der nächsten ähnlichen Anforderung weitere Daten zurück.
Bei der Abfrage von Daten nach dem Startdatum und der Anzahl der erforderlichen Elemente werden nur Daten zurückgegeben, deren Datum kleiner (vor) oder gleich dem angegebenen Datum ist. Das Intervall wird auf eine Sekunde genau festgelegt und berücksichtigt. Mit anderen Worten: Das Eröffnungsdatum eines jeden Balkens, für den der Wert zurückgegeben wird (Volumen, Spread, Open, High, Low, Close oder Time), ist immer gleich oder kleiner als das angegebene Datum.
Wenn Daten in einem bestimmten Datumsbereich angefordert werden, werden nur Daten zurückgegeben, die in das angeforderte Intervall fallen. Das Intervall wird auf eine Sekunde genau festgelegt und berücksichtigt. Mit anderen Worten, die Eröffnungszeit eines jeden Balkens, für den der Wert zurückgegeben wird (Volumen, Spread, Indikatorpufferwert, Open, High, Low, Close oder Time), liegt immer im angeforderten Intervall.
Wenn zum Beispiel der aktuelle Wochentag Samstag ist, gibt die Funktion 0 zurück, wenn versucht wird, die Daten des wöchentlichen Zeitrahmens zu kopieren und start_time=Last_Tuesday und stop_time=Last_Friday einstellt wurde, weil die Eröffnungszeit auf dem wöchentlichen Zeitrahmen immer auf den Sonntag fällt, aber kein einziger Balken einer Woche in den angegebenen Bereich fällt.
Wenn Sie einen Wert für den aktuellen, noch unvollständigen Balken benötigen, können Sie die erste Aufrufform mit der Angabe von start_pos=0 und count=1 verwenden.
Die Enumeration ENUM_COPY_RATES enthält die Flags zur Angabe des Datentyps, der an die Matrix oder das Array übergeben werden soll. Die Flag-Kombination ermöglicht es, mehrere Zeitreihen aus der Historie in einer Anfrage zu erhalten. Die Reihenfolge der Zeilen in der Matrix entspricht der Reihenfolge der Werte in der Enumeration ENUM_COPY_RATES. Mit anderen Worten: Die Zeile mit den hohen Daten wird in der Matrix immer höher stehen als die Zeile mit den niedrigen Daten.
ID |
Wert |
Beschreibung |
---|---|---|
COPY_RATES_OPEN |
1 |
Zeitreihe der Eröffnungspreise |
COPY_RATES_HIGH |
2 |
Zeitreihe der Hochs |
COPY_RATES_LOW |
4 |
Zeitreihe der Tiefs |
COPY_RATES_CLOSE |
8 |
Zeitreihe der Schlusskurse |
COPY_RATES_TIME |
16 |
Zeitreihe (Bar open time)
Die Ermittlung der Zeit eines Vektors vom Typ float und der Matrix (vectord und matrixf) führt zu Verlusten von ~100 Sekunden, da bei float die Genauigkeit stark eingeschränkt ist und ganze Zahlen größer als 1<<24 in float nicht genau dargestellt werden können. |
COPY_RATES_VOLUME_TICK |
32 |
Tick Volumina |
COPY_RATES_VOLUME_REAL |
64 |
Handelsvolumina |
COPY_RATES_SPREAD |
128 |
Spreads |
Kombination |
|
|
COPY_RATES_OHLC |
15 |
Zeitreihen von Open, High, Low, Close |
COPY_RATES_OHLCT |
31 |
Zeitreihen von Open, High, Low, Close, Time |
Anordnung der Daten |
|
|
COPY_RATES_VERTICAL |
32768 |
Die Reihen werden entlang der vertikalen Achse in die Matrix kopiert. Die erhaltenen Reihenwerte werden in der Matrix vertikal angeordnet, d. h. die ältesten Daten stehen in der ersten Zeile, während die jüngsten Daten in der letzten Matrixzeile stehen.
Beim standardmäßigen Kopieren werden die Datenreihen in eine Matrix entlang der horizontalen Achse eingefügt.
Dies Flag ist nur beim Kopieren in eine Matrix anwendbar. |
Beispiel:
//+------------------------------------------------------------------+
|
Siehe auch