Umgang mit Bars und Instrumenten

Unter "Daten" werden hier einerseits Informationen verstanden, die "von außen" in AgenaTrader geladen werden und zum anderen Datenreihen, die aus selbst erstellten AgenaSripts stammen.

Detailierte Informatonen finden sich unter dem jeweiligen Stichwort.

Bars

Collections

Data series

Instruments

Multibars

Bars

Funktionsweise

Ein klassischer Indikator berechnet üblicherweise aus einer vorliegenden Datenreihe einen oder mehrere Werte.

Datenreihen können dabei z.B. alle Schlusskurse oder auch alle Tiefkurse eines Tages, einer Stunde oder einer 10 Min. Periode sein.

Jeder Periode (also jeder Kerze eines Tages, einer Stunde usw.) wird/werden folglich ein oder mehrere Indikatorwert(e) zugeordnet.

Im Folgenden gehen wir von einem Indikatorwert, wie z.B. bei einem gleitenden Durchschnitt aus.

Zur Berechnung eines gleitenden Durchschnitts benötigt AgenaTrader eine Datenreihe. Im Beispiel nehmen wir die Schlusskurse. Alle Schlusskurse der Bars (Kerzen), die in einem Chart dargestellt sind, sind in einer Liste gespeichert und sozusagen durchnummeriert.

Der aktuelle Schlusskurs, also der Schlusskurs des Bars, der am rechten Rand des Charts dargestellt wird, bekommt die Nummer 0. Der Bar links davon die Nummer 1 usw. Der älteste dargestellte Bar hat dann z.B. die Nummer 500.

Kommt im Laufe der Handelssitzung ein neuer Bar hinzu, erhält dieser nun die Nummer 0, der links von ihm, der gerade noch die Nummer 0 hatte, wird zu Nummer 1 usw. Der letzte dargestellte Bar wird zu Nummer 501.

In einem Script (einem selbsterstellten Programm) steht Close close für die Liste (Array) aller Schlusskurse. Der letzte Schlusskurs ist dann Close [0]; t der Schlusskurs davor (bei Tagesdaten ist das z.B. der Schlusskurs von gestern) ist Close [1], der davor Close [2] bis zum ersten Bar im Chart (ganz links) mit Close [501]. Die Zahl in den eckigen Klammern ist ein Index. In AgenaTrader steht hierfür im allgemeinen Fall der Ausdruck "barsAgo".

Für jeden Bar gibt es nicht nur Close, sondern zudem auch High, Low, Open, Median, Typical, Weighted, Time and Volume. Das Hoch der Kerze, von vor 10 Tagen ist also z.B. High [10], Das Tief von gestern Low [1]...

wichtiger Hinweis

Die o.g. Beispiele gelten, wenn die Berechnung am Ende einer Periode erfolgt. Die Werte der aktuell laufenden (noch nicht fertigen Kerze) sind nicht berücksichtigt. Möchte man bereits auf die Werte der sich gerade ausbildenden Kerze zurückgreifen, muß man dies AgenaTrader im Script mit CalculateOnClosedBar= false mitteilen.

In diesem Fall bekommt der aktuell laufende Bar die Nummer 0, der Bar links neben dem aktuell laufenden die Nummer 1 usw. Der letzte Bar (im Beispiel oben) hätte jetzt die Nummer 502.

Mit close [0] bekommt man nun den jeweils letzten Kurs, der gerade vom Datenanbieter an AgenaTrader übermittelt wurde. Alle Werte des Bars (high [0], low [0]…) können sich solange verändern, bis der Bar fertig ausgebildet ist und ein neuer Bar begonnen hat. Nur Open[0] ändert sich auch in diesem Fall nicht mehr.

Eigenschaften

Eigenschaften von Bars

"Bars" steht für eine Liste aller Bars (Kerzen) in einem Chart (siehe Funktionsweise, Bars).

Bars (public IBars Bars) kann direkt in einem Script verwendet werden und entspricht in diesem Fall BarsArray [0] (siehe Bars.GetNextSessionTimeSpan).

Eigenschaften werden immer mit einem Punkt hinter dem Objekt (in diesem Falle Bars, der Liste der Kerzen) angegeben.

Bars.Count

Bars.CurrentSessionBeginTime

Bars.CurrentSessionEndTime

Bars.GetBar

Bars.GetBarIndex

Bars.GetBarsAgo

Bars.GetByIndex

Bars.GetClose

Bars.GetHigh

Bars.GetLow

Bars.GetNextSessionTimeSpan

Bars.GetOpen

Bars.GetSessionBegin

Bars.GetTime

Bars.GetVolume

Bars.Instrument

Bars.IsEod

Bars.IsFalling

Bars.IsFirstBarInSession

Bars.IsGrowing

Bars.IsIntraday

Bars.IsNtb

Bars.SessionBreak

Bars.LastBarCompleteness

Bars.NextSessionBeginTime

Bars.NextSessionEndTime

Bars.TailBottom

Bars.TailTop

Bars.TicksCountForLastBar

Bars.TicksCountInTotal

Bars.TimeFrame

BarsCountForSession

IsProcessingBarIndexLast

Innerhalb von OnCalculate() können alle Eigenschaften verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Funktion OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden. Falls diese Eigenschaften ausserhalb von OnCalculate() verwendet werden, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Bars.Count

Beschreibung

Bars.Count liefert die Anzahl der Bars in einer Datenreihe.

Siehe auch weitere Eigenschaften von Bars.

Rückgabewert

Typ int Anzahl der Bars

Verwendung

Bars.Count

Weitere Informationen

Der Wert von ProcessingBarIndex kann immer nur kleiner oder gleich Bars.Count - 1 sein.

Wenn in AgenaTrader angegeben wurde, wieviel Bars in einen Chart geladen werden sollen, entspricht der Wert von Bars.Count genau dieser Einstellung. Im Beispiel unten würde Bars.Count 500 liefern.

Bars.Count

Beispiel

Print ("Es stehen insgesamt" + Bars.Count + "Bars zur Verfügung.");

Bars.CurrentSessionBeginTime

Beschreibung

Bars.CurrentSessionBeginTime liefert das Datum und die Uhrzeit des Beginns der aktuell laufenden Handelssitzung.

Datum und Uhrzeit für den Beginn der aktuellen Handelssitzung werden auch dann korrekt angegeben, wenn die Funktion von einem Bar in der Vergangenheit aufgerufen wird.

Parameter

keine

Rückgabewert

Typ DateTime

Verwendung

Bars.GetSessionBegin

Weitere Informationen

Die Uhrzeit des zurückgegebenen Wertes entspricht der im MarketEscort angegebenen Startzeit der Handelssitzung des jeweiligen Handelsplatzes. Der für den Wert verwendete Handelsplatz wird im Instrumet Escort eingestellt und kann in AgenaSript mit der Funktion Instrument.Exchange ermittelt.

Bars.CurrentSessionBeginTime

Beispiel

Print("Die laufende Handelssitzung hat um  " + Bars.CurrentSessionBeginTime );

Bars.CurrentSessionEndTime

Beschreibung

Bars.CurrentSessionEndTime liefert das Datum und die Uhrzeit für das Ende der aktuell laufenden Handelssitzung. Datum und Uhrzeit für das Ende der aktuellen Handelssitzung werden auch dann korrekt angegeben, wenn die Funktion von einem Bar in der Vergangenheit aufgerufen wird.

Parameter

keine

Rückgabewert

Typ DateTime

Verwendung

Bars.GetSessionEnd

Weitere Informationen

Die Uhrzeit des zurückgegebenen Wertes entspricht der im MarketEscort angegebenen Endezeit der Handelssitzung des jeweiligen Handelsplatzes. Der für den Wert verwendete Handelsplatz wird im Instrumet Escort eingestellt und kann in AgenaSript mit der Funktion Instrument.Exchange ermittelt werden.

Bars.CurrentSessionEndTime

Beispiel

Print("Die laufende Handelssitzung endet um " + Bars.CurrentSessionEndTime);

Bars.GetBar

Beschreibung

Bars.GetBar liefert den ersten Bars (vom ältesten zum jüngsten), der dem übergebenen Datum bzw. der Uhrzeit entspricht.

Siehe auch Bars.GetBarsAgo, Bars.GetByIndex, Bars.GetBarIndex.

Parameter

Typ DateTime

Rückgabewert

Typ IBar Bar-Objekt, des dem Zeitstempel entsprichenden Bars

bei Zeitstempel älter als der älteste Bar: 0 (Null) bei Zeitstempel jünger als der letzte Bar: Index des letzten Bars

Verwendung

Bars.GetBar(DateTime time)

Weitere Informationen

zur Indizierung von Bars siehe Funktionsweise, Bars

zur Benutzung von DateTime siehe http://msdn.microsoft.com/de-de/library/system.datetime.aspx

Beispiel

Print ("Der Schlusskurs für den 01.03.2012 um 18:00:00 Uhr war " + Bars.GetBar(new DateTime(2012, 01, 03, 18, 0, 0)).Close);

Bars.GetBarIndex

Beschreibung

Bars.GetBarIndex liefert den Index eines Bars. Übergeben werden kann der Methode entweder ein Bar-Objekt oder ein DateTime-Objekt.

Siehe Bars.GetBar, Bars.GetBarsAgo, Bars.GetByIndex.

Parameter

Typ IBar bar oder Typ DateTime

Rückgabewert

Typ int der zu dem übergebenen Bar-Objekt bzw. dem übergebenen DateTime-Objekt gehörende Bar-Index

Verwendung

Bars.GetBarIndex (IBar bar)
Bars.GetBarIndex (DateTime dt)

Weitere Informationen

zur Indizierung von Bars siehe Funktionsweise, Bars

Beispiel

int barsAgo = 5;
IBar bar = Bars.GetBar(Time[barsAgo]);
Print(barsAgo + " und " + Bars.GetBarIndex(bar) + " sind in diesem Beispiel gleich.");

Bars.GetBarsAgo

Beschreibung

Bars.GetBarsAgo liefert den Index des ersten Bars (vom ältesten zum jüngsten), der dem übergebenen Datum bzw. der Uhrzeit entspricht.

Siehe auch:: Bars.GetBar, Bars.GetByIndex, Bars.GetBarIndex.

Parameter

Typ DateTime

Rückgabewert

Typ int Index des Bars, der dem Zeitstempel als erstes entspricht.

bei Zeitstempel älter als der älteste Bar: 0 (Null) bei Zeitstempel jünger als der letzte Bar: Index des letzten Bars

Verwendung

Bars.GetBarsAgo(DateTime time)

Weitere Informationen

zur Indizierung von Bars siehe Funktionsweise, Bars

zur Benutzung von DateTime siehe http://msdn.microsoft.com/de-de/library/system.datetime.aspx

Beispiel

Print("Der Bar für den 01.03.2012 um 18:00:00 Uhr hat den Index" + Bars.GetBarsAgo(new DateTime(2012, 01, 03, 18, 0, 0)));

Bars.GetByIndex

Beschreibung

Bars.GetByIndex liefert das zu einem übergebenen Index gehörende Bar-Objekt.

Siehe Bars.GetBar, Bars.GetBarsAgo, Bars.GetBarIndex.

Parameter

Typ int Index

Rückgabewert

Typ IBar Bar-Objekt zu dem übergebenen Index

Verwendung

Bars.GetByIndex (int Index)

Weitere Informationen

zur Indizierung von Bars siehe Funktionsweise, Bars

Beispiel

Print(Close[0] + " und " + Bars.GetByIndex(ProcessingBarIndex).Close + " sind in diesem Beispiel gleich.");

Bars.GetClose

Bars.GetClose(int index) – siehe Bars.GetOpen.

Bars.GetHigh

Bars.GetHigh(int index) – siehe Bars.GetOpen.

Bars.GetLow

Bars.GetLow(int index) – siehe Bars.GetOpen.

Bars.GetNextSessionTimeSpan

Beschreibung

Bars.GetNextSessionTimeSpan liefert jeweils Datum und Uhrzeit von Beginn und Ende der nächsten Handelssitzung.

Siehe Bars.CurrentSessionBeginTime, Bars.CurrentSessionEndTime, Bars.NextSessionBeginTime, Bars.NextSessionEndTime.

Parameter

DateTime time Datum bzw. Uhrzeit, für die die Daten der folgenden Handelssitzung gesucht werden
iBars bars Barobjekt, für das die Daten der folgenden Handelssitzung gesucht werden
int barsago Anzahl der Tage in der Vergangenheit, für die die Daten der folgenden Handelssitzung gesucht werden

Rückgabewert

DateTime sessionBegin DateTime sessionEnd

Hinweis: Das Datum von Beginn und Ende sind jeweils für eine Handelssitzung zusammengehörend. Wenn das übergebene Datum dem Ende-Datum der aktuellen Handelssitzung entspricht, kann das zurückgegebene Datum für den Beginn der Handelssitzung bereits in der Vergangenheit liegen. Es wird in diesem Fall nicht das Datum der nächstfolgenden Handelssitzung zurückgegeben.

Verwendung

Bars.GetNextSessionTimeSpan(Bars bars, int barsAgo, out DateTime sessionBegin, out DateTime sessionEnd)
Bars.GetNextSessionTimeSpan(DateTime time, out DateTime sessionBegin, out DateTime sessionEnd)

Weitere Informationen

Die beiden Signaturen liefern nicht notwendigerweise auch die gleichen Ergebnisse. Bei Verwendung der Bar-Signatur wird der ubergebene Bar daraufhin untersucht, zu welchem Session-Template er gehört. Beginn und Ende der nächsten Session werden dann diesem Template entnommen.

Bei Verwendung der Zeit-Signatur wierden Datum und Uhrzeit des übergebenen Bars genutzt, um die Daten der aktuellen und damit der folgenden Session zu berechnen.

Wenn bei Verwendung der Zeit-Signatur ein Zeitstempel übergeben wird, der exakt einer Beginn bzw. Endezeit einer Session entspricht, werden Beginn und Ende der davorliegenden Session zurückgegeben, d.h. der Zeitstempel wird als "in der Session enthalten" angesehen, selbst wenn der fragliche Bar bereits in einer neuen Session enthalten ist. Um dieses Verhaten sicher auszuschließen, ist die Verwendung der Bar-Signatur empfohlen.

zur Benutzung von DateTime siehe http://msdn.microsoft.com/de-de/library/system.datetime.aspx

Beispiel

DateTime sessionBegin;
DateTime sessionEnd;
protected override void OnCalculate()
{
Bars.GetNextSessionTimeSpan(Bars, 0, out sessionBegin, out sessionEnd);
Print("Session Start: " + sessionBegin + " Session End: " + sessionEnd);
}

Bars.GetOpen

Beschreibung

Die folgenden Methoden sind aus Gründen der Kompatibilität vorhanden.

  • Bars.GetOpen(int index) liefert das Open des mit <index> referenzierten Bars.
  • Bars.GetHigh(int index) liefert das High des mit <index> referenzierten Bars..
  • Bars.GetLow(int index) liefert das Low des mit <index> referenzierten Bars.
  • Bars.GetClose(int index) liefert das Close des mit <index> referenzierten Bars.
  • Bars.GetTime(int index) liefert das Zeitstempel des mit <index> referenzierten Bars.
  • Bars.GetVolume(int index) liefert das Volumen des mit <index> referenzierten Bars.

Achtung: Die Indizierung weicht von der sonst verwendeten Indexing, Bars ab. Hier beginnt die Indizierung mit 0 am ältesten Bar (links im Chart) und endet mit dem jüngsten Bar rechts im Chart (=Bars.Count-1).

Die Indizierungen können leicht (in beiden Richtungen!) wie folgt umgerechnet werden:

private int Convert(int idx)
{
return Math.Max(0,Bars.Count-idx-1-(CalculateOnClosedBar?1:0));
}

Parameter

int index (0 .. Bars.Count-1)

Rückgabewert

Typ double für GetOpen, GetHigh, GetLow, GetClose und GetVolume

Typ DateTime für GetTime

Bars.GetSessionBegin

Beschreibung

Bars.GetSessionBegin liefert das Datum und die Uhrzeit des Beginns einer bestimmten Handelssitzung. Datum und Uhrzeit für den Beginn der aktuellen Handelssitzung werden auch dann korrekt angegeben, wenn die Funktion von einem Bar in der Vergangenheit aufgerufen wird. Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ DateTime

Verwendung

Bars.GetSessionBegin(DateTime dt)

Weitere Informationen

Die Uhrzeit des zurückgegebenen Wertes entspricht der im MarketEscort angegebenen Startzeit der Handelssitzung des jeweiligen Handelsplatzes. Der für den Wert verwendete Handelsplatz wird im Instrumet Escort eingestellt und kann in AgenaSript mit der Funktion Instrument.Exchange ermittelt werden.

Beispiel

Print("Die Handelssitzung am 25.03.2015 hat um "+ Bars.GetSessionBegin(new DateTime(2015, 03, 25)) + " begonnen.");
}

Bars.GetTime

Bars.GetTime(int index) – siehe Bars.GetOpen.

Bars.GetVolume

Bars.GetVolume(int index) – siehe Bars.GetOpen.

Bars.Instrument

Beschreibung

Bars.Instrument liefert ein Instrument-Objekt, für das im Chart dargestellte Handelsinstrument.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ Instrument

Verwendung

Bars.Instrument

Weitere Informationen

Für weitere Informationen zu Handelsinstrumenten siehe unter Instrument.

Beispiel

// beide Ausgaben liefern das gleiche Ergebnis
Print("Das aktuell dargestellte Handelsinstrument hat das Symbol " + Bars.Instrument);
Instrument i = Bars.Instrument;
Print("Das aktuell dargestellte Handelsinstrument hat das Symbol " + i.Symbol);

Bars.IsEod

Beschreibung

Mit Bars.IsEod kann überprüft werden, ob es sich um End-of-Day-Bars handelt.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ bool

Verwendung

Bars.IsEod

More Information

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnCalculate ()verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (bars! = Null) ausgeführt werden.

Beispiel

Print("Die Bars sind Eod: " + Bars.IsEod);

Bars.IsFalling

Beschreibung

Bar-Eigenschaften, die verwendet werden, wenn Bar herunterfällt.

Parameter

keine

Rückgabewert

keine

Beispiel

Bars[0].IsFalling;

Bars.IsFirstBarInSession

Beschreibung

Mit Bars.IsFirstBarInSession kann festgestellt werden, ob der aktuelle Bar der erste Bar einer Handelssitzung ist.

Siehe auch weitere Eigenschaften von Bars.

Rückgabewert

Typ bool

true: Der Bar ist der erste Bar einer Handelssitzung false: Der Bar ist nicht der erste Bar einer Handelssitzung

Verwendung

Bars.IsFirstBarInSession

Weitere Informationen

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden. Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

if (Bars.IsFirstBarInSession)
Print ("Die aktuelle Handelsitzung hat um" + Time [0]);

Bars.isGrowing

Beschreibung

Bar-Eigenschaften verwendet, wenn Bar aufwächst.

Parameter

keine

Rückgabewert

keine

Beispiel

Bars[0].isGrowing;

Bars.IsIntraday

Beschreibung

Mit Bars.IsIntraday kann überprüft werden, ob es sich um reine Intraday-Bars handelt. Entweder mit Berücksichtigung von Ticks - Bars.IsIntraday.

Rückgabewert

bool

Er gibt "true" zurück, wenn TimeFrame intra-day (z. B. 1 min, 15 min, 1 h usw.) und "false" in anderen Fällen ist.

Verwendung

Bars.IsIntraday

Beispiel

if(Bars.IsIntraday) {
    Print("TimeFrame is Intraday.");
} else {
    Print("TimeFrame is not Intraday.");
}

Bars.IsNtb

Beschreibung

Mit Bars.IsNtb kann überprüft werden, ob es sich um Not-Time-Based-Bars handelt. Bei Ntb-Bars handelt es sich beispielsweise um Point & Figure oder Renko Charts. Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ bool

Verwendung

Bars.IsNtb

Weitere Informationen

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden. Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

Print("Die angezeigten Bars sind Ntb:" + Bars.IsNtb);

Bars.IsSessionBreak

Beschreibung

Mit Bars.IsSessionBreak kann ermittelt werden, ob die Bars innerhalb der laufenden Handelssitzung in den im Marktplatz-Escort definierten Handelspausen liegen.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ bool

Verwendung

Bars.IsSessionBreak

Weitere Informationen

Bars.CurrentSessionEndTime

Beispiel

if (Bars.IsSessionBreak)
{
Print("Die Börse Xetra hat gerade eine Handelspause.");
}

Bars.LastBarCompleteness

Beschreibung

Bars.LastBarCompleteness liefert einen Wert, der angibt, zu wieviel Prozent ein Bar bereits fertiggestellt ist. Ein Bar in der Zeiteinheit 10 Minuten ist z.B. nach 5 Minuten genau zu 50% fertig.

Für nicht-zeitbasierte Chartarten (Kagi, LineBreak, Renko, Range, P&F usw.) und während eines Backtests liefert die Eigenschaft immer eine 0.

Rückgabewert

double

als Prozentwert, d.h. für 30% wird 0.3 zurückgegeben-

Verwendung

Bars.LastBarCompleteness

Weitere Informationen

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

// Ein 60 Min. Chart wird intraday beobachtet.
// Jeweils 5 Min. bevor der aktuelle Bar schließt,
// soll ein akustisches Signal ausgegeben werden.
// 55 Min. entsprechen 92%

bool remind = false;
protected override void OnCalculate()
{
if (FirstTickOfBar) remind = true;
if (remind && Bars.LastBarCompleteness >= 0.92)
{
remind = false;
PlaySound("Alert1");
}
}

Bars.NextSessionBeginTime

Beschreibung

Bars.NextSessionBeginTime liefert das Datum und die Uhrzeit des Beginns der auf die aktuell laufende Handelssitzung folgenden Sitzung. Datum und Uhrzeit für den Beginn der nächsten Handelssitzung werden auch dann korrekt angegeben, wenn die Funktion von einem Bar in der Vergangenheit aufgerufen wird.

Parameter

keine

Rückgabewert

Typ DateTime

Verwendung

Bars.GetSessionNextBegin

Weitere Informationen

Die Uhrzeit des zurückgegebenen Wertes entspricht der im MarketEscort angegebenen Startzeit der Handelssitzung des jeweiligen Handelsplatzes. Der für den Wert verwendete Handelsplatz wird im Instrumet Escort eingestellt und kann in AgenaSript mit der Funktion Instrument.Exchange ermittelt werden.

Bars.NextSessionBeginTime

Beispiel

Print("Die nächste Handelssitzung beginnt um " + Bars.NextSessionBeginTime);

Bars.NextSessionEndTime

Beschreibung

Bars.NextSessionEndTime liefert das Datum und die Uhrzeit für das Ende der auf die aktuell laufende Handelssitzung folgenden Sitzung. Datum und Uhrzeit für das Ende der nächsten Handelssitzung werden auch dann korrekt angegeben, wenn die Funktion von einem Bar in der Vergangenheit aufgerufen wird. Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ DateTime

Verwendung

Bars.GetSessionNextEnd

Weitere Informationen

Die Uhrzeit des zurückgegebenen Wertes entspricht der im MarketEscort angegebenen Endezeit der Handelssitzung des jeweiligen Handelsplatzes. Der für den Wert verwendete Handelsplatz wird im Instrumet Escort eingestellt und kann in AgenaSript mit der Funktion Instrument.Exchange ermittelt werden.

Bars.NextSessionEndTime

Beispiel

Print("Die nächste Handelssitzung endet um " + Bars.NextSessionEndTime);

Bars.TailBottom

Beschreibung

Mit dieser Eigenschaft ist es möglich die Höhe des unteren Dochtes der Kerze zu ermitteln.

Parameter

keine

Rückgabewert

keine

Verwendung

Bars[0].TailBottom;

Beispiel

Print("Die Höhe des unteren Dochtes ist: " + Bars.TailBottom);

Bars.TailTop

Beschreibung

Mit dieser Eigenschaft ist es möglich die Höhe des oberen Dochtes der Kerze zu ermitteln.

Parameter

keine

Rückgabewert

keine

Verwendung

Bars[0].TailTop;

Beispiel

Print("Die Höhe des oberen Dochtes ist: " + Bars.TailTop);

Bars.TicksCountForLastBar

Beschreibung

Bars.TicksCountForLastBar liefert die Gesamtanzahl der in einem Bar enthaltenen Ticks.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ int

Verwendung

Bars.TicksCountForLastBar

Weitere Informationen

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

Print("Der aktuelle Bar besteht aus " + Bars.TicksCountForLastBar + " Ticks.");

Bars.TicksCountInTotal

Beschreibung

Bars.TicksCountInTotal liefert die Gesamtzahl aller Ticks von dem Moment an, von dem die Funktion aufgerufen wird.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ int

Verwendung

Bars.TicksCountInTotal

Weitere Informationen

Der Datentyp int hat einen positiven Wertebereich von 2147483647. Wenn 10 Ticks je Sekunde angenommen werden, gibt es auch nach 2 Handelsmonaten bei einem 24h-Handel noch kein Überlauf.

Innerhalb von OnCalculate()kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

//Anwendung in einem 30 Minuten Chart
Print("Die Gesamtanzahl der gelieferten Ticks in diesem Wert beträgt " + Bars.TicksCountInTotal);

Bars.TimeFrame

Beschreibung

Bars.TimeFrame liefert ein TimeFrame-Objekt, das Informationen zum aktuell verwendeten Zeiteinheit enthält.

Siehe auch weitere Eigenschaften von Bars.

Parameter

keine

Rückgabewert

Typ ITimeFrame

Verwendung

Bars.TimeFrame

Weitere Informationen

Für weitere Informationen zum TimeFrame-Objekt siehe unter TimeFrame.

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnCalculate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null) ausgeführt werden.

Beispiel

//Anwendung in einem 30 Minuten Chart
TimeFrame tf = (TimeFrame) Bars.TimeFrame;
Print(Bars.TimeFrame); //liefert "30 Min"
Print(tf.Periodicity); // liefert "Minute"
Print(tf.PeriodicityValue); // liefert "30"

BarsCountForSession

Beschreibung

Bars.BarsCountForSession liefert die Anzahl der Bars, die seit dem Beginn der aktuellen Handelssitzung entstanden sind.

Siehe auch weitere Eigenschaften von Bars.

Rückgabewert

Typ int Anzahl der Bars

Ein Wert von -1 deutet auf ein Problem bei der Ermittlung des Sessionbeginns hin.

Verwendung

Bars.BarsCountForSession

Weitere Informationen

Innerhalb von OnCalculate() kann diese Eigenschaft verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Methode OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Bars Objekt vorhanden.

Falls diese Eigenschaft ausserhalb von OnBarUpdate() verwendet wird, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars!= null) ausgeführt werden.

Beispiel

Print ("Seit dem Start der letzten Handelssitzung sind" + Bars.BarsCountForSession + "Bars entstanden.");

ProcessingBarIndexLast

Beschreibung

Gibt an, ob der aktuelle Bar zuletzt berechnet wurde.

Parameter

keine

Rückgabewert

Typ bool

Verwendung

ProcessingBarIndexLast

Weitere Informationen

Verwendet für komplizierte Berechnung auf einem letzten Bar

Beispiel

protected override void OnCalculate()
        {
            base.OnCalculate();
            if (!IsProcessingBarIndexLast)
                return;
            bool isUpdated;
}

Collections

ChartDrawings

Beschreibung

ChartDrawings ist eine Collection, die alle Zeichenobjekte im Chart enthält. In ChartDrawings werden sowohl dem Chart manuell hinzugefügte Zeichenobjekte, als auch von einem Script gezeichnete Objekte aufgenommen.

Der Index für ChartDrawings ist der eindeutige Name der Zeichenobjekte (string tag).

Verwendung

ChartDrawings [string tag]

Beispiele

Hinweis: Um die Interface-Definitionen nutzen zu können, muß in den Using-Anweisungen

using AgenaTrader.Plugins;
// Anzahl der Zeichenobjekte auf dem Chart und deren Tags ausgeben
Print("Auf dem Chart befinden sich  " + ChartDrawings.Count + " Zeichenobjekte");
foreach (IDrawObject draw in ChartDrawings) Print(draw.Tag);
//Eine schwarze Trendlinie zeichnen ...
AddChartLine("MyLine", true, 10, Close[10], 0, Close[0], Color.Black, DashStyle.Solid, 3);
/ ... und die Farbe auf Rot ändern
ITrendLine line = (ITrendLine) ChartDrawings["MyLine"];
if (line != null) line.Pen.Color = Color.Red;
// alle vertikalen Linien in Chart auf Linienstärke 3 setzen,
// und nicht verschiebbar und nicht editierbar machen
foreach (IDrawObject draw in ChartDrawings)
if (draw is IVerticalLine)
{
IVerticalLine vline = (IVerticalLine) draw;
vline.IsLocked = true;
vline.Editable = false;
vline.Pen.Width = 3;
}

InSeries

Beschreibung

InSeries ist ein DatenSerien Objekt, in dem die Eingangsdaten für einen Indikator bzw. eine Strategie enthalten sind.

Wird ein Indikator ohne explizite Angabe von Eingangsdaten aufgerufen, wird immer der Schlusskurs (Close) der aktuell im Chart geladenen Kursdaten verwendet.

Bei einem Aufruf von SMA(20) wird der gl. Durchschnitt auf die Schlusskurse der aktuellen Chart-Kursdaten berechnet (dies entspricht SMA(Close, 20).

InSeries[0] = Close[0].

Bei dem Aufruf von SMA(High, 20) werden die Höchstkurse der geladenen Daten für die Berechnung des gl. Durchschnitts verwendet.

InSeries[0] = High[0].

So kann jede beliebige Datenreihe als Input für einen Indikator verwendet werden.

double d = RSI(SMA(20), 14, 3)[0]; berechnet beispielsweise den 14-Perioden-RSI über die SMA(20) Werte als Eingangsdatenreihe. InSeries[0] = SMA(20)[0].

Verwendung

InSeries
InSeries[int barsAgo]

Beispiele

Print("Die Eingangsdaten für den Indikator sind " + InSeries[0]);

Lines

Beschreibung

Lines ist eine Collection, die die LevelLine Objekte eines Indikators enthält.

Wenn einem Indikator mit der Add() Methode ein Line-Objekt hinzugefügt wird, wird dieses automatisch der Collection Lines hinzugefügt.

Die Reihenfolge der Add-Befehle bestimmt dabei auch die Sortierung in Lines. Der erste Aufruf von Add() erzeugt Lines[0], der nächste Lines[1] usw.

Siehe auch OutputDescriptor.

Verwendung

Lines[int index]

Beispiele

// Add "using System.Drawing.Drawing2D;" for DashStyle
protected override void OnInit()
{
Add(new LevelLine(Color.Blue, 70, "Upper")); // gespeichert in Lines[0]
Add(new LevelLine(Color.Blue, 30, "Lower")); // gespeichert in Lines[1]
}
protected override void OnCalculate()
{
// Wenn RSI über 70, Eigenschaften der Linie ändern
if (RSI(14 ,3) >= 70)
{
Lines[0].Width = 3;
Lines[0].Color = Color.Red;
Lines[0].DashStyle = DashStyle.Dot;
}
else
{
Lines[0].Width = 1;
Lines[0].Color = Color.Blue;
Lines[0].DashStyle = DashStyle.Solid;
}
}

PlotColors

Beschreibung

PlotColors ist eine Collection, die die ColorSeries aller Plot-Objekte enthält.

Wenn einem Indikator mit der Add() Methode ein Plot hinzugefügt wird, wird automatisch auch ein ColorSeries-Objekt erzeugt und der Collection PlotColors hinzugefügt.

Die Reihenfolge der Add-Befehle bestimmt dabei auch die Sortierung in PlotColors. Der erste Aufruf von Add() erzeugt PlotColors[0], der nächste PlotColors[1] usw.

Verwendung

PlotColors[int PlotIndex][int barsAgo]

Weitere Informationen

Informationen zur Klasse Collection: http://msdn.microsoft.com/en-us/library/ybcx56wz%28v=vs.80%29.aspx

Beispiel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using AgenaTrader.API;
namespace AgenaTrader.UserCode
{
[Description("PlotColor Demo")]
public class PlotColorsDemo : UserIndicator
{
public DataSeries SMA20 { get {return Outputs[0];} }
public DataSeries SMA50 { get {return Outputs[1];} }
public DataSeries SMA100 { get {return Outputs[2];} }
private Pen pen;
protected override void OnInit()
{
// Linienstärke (Width) auf 4 einstellen
pen = new Pen(Color.Empty, 4);
 // Dem Chart drei Plots mit der def. Linienstärke hinzufügen
Add(new OutputDescriptorOutputDescriptor(pen, OutputSeriesDisplayStyle.LevelLine, "SMA20" )); //attached to PlotColors[0]
Add(new OutputDescriptor(pen, OutputSeriesDisplayStyle.LevelLine, "SMA50" )); //attached to PlotColors[1]
Add(new OutputDescriptor(pen, OutputSeriesDisplayStyle.LevelLine, "SMA100")); //attached to PlotColors[2]
IsOverlay = true;
}
protected override void OnCalculate()
{
 // Den drei Plots Werte zuweisen
SMA20.Set (SMA(20) [0]);
SMA50.Set (SMA(50) [0]);
SMA100.Set(SMA(100)[0]);
// Farben je nach Kursverlauf ändern
if (IsSerieRising(Close))
{
PlotColors[0][0] = Color.LightGreen;
PlotColors[1][0] = Color.Green;
PlotColors[2][0] = Color.DarkGreen;
}
else if (IsSerieFalling(Close))
{
PlotColors[0][0] = Color.LightSalmon;
PlotColors[1][0] = Color.Red;
PlotColors[2][0] = Color.DarkRed;
}
else
{
PlotColors[0][0] = Color.LightGray;
PlotColors[1][0] = Color.Gray;
PlotColors[2][0] = Color.DarkGray;
}
}
}
}

OutputDescriptor

Beschreibung

OutputDescriptor ist eine Collection, die die Plot-Objekte eines Indikators enthält.

Wenn einem Indikator mit der Add()-Methode ein Plot-Objekt hinzugefügt wird, wird dieses automatisch der Collection Plots hinzugefügt.

Die Reihenfolge der Add-Befehle bestimmt dabei auch die Sortierung in Plots. Der erste Aufruf von Add() erzeugt OutputDescriptor [0], der nächste OutputDescriptor[1]\ usw.

Siehe auch Lines.

Verwendung

OutputDescriptor[int index]

Beispiele

protected override void OnInit()
{
 AddOutput(new OutputDescriptor(Color.FromKnownColor(KnownColor.Black), "MySMA 20")); // saved to OutputDescriptor[0]
}
protected override void OnCalculate()
{
Value.Set(SMA(20)[0]);
// Wenn Kurs über SMA, Plot grün färben, sonst rot
if (Close[0] > SMA(20)[0])
    OutputDescriptor[0].PlotColor = Color.Green;
else
    OutputDescriptor[0].PlotColor = Color.Red;
}

Values

Beschreibung

Values ist eine Collection, die die DataSeries-Objekte eines Indikators enthält.

Wenn einem Indikator mit der Add()-Methode ein Plot hinzugefügt wird, wird automatisch auch ein Value-Objekt erzeugt und der Collection Values hinzugefügt.

Die Reihenfolge der Add-Befehle bestimmt dabei auch die Sortierung in Values. Der erste Aufruf von Add() erzeugt Values[0], der nächste Values[1] usw.

Value ist immer identisch mit Values[0].

Verwendung

Outputs[int index]
Outputs[int index][int barsAgo]

Weitere Informationen

Die für eine Collection bekannten Methoden Set(), Reset() und Count() sind auf Value bzw. Values anwendbar.

Informationen zur Klasse Collection: http://msdn.microsoft.com/en-us/library/ybcx56wz%28v=vs.80%29.aspx

Beispiel

// Überpüfung des zweiten Indikatorwertes (d.h. der sekundären DatenSerie)
// von vor einem Bar
// und in Abhängigkeit davon Setzen des aktuellen Indikatorwertes
if (Outputs[1][1] < High[0] - Low[0])
Value.Set(High[0] - Low[0]);
else
Value.Set(High[0] - Close[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 Opens

High Highs

Low Lows

Close Closes

Median Medians

Typical Typicals

Weighted Weighteds

Time Times

TimeFrame TimeFrames

Volume Volumes

Open

Beschreibung

Open ist eine DataSeries 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 CalculateOnClosedBar.

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]));

Opens

Beschreibung

Opens ist ein Array von Datenserien, welches alle Open-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:

Opens[0] die Open-Dataseries der Chart-Zeiteinheit Opens[1] die Open-Dataseries aller Bars auf Tagesbasis Opens[2] die Open-Dataseries aller Bars auf Wochenbasis.

Opens[0][0] entspricht Open[0].

Siehe auch MultiBars

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries (s. Bars) barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Opens[int barSeriesIndex]
Opens[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

High

Description

High ist eine DataSeries vom Typ DataSeries, in der die historischen Höchstkurse gespeichert sind.

Parameter

barsAgo Indexwert (s. Bars)

Verwendung

High
High[int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

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 prices: " + Instrument.Round2TickSize(SMA(High, 14)[0]));

Highs

Beschreibung

Highs ist ein Array von [DataSeries][1] welches alle High-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.

Highs[0] die High-Dataseries der Chart-Zeiteinheit Highs[1] die High-Dataseries aller Bars auf Tagesbasis Highs[2] die High-Dataseries aller Bars auf Wochenbasis.

Highs[0][0] entspricht High[0].

Siehe auch MultiBars.

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries (s. Bars) barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Highs[int barSeriesIndex]
Highs[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

Low

Beschreibung

Low ist eine DataSeries 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 CalculateOnClosedBar.

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 high prices: " + Instrument.Round2TickSize(SMA(Low, 14)[0]));

Lows

Beschreibung

Lows ist ein Array von [DataSeries][1] welches alle Low-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.

Lows[0] die Low-Dataseries der Chart-Zeiteinheit Lows[1] die Low-Dataseries aller Bars auf Tagesbasis Lows[2] die Low-Dataseries aller Bars auf Wochenbasis.

Lows[0][0] entspricht Low[0].

Siehe auch MultiBars.

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Lows[int barSeriesIndex]
Lows[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

Close

Beschreibung

Close ist eine DataSeries 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 CalculateOnClosedBar.

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) calculated using the closing prices: " + Instrument.Round2TickSize(SMA(Close, 14)[0]));
// Close kann auch weggelassen werden, da es per Default verwendet wird.
Print("SMA(14) calculated using the closing prices: " + Instrument.Round2TickSize(SMA(14)[0]));

Closes

Beschreibung

Closes ist ein Array von [DataSeries][1] welches alle Low-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.

Closes[0] die Close-Dataseries der Chart-Zeiteinheit Closes[1] die Close-Dataseries aller Bars auf Tagesbasis Closes[2] die Close-Dataseries aller Bars auf Wochenbasis.

Closes[0][0] entspricht Close[0].

Siehe auch MultiBars.

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Closes[int barSeriesIndex]
Closes[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

Median

Beschreibung

Median ist eine DataSeries vom Typ DataSeriesin der die historischen Median-Werte gespeichert sind.

Der Median-Preis eines Bars ergibt sich aus (High + Low) / 2.

Siehe auch Typical und Weighted.

Parameter

barsAgo Indexwert (s. Bars)

Verwendung

Median
Median[int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

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) calculated using the median prices: " + Instrument.Round2TickSize(SMA(Median, 14)[0]));

Medians

Beschreibung

Medians ist ein Array von [DataSeries][1] welches alle Median-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.

Medians[0] die Median-Dataseries der Chart-Zeiteinheit Medians[1] die Median-Dataseries aller Bars auf Tagesbasis Medians[2] die Median-Dataseries aller Bars auf Wochenbasis.

Medians[0][0]entspricht Medians[0].

Siehe auch MultiBars.

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Medians[int barSeriesIndex]
Medians[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Informationen zu Median, Typical und Weighted: http://www.investopedia.com/terms/m/median.asp

Beispiel

Siehe Beispiel unter Multibars.

Typical

Beschreibung

Typical ist eine DataSeries vom Typ DataSeriesin der die historischen Typical-Werte gespeichert sind.

Der Typical-Preis eines Bars ergibt sich aus (High + Low + Close) / 3.

Siehe auch Median und Weighted.

Parameter

barsAgo Indexwert (s. Bars)

Verwendung

Typical
Typical[int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Informationen zu Median, Typical und Weighted: https://technicianapp.com/resources/typical-price/

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) calculated using the typical price: " + Instrument.Round2TickSize(SMA(Typical, 14)[0]));

Typicals

Beschreibung

Typicals ist ein Array von Datenserien, welches alle Typical-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.

Typicals[0] die Typical-Dataseries der Chart-Zeiteinheit Typicals[1] die Typical-Dataseries aller Bars auf Tagesbasis Typicals[2] die Typical-Dataseries aller Bars auf Wochenbasis.

Typicals[0][0] entspricht Typicals[0].

Siehe auch MultiBars.

Parameter

barsAgo Indexwert der einzelnen Bars innerhalb der Dataseries barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

Typicals[int barSeriesIndex]
Typicals[int barSeriesIndex][int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

Weighted

Beschreibung

Weighted ist eine DataSeries vom Typ DataSeries, in der die historischen Weighted-Werte gespeichert.

Der Weighted-Preis eines Bars ergibt sich aus (high + low + 2*close) / gewichtet auf den Schlusskurs.

Siehe auch Median und Typical.

Parameter

barsAgo Indexwert (s. Bars)

Verwendung

Weighted[int barsAgo]

Weitere Informationen

Der zurückgegebene Wert ist abhängig von der Eigenschaft CalculateOnClosedBar.

Informationen zu Median, Typical und Weighted: http://www.stock-trading-infocentre.com/pivot-points.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) calculated using the weighted price: " + 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 CalculateOnClosedBar.

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 CalculateOnClosedBar.

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 der Chart-Zeiteinheit

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 CalculateOnClosedBar.

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 CalculateOnClosedBar.

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 CalculateOnClosedBar.

Beispiel

Siehe Beispiel unter Multibars.

TimeFrame

Beschreibung

TimeFrame ist ein Zeitrahmenobjekt. Diese Einstellung/Menüpunkt wird verwendet, um die aktuelle Zeiteinheit zu lesen, nicht um sie zu festzulegen

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]);

Instruments

"Instrument" bezeichnet einen handelbaren Wert, wie z.B. eine Aktie, einen ETF, einen Future, einen CFD usw.

Ein Instrument hat viele Eigenschaften, die in einem selbst erstellten AgenaScript verwendet werden können.

Instrument.Compare

Instrument.Currency

Instrument.Digits

Instrument.ETF

Instrument.Exchange

Instrument.Expiry

Instrument.GetCurrencyFactor

Instrument.InstrumentType

Instrument.MainSector

Instrument.Margin

Instrument.Name

Instrument.PointValue

Instrument.Round2TickSize

Instrument.Symbol

Instrument.TickSize

Innerhalb von OnCalculate() können diese Eigenschaften verwendet werden, ohne vorher auf Null-Reference testen zu müssen. Sobald die Funktion OnCalculate() von AgenaScript aufgerufen wird, ist immer auch ein Instrument-Objekt vorhanden. Falls diese Eigenschafte ausserhalb von OnCalculate(), verwendet werden, sollte vorher ein entsprechender Test auf Null-Reference z.B. mit if (Bars != null)

Instrument.Compare

Beschreibung

Die Funktion Instrument.Compare vergleicht 2 Kursdaten unter Berücksichtigung der richtigen Anzahl Nachkommastellen. Die kleinstmögliche Preisänderung wird durch den Wert TickSize angegeben. Diese Funktion vereinfacht den sonst etwas aufwändigeren Vergleich mit Hilfe von Floating-Point-Operationen.

Parameter

double value1 double value2

Rückgabewert

Typ int

1 - Kurs1 ist größer als Kurs2 -1 - Kurs1 ist kleiner als Kurs2 0 - Kurs1 und Kurs2 sind gleich

Verwendung

Instrument.Compare(double Value1, double Value2)

Weitere Informationen

Be aware this function compares prices based on TickSize. If the ticksize of your instrument is 0.01 these prices will be rounded and compared on 2 decimal digits. If you want a regular comparation of two numbers, you should use the operator "greater than" (>) or the operator "smaller than" (<).

More infomation about math.round()

Wenn TickSize z.B. 0,00001 ist, wie bei FX-Werten üblich, dann liefert

Compare(2, 1.99999) eine 1, d.h. 2 ist größer als 1.99999 Compare(2, 2.000001) eine 0, d.h. die Kurse sind gleich Compare(2, 1.999999) eine 0, d.h. die Kurse sind gleich Compare(2, 2.00001) eine -1, d.h. 2 ist kleiner als 2.00001.

Beispiel

Print(Instrument.Compare(2, 1.999999));

Instrument.Currency

Beschreibung

Instrument.Currency liefert ein Currencies-Objekt zurück, das die jeweilige Währung beinhaltet, in der das Instrument gehandelt wird.

Parameter

keine

Rückgabewert

eine Konstante vom Typ public enum Currencies

Verwendung

Instrument.Currency

Weitere Informationen

Übliche Währungen sind z.B. AUD, CAD, EUR, GBP, JPY oder USD.

Beispiel

Print(Instrument.Name + "wird in  " + Instrument.Currency + " gehandelt".);

Instrument.Digits

Beschreibung

Instrument.Digits liefert die Anzahl der Nachkommastellen, mit denen der Kurs des Instrument notiert wird.

Parameter

keine

Rückgabewert

int Digits

Verwendung

Instrument.Digits

Weitere Informationen

Aktie werden üblicherweise mit 2 Stellen nach dem Komma gehandelt. Bei Forex sind es je nach Datenanbieter 4 oder 5 Stellen.

Die Funktion findet u.a. Verwendung für das Formatieren von Ausgaben oder zur Rundung von Kursdaten. Siehe auch TickSize und Instrument.Round2Ticks, Instrument.Round2TickSize.

Ausführliche Anleitung zum: Formatieren von Zahlen..

Beispiel

Print("Der Kurs von  " +Instrument.Name + " wird mit einer Genauigkeit von" + Instrument.Digits +" Nachkommastellen angegeben.");

Instrument.ETF

Beschreibung

Instrument.ETF dient der Unterscheidung zwischen einer Aktie und einem ETF. Dies ist notwendig, da ETF's von den Börsen auch als "Stock" (dt. Aktie) angesehen werden..

Parameter

keine

Rückgabewert

Typ bool

Verwendung

Instrument.ETF

Weitere Informationen

Was ist ein ETF?

Wikipedia: http://de.wikipedia.org/wiki/Exchange-traded_fund

Beispiel

if (Instrument.InstrumentType == InstrumentType.Stock)
if (Instrument.ETF)
Print("Der Wert ist ein Exchange-traded Fund.");
else
Print("Der Wert ist eine Aktie.");

Instrument.Exchange

Beschreibung

Instrument.Exchange (Exchange = dt. Börse) liefert die Bezeichnung des Börsenhandelsplatzes für das aktuelle Instrument.

Parameter

keine

Rückgabewert

ein Exchange-Objekt vom Typ public enum Exchanges

Verwendung

Instrument.Exchange

Weitere Informationen

Übersicht Börsenhandelsplätze

Beispiel

Print("Das Instrument " + Instrument.Name +"  wird an der Börse " + Instrument.Exchange + " gehandelt.");

Instrument.Expiry

Beschreibung

Instrument.Expiry gibt das Datum (Monat und Jahr) des Ablauf eines Finanzinstrumentes an. Nur derivative Handelsinstrumente, wie Optionen oder Futures besitzen ein Ablaufdatum, das sog. Verfallsdatum.

Parameter

keine

Rückgabewert

Typ DateTime

Für Instrumente ohne Verfallsdatum wird Instrument.Expiry auf DateTime.MaxValue (= 31.12.9999 23.59:59) gesetzt.

Verwendung

Instrument.Expiry

Weitere Informationen

Das Verfallsdatum (Expiry) ist auch im Instrument Escort ersichtlich:

Instrument.Expiry

Beispiel

Print("Das Instrument " + Instrument.Name +" verfällt am " + Instrument.Expiry);

Instrument.GetCurrencyFactor

Beschreibung

Instrument.GetCurrencyFactor liefert einen Umrechnungsfaktor zurück, mit dessen Hilfe man den Kurs eines Instruments in die Währung des Accounts umrechnen kann.

Parameter

Typ Currencies

Rückgabewert

ein double

Verwendung

Instrument.GetCurrencyFactor(Currencies)

Weitere Informationen

Übliche Währungen sind z.B. AUD, CAD, EUR, GBP, JPY oder USD.

Beispiel

Protected override void OnCalculate()
{
   double currFactor = Instrument.GetCurrencyFactor(Account.Currency);
   Print(Close[0] + " in " + Instrument.Currency.ToString() + " = " + (Close[0] * currFactor) + " in " + Account.Currency.ToString());
}

Instrument.InstrumentType

Beschreibung

Instrument.InstrumentType liefert ein Typ-Objekt des Handelsinstrumentes.

Parameter

keine

Rückgabewert

Objekt vom Typ public enum InstrumentType

Verwendung

Instrument.InstrumentType

Weitere Informationen

Mögliche Werte sind: Future, Stock, Index, Currency, Option, CFD und Unknown. Einen Typ ETF gibt es nicht. ETF's sind vom Typ Stock, sieheInstrument.ETF.

Der Instrument-Typ ist auch im Instrument Escort ersichtlich:

Instrument.InstrumentType

Beispiel

Print("Das Instrument  " + Instrument.Name + "  ist vom Typ " + Instrument.InstrumentType);

Instrument.MainSector

Beschreibung

Instrument.MainSector liefert den Hauptsektor des Handelsinstrumentes zurück.

Parameter

keine

Rückgabewert

String

Verwendung

Instrument.MainSector

Weitere Informationen

Der Hauptsektor ist auch im Instrument Escort ersichtlich: Instrument.InstrumentType

Beispiel

Print("Das Instrument " + Instrument.Name + " ist im Sektor " + Instrument.MainSector + " tätig.");

Instrument.Margin

Beschreibung

Instrument.Margin liefert die erforderliche Margin des Handelsinstrumentes zurück.

Parameter

keine

Rückgabewert

int

Verwendung

Instrument.Margin

Weitere Informationen

Margin ist auch im Instrument Escort ersichtlich: Instrument.InstrumentType

Beispiel

Print("Das Instrument" + Instrument.Name + " hat eine Margin von  " + Instrument.Margin);

Instrument.Name

Beschreibung

Instrument.Name liefert die Bezeichnung des Handelsinstrumentes.

Parameter

keine

Rückgabewert

Typ string

Verwendung

Instrument.Name

Weitere Informationen

Der Instrument Name ist auch im Instrument Escort ersichtlich:

Instrument.Name

Beispiel

Print("Das aktuell im Chart geladene Instrument heißt " + Instrument.Name);

Instrument.PointValue

Beschreibung

Instrument.PointValue liefert den Geldwert für die Bewegung eines Instrumentes von einem vollen Punkt.

Parameter

keine

Rückgabewert

Typ double - Punktwert

Verwendung

Instrument.PointValue

Weitere Informationen

Beispiele verschieder Punktwerte (je Stück, CDF, Futurekontrakt, Lot usw.)

Aktie: im .allg. 1,00 Euro bzw. 1,00 USD. EUR/USD: 100,000 USD Dax-Future: 25,00 Euro

Tickwert

Der Tickwert ergibt sich, wenn man den Punktwert mit der TickGröße (TickSize) multipliziert.

z.B. hat der E-mini S&P 500 einen Punktwert von $ 50. Die TickSize beträgt 0,25. Es braucht also eine Bewegung von 4 Ticks für einen vollen Punkt. Aus 50 * 0,25 = 50 / 4 ergibt sich ein Tickwert von 12,50 $/ je Tick.

Der Punktwert ist auch im Instrument Escort ersichtlich:

Instrument.PointValue

Beispiel

Print("Wenn " + Instrument.Name + " einen vollen Punkt steigt, entspricht dies dem Gegenwert von  " + Instrument.PointValue + " " + Instrument.Currency);

Instrument.Round2TickSize

Beschreibung

Die Funktion Instrument.Round2TickSize rundet einen übergebenen Kurswert auf den kleinstmöglichen Wert, der durch die Tickgröße (TickSize) des Instrumentes teilbar ist.

Parameter

double - Kurswert

Rückgabewert

double

Verwendung

Instrument.Round2TickSize(double MarketPrice)

Weitere Informationen

Die Anzahl der Nachkommastellen, auf die gerundet wird, ist je nach Instrument unterschiedlich. Ist das Instrument eine Aktie, wird auf 2 Nachkommastellen gerundet, bei einem Forex-Wert auf 4 bzw. 5 Nachkommastellen.

Siehe auch TickSize und Instrument.Digits.

Beispiele für professionelle Formatting, Formatting of Numbers.

Beispiel

double Price = 12.3456789;
Print(Price + "  gerundet auf einen für " + Instrument.Name + " gültigen Kurs ist " + Instrument.Round2TickSize(Price));

Instrument.Symbol

Beschreibung

Instrument.Symbol liefert das Symbol, unter welchem das Handelsinstrument in AgenaTrader eindeutig identifizierbar ist. Anhand des Symbols werden die Mappings zu den verschiedenen Datenanbietern und Brokern verwaltet.

Parameter

keine

Rückgabewert

Typ string

Verwendung

Instrument.Symbol

Weitere Informationen

Mit dem Symbol werden gleiche Aktion an verschiedenen Börsenplätzen unterschieden. Das Symbol BMW.DE ist z.B. die BMW-Aktie an der Xetra, BMW.CFD ist der CFD auf die BMW-Aktie.

Das Instrument Symbol ist auch im Instrument Escort ersichtlich:

Instrument.Symbol

Beispiel

Print("Das aktuell im Chart geladene Instrument hat das Symbol  " + Instrument.Symbol);

Instrument.TickSize

Beschreibung

Die Tickgröße oder TickSize ist die kleinste mögliche Einheit um die sich ein Finanzinstrument bewegen kann. Dies ist umgangssprachlich 1 Tick.

Parameter

keine

Rückgabewert

double

Verwendung

Instrument.TickSize oder vereinfacht TickSize

Weitere Informationen

Das Schlüsselwort TickSize entspricht Instrument.TickSize. Beide Aufrufe liefern identische Werte und sind gegeneinander austauschbar.

Beispiele

Aktie: 0,01 ES-Future: 0,25 EUR/USD: 0,00001

Siehe auch Instrument.PointValue und Instrument.Digits.

Beispiele für professionelle Formatting, Formatting of Numbers.

Beispiel

Print("Der Kurs von " + Instrument.Name + "  kann sich minimal um  " + Instrument.TickSize + " Punkt(e) verändern.");

Multibars

Beschreibung

Einem Indikator bzw. eine Strategie liegt immer die gleiche Zeiteinheit zugrunde, wie diejenige, in der der Chart angezeigt wird. Wird z.B. ein SMA(14) in einem 5-Minuten-Chart dargestellt, wird der gleitende Durchschnitt über die 14 letzten 5-Minuten-Bars berechnet. Auf einem Tageschart würden entsprechend die Schlusskurse der letzten 14 Tage zur Berechnung herangezogen werden.

Das gleiche Prinzip gilt für selbst entwickelte Indikatoren. In einem 5-Minuten-Chart würde die Methode OnCalculate() für jeden 5-Minuten-Bar aufgerufen werden. Mit Multibars ist es außerdem möglich, Daten eines anderen Instrumentes zu laden.

Beispiel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Xml;
using System.Xml.Serialization;
using AgenaTrader.API;
using AgenaTrader.Custom;
using AgenaTrader.Plugins;
using AgenaTrader.Helper;
namespace AgenaTrader.UserCode
{
    [Description("Multibar Demo")]
    // Der Indikator benötigt Tages- und Wochendaten
    [TimeFrameRequirements("1 Day", "1 Week")]
    public class MultiBarDemo : UserIndicator
    {
        private static readonly TimeFrame TF_Day = new TimeFrame(DatafeedHistoryPeriodicity.Day, 1);
        private static readonly TimeFrame TF_Week = new TimeFrame(DatafeedHistoryPeriodicity.Week, 1);

        protected override void OnBarsRequirements()
        {
            Add(TF_Day);
            Add(TF_Week);
        }

        protected override void OnInit()
        {
            CalculateOnClosedBar = true;
        }
        protected override void OnCalculate()
        {
            // aktueller Wert für den SMA 14 auf Tagesbasis
            Print("TF0: " + SMA(Closes[0], 14)[0]);
            // The current value for the SMA 14 in a daily timeframe
            Print("TF1: " + SMA(Closes[1], 14)[0]);
             // aktueller Wert für den SMA 14 auf Wochenbasis
            Print("TF2: " + SMA(Closes[2], 14)[0]);
        }
    }
}

Weitere Hinweise

Bei Verwendung weiterer Zeiteinheiten wird den Arrays Opens, Highs, Lows, Closes, Medians, Typicals, Weighteds, Times und Volumes ein weiterer Eintrag mit den jeweiligen Datenserien der Bars der neuen Zeiteinheit hinzugefügt. Die Indizierung erfolgt in der Reihenfolge des Hinzufügens der Zeiteinheiten. Closes[0][0] entspricht Close[0]. Closes[1][0] entspricht dem aktuellen Schlusskurs der Tagesdatenreihe. Closes[2][0] entspricht dem aktuellen Schlusskurs der Wochendatenreihe.

"Closes"kann in den Beispielen selbstverständlich auch durch Opens, Highs, Lows usw. ersetzt werden.

Siehe auch ProcessingBarIndexes, ProcessingBarSeriesIndex, TimeFrames, TimeFrameRequirements.

Es gibt noch eine weitere Schreibweise für Multbars:

// unter Variablendeklaration wird die Variable TF_Day definiert
private static readonly TimeFrame TF_Day = new TimeFrame(DatafeedHistoryPeriodicity.Day, 1);
private static readonly TimeFrame TF_Week = new TimeFrame(DatafeedHistoryPeriodicity.Week, 1);
// Die folgende Anweisung ist identisch mit double d = Closes[1][0];
double d = MultiBars.GetBarsItem(TF_Day).Close[0];
//  Die folgende Anweisung ist identisch mit double w = Closes[2][0];
double w = MultiBars.GetBarsItem(TF_Week).Close[0];

ProcessingBarIndexes

Beschreibung

CurrentBars ist ein Array von int-Werten, welches für jedes Bar-Objekt die Nummer von ProcessingBarIndex 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:

ProcessingBarIndexes[0] ProcessingBarIndexes der primären Datenserie (Chart-Zeiteinheit) ProcessingBarIndexes[1] ProcessingBarIndexes für die Tagesbars ProcessingBarIndexes[2] ProcessingBarIndexes für die Wochenbars.

ProcessingBarIndexes[0] entspricht ProcessingBarIndex.

Siehe auch MultiBars.

Parameter

barSeriesIndex Indexwert der unterschiedlichen Zeiteinheiten

Verwendung

ProcessingBarIndexes[int barSeriesIndex]

Beispiel

//Sicherstellen, dass mind. 20 Bars geladen sind
for (int i=0; i<ProcessingBarIndexes.Count; i++)
if (ProcessingBarIndexes[i] < 20) return;

ProcessingBarSeriesIndex

Description

In einem Multibar-Script, d.h. in einem Indikator (bzw. einer Strategie), der mit mehreren Zeiteinheiten arbeitet, sind mehrere Bars-Objekte vorhanden. Die Methode OnCalculate() wird für jeden Bar im Script aufgerufen. Um Ereignisse bestimmter Datenreihen in die Berechnung einzubeziehen bzw. auszublenden ist BarsInProgress zu verwenden.

ProcessingBarSeriesIndex ist nur in Indikatoren bzw. Strategien von Bedeutung, die Daten aus mehreren Zeiteinheiten verarbeiten. Mit [TimeFrameRequirements("1 Day", "1 Week")] werden 2 weitere Zeiteinheiten zur primären Chart-Zeiteinheit hinzugefügt.

Wenn OnCalculate() von der primären Datenreihe aufgerufen wird, ist ProcessingBarSeriesIndex=0. Wird OnCalculate() von den Tagesbars aufgerufen, ist ProcessingBarSeriesIndex=1, bei den Wochendaten hat BarsInProgress den Wert 2.

Siehe auch Multibars and ProcessingBarIndexes.

Parameter

keine

Verwendung

ProcessingBarSeriesIndex

Weitere Informationen

In einem Script, welches nur auf der primären Zeiteinheit arbeitet, hat BarsInProgress immer den Wert 0.

Beispiel

// Arbeitsweise veranschaulichen
// ggf. CalculateOnBarClose=false setzen
Print(Time[0] + " " + ProcessingBarSeriesIndex);
// Berechnungen nur für die Chart-Zeiteinheit
protected override void OnCalculate()
{
if (ProcessingBarSeriesIndex > 0) return;
// Logik für primäre Datenreihe
}