- 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
Zugang zu Zeitreihen und Daten der Indikatoren
Funktionen für Arbeit mit Zeitreihen und Indikatoren. Zeitreihe unterscheidet sich vom Feld dadurch, dass Indizieren der Elemente einer Zeitreihe vom Ende des Feldes zum Anfang des Feldes durchgeführt wird (von den neuesten Daten zu den aeltesten). Für Kopieren der Werte der Zeitreihe ist es empfehlenswert nur dynamische Felder zu verwenden, denn die Kopierfunktionen verteilen die erforderliche Größe der Felder, die die Werte empfangen.
Es gibt eine wichtige Ausnahme von dieser Regel: wenn Kopieren der Zeitreihen und Indikatorwerte oft durchgeführt werden muss, ZB bei jedem Aufruf OnTick() in Experten oder bei jedem Aufruf OnCalculate() in Indikatoren, ist es besser statisch verteilte Felder zu verwenden, denn Operationen der Speicherverteilung für dynamische Felder erfordert zusaetzliche Zeit und das wird beim Testen oder Optimierung der Experte bedeutend sein.
Bei der Verwendung der Funktionen des Zugangs zu Zeitreihen und Werten des Indikators muss man Richtung des Indizierens beachten, das wird ausführlich im Abschnit Richtung des Indizierens in Feldern und Zeitreihen beschrieben.
Zugang zu Werten der Indikatoren und Zeitreihen wird unabhängig davon durchgeführt, ob die angeforderten Daten fertig sind (der sogenannte asynchroner Zugang). Das ist kritisch bedeutsam für Berechnung der Benutzerindikatoren, darum geben die Funktionen des Typs Copy...() beim Fehlen der angeforderten Daten sofort den Fehler zurück. Aber beim Zugang von Experten und Scripts versucht man mehrmals Daten zu erhalten und dabei mit einer Pause, die die Zeit für Ladung fehlender Zeitreihen oder für Berechnung der Indikatorwerte bereitzustellen is.
Im Abschnitt Datenzugang organisieren beschreibt man die Erhaltung, Aufbewahren und Anforderung der Preisdaten im Client-Terminal MetaTrader 5.
Es ist historisch bedingt, dass Zugang zu Daten im Preisfeld vom Ende der Daten durchgeführt wurde. Physikalisch werden neue Daten an Ende des Feldes geschrieben, aber Index dieses Feldes ist immer 0. Index 0 im Feld-Zeitreihe bedeutet Daten der laufenden Bar, d. h. der Bar, die dem unbeendeten Zeitinterval auf dem Timeframe entspricht.
Timeframe ist Zeitperiode, während der die einzelne Preisbar gebildet wird; insgesamt werden 21 Standardtimeframes vorbestimmt.
Funktion |
Massnahme |
---|---|
Gibt die Information über den Zustand der historischen Daten zurück |
|
Gibt die die entsprechende PeriodeAnzahl der Bars in der Geschichte für das entsprechende Symbol und die entsprechende Periode |
|
Gibt die Anzahl der berechneten Daten im Anzeigerpuffer oder -1 beim Fehler (Daten sind noch nicht berechnet) |
|
Gibt handle des angegebenen technischen Anzeigers zurück, das vom Feld des Typs Parameter MqlParam erzeugt wurde |
|
Basierend auf das angegebenen Handle gibt Anzahl von Eingabeparametern des Indikators, sowie die Werte und Type der Parameter zurück |
|
Entfernt handle des Anzeigers und befreit den Berechnungsteol des Anzeigers, wenn niemand den verwendet |
|
Bekommt Daten des angegebenen Puffers vom angegebenen Anzeiger im Feld |
|
Bekommt historische Daten der Struktur Rates für das angegebene Symbol und Periode |
|
Ruft die synchronisierten Zeitreihen ab aus der Struktur MqlRates für den angegebene Zeitrahmen des Symbols und der angegebenen Anzahl |
|
Bekommt im Feld historische Daten über die Eroeffnungszeit der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über die Eroeffnungszeit der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über den maximalen Preis der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über den minimalen Preis der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über den Schlusspreis der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über Tickvolumen der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über Handelsvolumen der Bars für das angegebene Symbol und Periode |
|
Bekommt im Feld historische Daten über Spreads für das angegebene Symbol und Periode |
|
Erhält für die aktuelle Arbeitssitzung angesammelten Ticks ins Array ticks_array |
|
Die Funktion erhält Ticks vom Typ MqlTick aus einem bestimmten Zeitbereich ins Array ticks_array |
|
Gibt die Anzahl der Balken in der Historie nach dem entsprechenden Symbol und Zeitrahmen zurück |
|
Gibt den Index des Balkens zurück, der der angegebenen Zeit entspricht |
|
Gibt den Close-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den High-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Index des größten gefundenen Wertes (Verschiebung relativ zum aktuellen Balken) des entsprechenden Charts zurück |
|
Gibt den Low-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Index des kleinsten gefundenen Wertes (Verschiebung relativ zum aktuellen Balken) des entsprechenden Charts zurück |
|
Gibt den Open-Preis des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Zeitpunkt der Eröffnung eines Balkens (der mithilfe des Parameters shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Wert des Tick-Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Wert des echten Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Wert des Tick-Volumens des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
|
Gibt den Wert des Spreads des Balkens (der durch den Parameter shift vorgegeben wurde) des entsprechenden Charts zurück |
Abgesehen davon, dass durch die Funktion ArraySetAsSeries() der Zugang zu Elementen in Feldern wie in Zeitreihen vorgegeben werden kann, muss man sich daran erinnern, dass Elemente des Feldes in derselben Reihenfolge aufbewahren werden, verändert wird nur Richtung des Indizierens. Diese Tatsache kann am folgenden Beispiel demonstriert werden:
datetime TimeAsSeries[];
|
Im Ergebnis haben wir die Ausgabe, wie diese:
TimeCurrent = 2009.06.11 14:16:23
|
Wie es aus der Ausgabe ersichtlich ist, vermindert sich der Wert der Zeit für das Feld TimeAsSeries, d.h. wir bewegen uns von der Gegenwart zur Vergangenheit. Für das normale Feld ArrayNotSeries ist es umgekehrt - mit dem Anstieg des Indexes bewegen wir uns von der Vergangenheit zur Gegenwart.
Sehen Sie auch
ArrayIsDynamic, ArrayGetAsSeries, ArraySetAsSeries, ArrayIsSeries