- 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
CopyBuffer
Bekommt Daten des angegebenen Puffers in der angegebenen Zahl. Es gibt 3 Varianten der Funktion.
Abzählen der Elemente der kopierten Daten (Indikatorpuffer mit dem Index buffer_num) von der Startposition wird von der Gegenwart zur Vergangenheit durchgeführt, d. h. die Startposition, 0. bedeutet die laufende Bar (Indikatorwert für die laufende Bar).
Als Feld-Rezipient buffer[] ist es wünschenswert, ein dynamisches Feld zu verwenden, denn die Funktion CopyBuffer() versucht, die Größe des Feld-Rezipienten für Größe der kopierten Daten zu verteilen. Wenn als Feld-Rezipient buffer[] ein Indikatorpuffer auftritt (Feld, das für Aufbewahren der Indikatorwerte durch die Funktion SetIndexBufer() verteilt wurde), ist partielles Kopieren zugelassen. Beispiel kann man im Benutzerindikator Awesome_Oscillator.mq5 in der Standardlieferung des Terminals sehen.
Wenn es erforderlich ist, Indikatorwerte in ein anderes Feld (nicht Indikatorpuffer)partiell zu kopieren, muss man dazu ein Zwischenfeld verwenden, in das die erforderliche Anzahl kopiert wird. Und von diesen Zwischenfeld wird die erforderliche Anzahl der Werte in die notwendigen Stellen des Feld-Rezipienten elementenweise kopiert.
Wenn man die im voraus bekannte Anzahl der Daten kopieren muss, ist es besser dafür einen statisch verteilten Puffer zu verwenden, um unnoetige Neuverteilung des Speichers zu vermeiden.
Es ist egal, welche Eigenschaft das Empfangsfeld hat - as_series=true oder as_series=false, Daten werden so kopiert, dass das aelteste Element am Anfang des physischen Speichers sein wird, der für das Feld verteilt wurde. Es gibt 3 Varianten der Funktion.
Aufruf nach Anfangsposition und Anzahl der angeforderten Elemente
int CopyBuffer(
|
Aufruf nach Anfangsdatum und Anzahl der angeforderten Elemente
int CopyBuffer(
|
Aufruf nach Anfangs- und Beendigungsdatum des angeforderten Zeitintervals
int CopyBuffer(
|
Parameter
indicator_handle
[in] Handle des Indikators, das durch die Indikatorfunktion zurückgegeben wird.
buffer_num
[in] Nummer des Puffers des Indikators.
start_pos
[in] Nummer des ersten kopierten Elementes.
count
[in] Anzahl der kopierten Elemente.
start_time
[in] Barzeit, die dem ersten Element entspricht.
stop_time
[in] Barzeit, die dem letzten Element entspricht.
buffer[]
[out] Feld des Typs double.
Rückgabewert
Anzahl der kopierten Elemente des Feldes oder -1 beim Fehler.
Hinweis
Wenn die angeforderten Timeserien noch nicht gebildet sind oder müssen vom Server geladen werden, kehrt die Funktion sofort bei der Anforderung der Daten aus dem Indikator -1 zurück, aber dabei wird das Prozess der Ladung/Bildung initialisiert.
Bei der Anforderung der Daten aus dem Experten oder Script wird die Ladung vom Server initialisiert, wenn dieses Terminal keine lokale Daten hat oder Bildung der notwendigen Timeserie fängt an, wenn Daten aus der lokalen Geschichte gebildet werden kann, aber sie sind noch nicht fertig. Funktion kehrt diese Anzahl der Daten, die zum Augenblick des Timeoutsablaufs fertig sind.
Beispiel:
//+------------------------------------------------------------------+
|
Im oben angeführten Beispiel ist die Ausfüllung des Indikatorpuffers durch Werte eines anderen Indikatorpuffers vom Indikator in demselben Symbol/Periode dargestellt.
Sehen Sie ein umfassenderes Beispiel von Anfrage der historischen Daten in Methode der Objektbindung. Der Skript zeigt, wie Daten von Indikator iFractals an den letztem 1000 Balken zu erhalten und wie dann die letzten 10 Fraktale nach oben und 10 Fraktale nach unten auf dem Chart anzuzeigen. Sie können eine ähnliche Technik für alle Indikatoren, die fehlende Werte haben und typischerweise unter Verwendung der folgenden Stil hergestellt werden, verwenden:
Sehen Sie auch