Daten
In diesem Kontext werden Daten als Informationen verstanden, die von externen Quellen geladen werden, genauso wie von intern generierten AgenaScripts stammende Datensätze.
Balken (Kerzen)
Modus Operandi
Ein klassischer Indikator wird einen oder mehrere Wert(e) anhand der verfügbaren Datenreihen berechnen. Datenreihen in diesem Sinne können aus Schlusspreisen, Tiefs, Stundencharts oder 10-Minutenperioden usw. bestehen. Jede Periode (Kerze) wird einem spezifischen Indikator zugewiesen.
In den folgenden Beispielen und Abbildungen werden wir einen Indikatorwert annehmen, der von etwas wie einem einfachen gleitenden Durchschnitt generiert wird.
Um einen gleitenden Durchschnitt zu berechnen, braucht AgenaTrader eine Datenreihe; hierfür werden wir die Schlusspreise heranziehen. Alle Schlusspreise für die Balken (Kerzen) innerhalb eines Charts werden in einer Liste gespeichert und numerisch geordnet. Der aktuelle Schlusspreis des aktuellen Balkens wird am rechten Eck des Charts angezeigt und wird die Nummer 0 zugewiesen. Der Balken links davon wird die Nummer 1 zugewiesen, und so weiter. Der älteste abgebildete Balken wird die Nummer 500 haben (als Beispiel). Wird ein neuer Balken während der aktuellen Handelssession hinzugefügt, wird dieser Balken die Nummer 0 zugewiesen, und der vorangegangene Balken – der bis zu diesem Punkt Balken Nummer 0 war – wird nun neu als Balken 1 eingeordnet werden, und der älte ste Balken ganz links wird nun die Nummer 501 haben.
Innerhalb eines Scripts (selbsterstelltes Programm) ist das „Close“-Array die Liste aller Schlusspreise. Der letzte Schlusspreis ist daher Close[0] und der Schlusspreis davor (Balken links vom letzten Balken) ist Close[1] usw., und die älteste Kerze hat dabei den Wert von Close[501]. Hier bezeichnet die Nummer innerhalb der eckigen Klammern den Index des Arrays. Der allgemeine Begriff, der in AgenaTrader verwendet wird, ist „barsAgo“.
Zusätzlich wird jeder Balken nicht nur einen Close-Wert haben, sondern auch einen High, Low, Open, Median, Typical, Weighted, Time гnd Volume. Zeitraum wäre der Hoch der Kerze, die vor 10 Perioden aufgetreten ist, High[10], der Tief des letzten Tages wäre Low[1].
Wichtiger Hinweis: Die oben erwähnten Beispiele betreffen Berechnungen, die am Ende einer Periode ausgeführt werden. Die Werte für die aktuell laufenden und unfertigen Kerzen werden nicht berücksichtigt.
Wenn Sie die Werte der aktuell laufenden und unfertigen Kerzen bekommen möchten, müssen Sie CalculateOnBarClose = falsch einstellen. Wie beim vorigen Beispiel wird der aktuell laufende Balken die Nummer 0 erhalten und so weiter. Close[0] wird Ihnen den aktuellsten Preis, der vom Datenanbieter geliefert wird, liefern. Für alle Werte der Balken High[0]...Low[0]... etc. sind Änderungen vorbehalten bis der Balken abgeschlossen und ein neuer Balken angefangen wird. Der einzige Wert, der sich auf keinen Fall ändern wird, ist Open[0].
Data Series
Beschreibung
Datenserien werden in AgenaTrader zum einen unterschieden in die frei für die eigene Programmierung verwendbaren Datenserien zum Speichern von Werten unterschiedlicher Datentypen und zum anderen in die in AgenaTrader fest integrierten Datenserien, die die Kursdaten der einzelnen Bars enthalten. Die letzteren werden hier vorgestellt. Das Konzept von Datenserien wird sehr konsequent und durchgängig verfolgt. Alle Kursdaten der einzelnen Bars sind in Datenserien organisiert.
Folgende Datenserien sind verfügbar:
Open
Beschreibung
Open ist eine Datenserie vom Typ Dataseries, in der die historischen Eröffnungskurse gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Open
Open[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
// Eröffnungskurs der aktuellen Periode
Print(Time[0] + " " + Open[0]);
// Eröffnungskurs des Bars von vor 5 Perioden
Print(Time[5] + " " + Open[5]);
// aktueller Wert für den SMA 14 über die Eröffnungskurse (gerundet)
Print("SMA(14) Calculated using the opening prices: " + Instrument.Round2TickSize(SMA(Open, 14)[0]));
High
Beschreibung
High ist eine Datenserie vom Typ Dataseries, in der die historischen Höchstkurse gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
usage
High
High[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
// Höchstkurs der aktuellen Periode
Print(Time[0] + " " + High[0]);
// Höchstkurs des Bars von vor 5 Perioden
Print(Time[5] + " " + High[5]);
// aktueller Wert für den SMA 14 über die Höchstkurse (gerundet)
Print("SMA(14) calculated using the high values: " + Instrument.Round2TickSize(SMA(High, 14)[0]));
Low
Beschreibung
Low ist eine Datenserie vom Typ Dataseries, in der die historischen Tiefstkurse gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Low
Low[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
// Tiefstkurs der aktuellen Periode
Print(Time[0] + " " + Low[0]);
// Tiefstkurs des Bars von vor 5 Perioden
Print(Time[5] + " " + Low[5]);
// aktueller Wert für den SMA 14 über die Tiefstkurse (gerundet)
Print("SMA(14) calculated using the low prices: " + Instrument.Round2TickSize(SMA(Low, 14)[0]));
Close
Beschreibung
Close ist eine Datenserie vom Typ Dataseries, in der die historischen Schlusskurse gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Close
Close[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Indikatoren werden standardmäßig über die Schlusskurse berechnet. Die Angabe der Input-Serie kann weggelassen werden (siehe Beispiel unten).
Beispiel
// Schlusskurs der aktuellen Periode
Print(Time[0] + " " + Close[0]);
// Schlusskurs des Bars von vor 5 Perioden
Print(Time[5] + " " + Close[5]);
// aktueller Wert für den SMA 14 über die Schlusskurse (gerundet)
Print("SMA(14) berechnet über die Schlusskurse: " + Instrument.Round2TickSize(SMA(Close, 14)[0]));
// Close kann auch weggelassen werden, da es per Default verwendet wird.
Print("SMA(14) berechnet über die Schlusskurse: " + Instrument.Round2TickSize(SMA(14)[0]));
Median
Beschreibung
Median ist eine Datenserie vom Typ Dataseries, in der die historischen Median-Werte gespeichert sind.
Der Median-Preis eines Bars ergibt sich aus (High + Low) / 2.
Siehe auch Typical and Weighted.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Median
Median[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Informationen zu Median, Typical und Weighted: http://blog.nobletrading.com/2009/12/median-price-typical-price-weighted.html
Beispiel
// Median-Preis der aktuellen Periode
Print(Time[0] + " " + Median[0]);
// Median-Preis des Bars von vor 5 Perioden
Print(Time[5] + " " + Median[5]);
// aktueller Wert für den SMA 14 über die Median-Preise (gerundet)
Print("SMA(14) berechnet über die Openkurse: " + Instrument.Round2TickSize(SMA(Median, 14)\[0\]));
Typical
Beschreibung
Typical ist eine Datenserie vom Typ Dataseries, in der die historischen Typical-Werte gespeichert sind.
Der Typical-Preis eines Bars ergibt sich aus (High + Low + Close) / 3.
Siehe auch Median and Weighted.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Typical
Typical[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Informationen zu Median, Typical und Weighted: http://blog.nobletrading.com/2009/12/median-price-typical-price-weighted.html
Beispiel
// Typical-Preis der aktuellen Periode
Print(Time[0] + " " + Typical[0]);
// Typical-Preis des Bars von vor 5 Perioden
Print(Time[5] + " " + Typical[5]);
// aktueller Wert für den SMA 14 über die Typical-Preise (gerundet)
Print("SMA(14) berechnet über die Openkurse:" + Instrument.Round2TickSize(SMA(Typical, 14)[0]));
Weighted
Beschreibung
Weighted ist eine Datenserie vom Typ Dataseries, in der die historischen Weighted-Werte gespeichert sind.
Der Weighted-Preis eines Bars ergibt sich aus (High + Low + 2*Close) / 4. (gewichtet auf den Schlusskurs)
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Weighted
Weighted[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Informationen zu Median, Typical und Weighted: http://blog.nobletrading.com/2009/12/median-price-typical-price-weighted.html
Beispiel
// Weighted-Preis der aktuellen Periode
Print(Time[0] + " " + Weighted[0]);
// Weighted-Preis des Bars von vor 5 Perioden
Print(Time[5] + " " + Weighted[5]);
// aktueller Wert für den SMA 14 über die Weighted-Preise (gerundet)
Print("SMA(14) berechnet über die Openkurse: " + Instrument.Round2TickSize(SMA(Weighted, 14)[0]));
Weighteds
Beschreibung
Weighteds ist ein Array von DataSeries[1] welches alle Weighted-Datenserien enthält.
Dieses Array ist nur in Indikatoren bzw. Strategien von Bedeutung, die Daten aus mehreren Zeiteinheiten verarbeiten.
Ein neuer Eintrag wird dem Array immer dann hinzugefügt, wenn dem Indikator bzw. der Strategie eine neue Zeiteinheit hinzugefügt wird.
Mit [TimeFrameRequirements(("1 Day"), ("1 Week"))] enthält das Array 3 Einträge.
Weighteds[0] die Weighted-Dataseries der Chart-Zeiteinheit Weighteds[1] die Weighted-Dataseries aller Bars auf Tagesbasis Weighteds[2] die Weighted-Dataseries aller Bars auf Wochenbasis.
Weighteds[0][0] entspricht Weighteds[0].
Siehe auch MultiBars.
Parameter
barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten
Verwendung
Weighteds[int barSeriesIndex]
Weighteds[int barSeriesIndex][int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
Siehe Beispiel unter Multibars.
Time
Beschreibung
Time ist eine DataSeries vom Typ DateTimeSeries, in der die Zeitstempel der einzelnen Bars gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Time
Time[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
// Zeitstempel der aktuellen Periode
Print(Time[0]);
// Zeitstempel des Bars von vor 5 Perioden
Print(Time[5]);
Times
Beschreibung
Times ist ein Array von DataSeries welches alle Time-Datenserien enthält.
Dieses Array ist nur in Indikatoren bzw. Strategien von Bedeutung, die Daten aus mehreren Zeiteinheiten verarbeiten.
Ein neuer Eintrag wird dem Array immer dann hinzugefügt, wenn dem Indikator bzw. der Strategie eine neue Zeiteinheit hinzugefügt wird..
Mit [TimeFrameRequirements(("1 Day"), ("1 Week"))] enthält das Array 3 Einträge.
Times[0] die Time-Dataseries der Chart-Zeiteinheit Times[1] die Time-Dataseries aller Bars auf Tagesbasis Times[2] die Time-Dataseries aller Bars auf Wochenbasis.
Times[0][0] entspricht Times[0].
Siehe auch MultiBars.
Parameter
barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten
Verwendung
Times[int barSeriesIndex]
Times[int barSeriesIndex][int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
Siehe Beispiel unter Multibars.
Volume
Beschreibung
Volume ist eine DataSeries vom Typ DataSeries, in der die historischen Umsätze gespeichert sind.
Parameter
barsAgo Indexwert (s. Bars)
Verwendung
Volume
Volume[int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Der vom Indikator VOL() zurückgelieferte Wert ist identisch mit dem hier beschriebenen Volumen. Z.B. liefert Vol()[3] den gleichen Wert wie Volume[3].
Beispiel
// Volumen der aktuellen Periode
Print(Time[0] + " " + Volume[0]);
// Volumen des Bars von vor 5 Perioden
Print(Time[5] + " " + Volume[5]);
// aktueller Wert für den SMA 14 über das Volumen (gerundet)
Print("SMA(14) berechnet über das Volumen: " + Instrument.Round2TickSize(SMA(Volume, 14)[0]));
Volumes
Beschreibung
Volumes ist ein Array von DataSeries welches alle Volume- Datenserien enthält. Dieses Array ist nur in Indikatoren bzw. Strategien von Bedeutung, die Daten aus mehreren Zeiteinheiten verarbeiten.
Ein neuer Eintrag wird dem Array immer dann hinzugefügt, wenn dem Indikator bzw. der Strategie eine neue Zeiteinheit hinzugefügt wird.
Mit [TimeFrameRequirements(("1 Day"), ("1 Week"))]enthält das Array 3 Einträge.
Volumes[0] die Volume-Dataseries der Chart-Zeiteinheit Volumes[1] die Volume-Dataseries aller Bars auf Tagesbasis Volumes[2] die Volume-Dataseries aller Bars auf Wochenbasis.
Volumes[0][0] entspricht Volumes[0].
Siehe auch MultiBars.
Parameter
barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries
barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten
Verwendung
Volumes[int barSeriesIndex]
Volumes[int barSeriesIndex][int barsAgo]
Weitere Informationen
Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnBarClose.
Beispiel
Siehe Beispiel unter Multibars.
TimeFrame
Beschreibung
TimeFrame ist ein Zeitrahmenobjekt.
Verwendung
TimeFrame
TimeFrames
Beschreibung
TimeFrames ist ein Array von TimeFrame-Objekten, welches für jedes Bar-Objekt ein separates TimeFrame-Objekt enthält.
Dieses Array ist nur in Indikatoren bzw. Strategien von Bedeutung, die Daten aus mehreren Zeiteinheiten verarbeiten.
Ein neuer Eintrag wird dem Array immer dann hinzugefügt, wenn dem Indikator bzw. der Strategie eine neue Zeiteinheit hinzugefügt wird.
Mit [TimeFrameRequirements(("1 Day"), ("1 Week"))] enthält das Array 3 Einträge.
TimeFrames [0]; //TimeFrame der primären Datenserie (Chart-Zeiteinheit)
TimeFrames [1];
Print(TimeFrames[1]); // liefert "1 Day"
TimeFrames [2];
Print(TimeFrames[2]); // liefert "1 Week"
TimeFrames [0] entspricht TimeFrame.
Siehe auch MultiBars.
Parameter
barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten
Verwendung
TimeFrames [int barSeriesIndex]
Beispiel
if (ProcessingBarSeriesIndex == 0 && ProcessingBarIndex == 0)
for (int i = BarsArray.Count-1; i >= 0; i--)
Print("The Indicator " + this.Name + " uses Bars of the Timeframe " + TimeFrames[i]);