Der Globale Datenspeicher von Investox V6
von

Eine der Neuerungen von Investox Version 6 ist der Globale Datenspeicher.
Von jedem Investox-Formeleditor aus können Variablen oder Berechnungen im Datenspeicher abgespeichert werden.
Werden Daten aus dem Datenspeicher später an anderer Stelle in Investox benötigt (z.B. in anderen Projekten, Handelssystemen, anderen Charts- oder Teicharts, Farbstudien oder in Berechnungstiteln oder Direktabfragen) können Sie dort unkompliziert aus dem Globalen Datenspeicher wieder ausgelesen werden.

Die Funktion des Globalen Datenspeichers soll an folgendem Beispiel demonstriert werden:

In einer Investox-Projektdatei ohne Handelssystem soll der RSI-Indikator mit seinen Extremzonen gechartet werden. Sowohl die Periodeneinstellungen des RSI als auch die Begrenzungen der Extremzonen sollen verändert werden können. Wenn die RSI-Einstellungen geändert werden, soll sich eine RSI-Farbstudie im Chart anpassen und auch ein zusätzlicher RSI-Signalindikator in einem anderen Teilchart soll wieder korrekte Werte anzeigen.

Charting des RSI-Indikators

Zuerst wird eine neue Investox-Projektdatei angelegt :

  1. Datei ---> Neues Projekt ---> beliebigen Titel aus dem Investox-Titelverzeichnis auswählen ---> OK
  2. Rechter Mausklick auf freie Stelle im Chart -----> neuer Teilchart
  3. Rechtsklick auf freie Stelle im neuen Teilchart ----> Formel einfügen

Im Formeleditor wird die Formel für den RSI- Indikator eingegeben:

RSI(close,14)

Die Periodeneinstellungen des RSI sollen variabel sein - deshalb wird für die 14 eine Konstante definiert und in die Berechnung eingesetzt:

const Perioden: 14;
RSI(close,Perioden)

Abschließend wird die Konstante "Perioden" noch  im globalen Datenspeicher abgelegt :

global calc dummy: VBScript(#>>
if GlobalData.KeyExists("Perioden")=false then
GlobalData.Add "Perioden", Perioden
else
GlobalData.Item("Perioden")= Perioden
end if<<#);

Die Berechnung im VBScript prüft zuerst, ob im Globalen Datenspeicher von Investox schon ein Eintrag mit dem Namen "Perioden" existiert. Wenn das nicht der Fall ist, wird dieser Eintrag erstellt und es wird ihm gleichzeitig der Wert der Variablen "Perioden" zugewiesen (14).
Existiert schon ein Eintrag mit dem Namen "Perioden" im Speicher, wird dessen Wert mit dem aktuellen Wert der Variablen "Perioden" überschrieben (Else-Bedingung). 

Auch die Extremzonen des RSI-Indikators werden jetzt definiert und in den Globalen Datenspeicher geschrieben. Der bisherige Code wird dazu wie folgt ergänzt: 

const Perioden: 14;
const Level_1: 30;
const Level_2:70;

RSI(close,Perioden)
{Werte der Konstanten "Per, Level_1 und Level_2" werden
in den Globalen Datenspeicher geschrieben}
global calc dummy: VBScript(#>>
if GlobalData.KeyExists("Perioden")=false then
GlobalData.Add "Perioden", Perioden
else
GlobalData.Item("Perioden")= Perioden
end if
if GlobalData.KeyExists("Level_1")=false then
GlobalData.Add "Level_1", Level_1
else
GlobalData.Item("Level_1")= Level_1
end if
if GlobalData.KeyExists("Level_2")=false then
GlobalData.Add "Level_2", Level_2
else
GlobalData.Item("Level_2")= Level_2
end if
<<#);

Mit einem Klick auf "OK" wird der RSI-Indikator gechartet.

Charting der Extremzonen des RSI-Indikators:

- rechter Mausklick auf freie Stelle im Teilchart mit dem RSI-Indikator ----> Formel einfügen

Die Werte für die Extremzonen wurden ja schon im Globalen Datenspeicher abgelegt. Der erste Wert wird wie folgt abgerufen und gechartet:

const Level_1:  #>>_vbs_const consterg=GlobalData.Item("Level_1")<<#;
Level_1

Für die Anzeige der zweiten Extremzone wird eine weitere Formel in den RSI-Chart eingefügt. In diser Formel wird Level_1 durch Level_2 ersetzt.

Charting der RSI-Signale

RSI-Standard-Signale entstehen, wenn der RSI-Indikator seinen unteren Extrembereich nach oben verlässt (BUY) bzw. wenn der RSI seinen oberen Extrembereich nach unten verlässt (SELL).

Es soll in einem separaten Teilchart ein Signalindikator gechartet werden, der den Wert "1" bei eiem Buy_Signal und den Wert "-1" bei einem Sell-Signal ausgibt.

Der Code für diesen Indikator lautet wie folgt:

const Per: #>>_vbs_const consterg=GlobalData.Item("Perioden")<<#;
const Level_1:  #>>_vbs_const consterg=GlobalData.Item("Level_1")<<#;
const Level_2:  #>>_vbs_const consterg=GlobalData.Item("Level_2")<<#;
calc indi: RSI(close,per);
If(Cross(indi,level_1,1)=1,1,If(Cross(indi,level_2,1)=-1,-1,0))

Die ersten 3 Codezeilen rufen die Werte der Variablen "Perioden, Level_1 und Level_2" aus dem Globalen Datenspeicher ab. In der 4. Codezeile wird der RSI-Indikator berechnet.

In der letzten Codezeile wird das Overcrossing des RSI-Indikators mit seinen Extremzonen abgefragt und es werden dem Ergebnis die Werte "1" (=Buy") bzw. "-1" (=Sell) zugewiesen.

Der Signalindikator wird mit der Darstellung "Säulen" in rot formatiert.

Farbstudie für den Signalindikator

Abschließend soll dem Signalindikator noch eine Farbstudie zugewiesen werden, die die Indikatorwerte bei einem Buy-Signal in grün ausgibt, bei einem Sell-Signal in rot.

Dazu wird der Signalindikator mit der Maus markiert ---> Rechtsklick ----> Signalindikator formatieren ---> Reiter Farbstudie anklicken ---> Zufügen

Im Feld "Bedingung" wird zuerst wieder der Code für den Signalindikator eingetragen und dann in der letzten Zeile die Bedingung für die Grün-Färbung festgelegt:

const Per: #>>_vbs_const consterg=GlobalData.Item("Perioden")<<#;
const Level_1:  #>>_vbs_const consterg=GlobalData.Item("Level_1")<<#;
const Level_2:  #>>_vbs_const consterg=GlobalData.Item("Level_2")<<#;
calc indi: RSI(close,per);
calc Signal:If(Cross(indi,level_1,1)=1,1,If(Cross(indi,level_2,1)=-1,-1,0));
SignaL >0

Die Eingaben werden bestätigt und der Signalindikator erscheint mit den gewünschten Farben im Chart.

Wenn jetzt im ersten Teilchart in der Berechnung des RSI-Indikators die Werte für die Periodenzahl des RSI und/oder für seine Extremzonen geändert werden, passen sich (ggf. nach einem Klick auf "Chart---> Chart aktualisieren" ) alle anderen Berechnungen im Chart automatisch an.

Zurück