- Richtung des Indizierens in Feldern, Puffern und Zeitreihen
- Datenzugriff organisieren
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopySeries
Ruft die synchronisierten Zeitreihen ab aus der Struktur MqlRates für den angegebene Zeitrahmen des Symbols und der angegebenen Anzahl.Die Daten werden dem angegebenen Satz von Arrays zugewiesen. Die Elemente werden von der Gegenwart in die Vergangenheit gereiht und das heißt, dass die Startposition 0 gleich der aktuellen Bar ist.
Wenn die zu kopierende Datenmenge nicht bekannt ist, wird empfohlen, einen dynamischen Array für die empfangenden Arrays zu verwenden, da, wenn die Datenmenge die Größe des Array übersteigt, dies den Versuch verursachen wird, das Array neu zu organisieren, um alle angeforderten Daten unterzubringen.
Wenn Sie eine vorher festgelegte Datenmenge kopieren müssen, ist es empfehlenswert, einen statisch deklarierten Array zu verwenden, um eine unnötige Neuzuweisung von Speicher zu vermeiden.
Die Eigenschaft des empfangenden Arrays — as_series=true oder as_series=false — wird ignoriert: beim Kopieren wird das älteste Zeitreihenelement an den Anfang des dem Array zugewiesenen physischen Speichers kopiert.
int CopySeries(
|
Parameter
symbol_name
[in] Symbolname
timeframe
[in] Zeitrahmen.
start_pos
[in] Index des ersten zu kopierenden Elements.
count
[in] Anzahl der zu kopierenden Elemente.
rates_mask
[in] Die Kombination der Flags aus der Enumeration ENUM_COPY_RATES.
array1, array2,...
[out] Arrays der entsprechenden Typen für den Empfang der Zeitreihen aus der Struktur MqlRates. Die Reihenfolge der an die Funktion übergebenen Arrays muss mit der Reihenfolge der Felder in der MqlRates-Struktur übereinstimmen.
Rückgabewert
Die Anzahl der kopierten Elemente oder -1, wenn ein Fehler aufgetreten ist.
Hinweis
Wenn das gesamte Intervall der angeforderten Daten außerhalb der auf dem Server verfügbaren Daten liegt, gibt die Funktion -1 zurück. Wenn die angeforderten Daten über TERMINAL_MAXBARS (die maximale Anzahl von Balken im Chart) hinausgehen, gibt die Funktion ebenfalls -1 zurück.
Wenn Daten von einem Indikator angefordert werden, gibt die Funktion sofort -1 zurück, wenn die angeforderten Zeitreihen noch nicht aufgebaut sind oder erst vom Server heruntergeladen werden müssen. Die Funktion initiiert jedoch das Herunterladen/Konstruieren der Daten selbst.
Wenn Daten von einem Expert Advisor oder einem Skript angefordert werden, wird der 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 Datenmenge zurück, die zum Zeitpunkt der Zeitüberschreitung bereitgestellt werden konnte, der Download der Historie wird jedoch fortgesetzt, und die Funktion gibt bei der nächsten ähnlichen Anfrage weitere Daten zurück.
Unterschiede zwischen CopySeries und CopyRates
Die Funktion CopySeries ermöglicht es, während eines Aufrufs nur die erforderlichen Zeitreihen in verschiedenen angegebenen Arrays zu erhalten, wobei alle Zeitreihendaten synchronisiert werden. Das bedeutet, dass alle Werte in den resultierenden Arrays bei einem bestimmten Index N zum selben Balken auf dem angegebenen Symbol/Zeitrahmen-Paar gehören werden. Daher muss der Programmierer keine Sorge tragen, um alle empfangenen Zeitreihen mit der Öffnungszeit des Balkens zu synchronisieren.
Im Gegensatz zu CopyRates, das den kompletten Satz von Zeitreihen als MqlRates-Array zurückgibt, erlaubt die CopySeries-Funktion dem Programmierer, nur die benötigten Zeitreihen in separaten Arrays zu erhalten. Dies kann durch die Angabe einer Kombination von Flags geschehen, um den Typ der Zeitreihe auszuwählen. Die Reihenfolge der an die Funktion übergebenen Arrays muss mit der Reihenfolge der Felder in der MqlRates Struktur übereinstimmen:
struct MqlRates
|
Wenn Sie also die Zeitreihenwerte von time, close und real_volume für die letzten 100 Balken des aktuellen Symbol/Zeitrahmens benötigen, sollten Sie den folgenden Aufruf verwenden:
datetime time[];
|
Beachte die Reihenfolge der Arrays "time, close, volume" — sie muss mit der Reihenfolge der Felder in der Struktur MqlRates übereinstimmen. Die Reihenfolge der Werte in der rates_mask spielt keine Rolle. Die Maske könnte auch folgendermaßen aussehen:
COPY_RATES_VOLUME_REAL|COPY_RATES_TIME|COPY_RATES_CLOSE |
Beispiel:
//--- Eingabeparameter
|
Siehe auch