Einloggen Suche | Aktive Themen
ZScore-Indikator Optionen
Roland Werth
Geschrieben: Sunday, December 15, 2013 1:33:29 PM
Gruppen: Kunde

Beiträge: 144

Hallo liebe Forumsteilnehmer,

habe für Market Maker einen Indikator Zscore geschrieben, der praktisch wie der Bollinger%B verläuft, aber besser dargestellt ist. Leider kann ich den Indikator nur auf den Close eines Wertpapieres anwenden (also über "Neue Zeitreihe einblenden"), jedoch nicht auf einen anderen Indikator (Indikator einblenden). Kann mir da jemand helfen. Der Indikator Zscore ist sehr nützlich und kann in verschiedenen Einstellungen verwendet werden. Ggf. wäre auch der normale Bollinger %B hilfreich.

Hier der Indikator Zscore:


$Close:= Close;
$Open:= Open;
$High:= High;
$Low:= Low;


(($Close- $Close.GD[$Zeitraum1; $Methode1; $XVersatz1; $YVersatz1])/$Close.Std[$Zeitraum1])/2*100


Hier ein Chartbild als Link:

http://s7.directupload.net/file/d/3471/xzhh8g9e_jpg.htm


Dateianhänge:
DOW Zscore.jpg (1,046kb) downloaded 78 time(s).


chuck
Geschrieben: Monday, December 16, 2013 1:39:42 PM

Gruppen: Kunde

Beiträge: 167

market maker
Hallo Roland,

danke, dass Du hier postest und die Gemeinde der aktiven Teilnehmer vergrößerst.

Nun zu Deinem Beitrag noch ein paar Erklärungen für die übrigen Forumsteilnehmer.

Bei den Bollinger Bändern addiert bzw. subtrahiert man die Standardabweichung von dem Mittelwert des Kurses und erhält somit ein Band, das den Kurs einkleidet. Dies nur zur Erklärung für die anderen Teilnehmer, damit der Hinweis auf die Bollinger Bänder sie nicht verwirrt, denn Deine Darstellung ist eine andere.

Du hast recht, dass die Berechnungsgrundlage von ZScore und den Bollingerbändern, die Gleiche ist, die Standardabweichung. Sie ist eine Messgröße aus der Statistik und der Wahrscheinlichkeitsrechnung.

Übertragen wir das jetzt auf die Börsenkurse. Eine der ältesten Analysemethoden ist der gleitende Durchschnitt. Legt man einen solchen Durchschnitt in ein Chart mit dem Kurs, so sieht man, dass sich der Kurs um diesen Durchschnitt bewegt, von ihm entfernt, aber immer wieder zu dem Durchschnitt zurück kommt und zur anderen Seite ausschlägt. Der Abstand des Kurses vom Durchschnitt ist nicht beliebig groß, sondern die Kurswerte bewegen sich hauptsächlich in einem Band um den Durchschnittswert.

Und hier kommt jetzt die Statistik und Wahrscheinlichkeitsrechnung ins Spiel.

Bei normal verteilten Zufallswerten befinden sich 68,3 % der Werte im Bereich +- eine Standardabweichung um den Erwartungswert (hier Mittelwert des Close (GD)) und 95,4 % der Werte im Bereich +- 2 Standardabweichungen um den Erwartungswert. Werte die außerhalb des Bandes +- 2 Standardabweichungen liegen, sind nur mit einer niedrigen Wahrscheinlichkeit zu erwarten.

Da Kurse immer wieder zu dem Mittelwert zurückkommen bedeutet dies, dass je weiter ein Kurs von diesem Mittelwert abweicht, die Wahrscheinlichkeit um so größer wird, dass er wieder zum Mittelwert bzw. sogar zu einem Punkt jenseits des Mittelwertes sich bewegen wird, also es zu einer Korrektur in der Kursbewegungsrichtung kommt. Diese hat nichts mit einer Trendwende zu tun, sondern es ist nur eine Korrektur der Abweichung vom Mittelwert (Erwartungswert).

Wenn also der Kurswert in den Bereich von 2 Standardabweichungen kommt, oder sie sogar überschreitet spekuliert (im Sinne von erwarten) man auf so eine Richtungskorrektur.

Jetzt zu Deiner Formel:

Deine Berechnung und der Chart ist damit die Darstellung der Standardabweichung. Den Term "/2*100" kannst Du getrost weglassen, da es sich nur um eine Spreizung des ZScore handelt, der sich, wie in der Literatur angegeben, im Bereich +- 2 (= vielfaches der Standardabweichung) bewegt.

Wenn Du Dir Deine Formel ansiehst, verwendest Du nur den Close Kurs zur Berechnung des ZScore. Den Open, Low und High, den Du aus der Datenbank in Variable einliest, verwendest Du in der Berechnung nicht. Lass sie weg, dies kostet nur Rechnerzeit. Ansonsten ist alles für die Ermittlung des ZScores korrekt.

Wie ich Dich verstehe, hast Du im Menü unter "Extras / Chart-Formelelemente konfigurieren ..." den Typ Zeitreihe verwendet und dort diese Formel eingetragen. Wenn Du dann in der Chart spezifischen Symbolleiste auf das Symbol ganz links ("Neue Zeitreihe einblenden") drückst, wird Dir dann Dein ZScore angezeigt.

Formeln die Du unter dem Typ Zeitreihe eingibst erwarten kein Eingangsobjekt. Deshalb wird nur dargestellt, was Du in der Formel eingegeben hast. Bei Dir also nur der ZScore auf den Close-Kurs.

Für das was Du möchtest, musst Du den Typ "Zeitreihenfunktionen" verwenden und Deine Formel (mit kleinen Abwandlungen) als eine Funktion (Makro) speichern.

Eine Funktion erwartet ein Eingabeobjekt, z.B. der Close-Kurs, oder wie Du es möchtest irgend eine x-beliebige Zeitreihe wie z.B. einen Indikator. Das Eingangsobjekt wird in einem Makro immer mit "object" repräsentiert und dies ist auch die Änderung, die Du in Deiner Formel machen musst.

Damit alle möglichen Zeitreihen in einem Makro ZScore verarbeitet werden können, muss das $Close in Deiner Formel durch object ersetzt werden, oder object muss zu Beginn des Makros der Variablen $Close zugewiesen werden. Die Formel lautet dann:


Code:
$Close:=object;   {Zuweisen des Eingangsobjektes an die Variable $Close}


{Berechnen des ZScore}
(($Close- $Close.GD[$Zeitraum1; $Methode1; $XVersatz1; $YVersatz1])/$Close.Std[$Zeitraum1])


Speichere dieses Makro unter dem Namen ZScore ab.

Dann konfigurierst Du ein neues Chart-Formelelement und verwendest aber den Typ "Zeitreihenfunktionen". Beim Klick auf Formel bearbeiten öffnet sich der Formeleditor. In der Symbolleiste klickst Du auf den Funktionsassistenten, suchst das soeben erstellte Makro ZScore und fügst das mit einem Doppelklick in die Formel ein und speicherst das Ganze.

In der Chart spezifischen Symbolleiste ist das 2. Element von links (Indikator einblenden). Es ist so lange grau ausgeblendet, bis Du eine Zeitreihe in einem Chart in der Legende angeklickt hast. Du erinnerst Dich: "Eine Funktion (Makro) benötigt ein Eingangsobjekt." Und genau diese Zeitreihe, die Du anklickst, wird das Eingangsobjekt, das dem Makro übergeben wird, welches Du aus dem sich aufklappenden Untermenü auswählst. In diesem Untermenü ist auch das von Dir definierte Makro.

Jetzt klicke die Legende des Close-Kurses an und dann über "Indikator einblenden" den ZScore. Es wird ein neuer Chart eröffnet in dem der ZScore dargestellt wird.

Bisher genau so wie Du es bisher realisiert hattest. Jetzt gehe hin und erstelle zu deinem Close über "Indikator einblenden" einen Indikator (z.B. RSL). Er erscheint in einem neuen Chart. Jetzt klicke in der Legende den RSL an. Dann klicke über "Indikator einblenden" den ZScore an. Es öffnet sich wieder ein Chart. In dessen Legende steht "ZScore von RSL27 von Close". Es ist der ZScore des Indikators RSL.

Um Dich zu überzeugen das dies stimmt, wähle die Legende von ZScore an. Dann rechte Maustaste und Formel anwählen. Im Formeleditor siehst Du dann.

Code:
Close[]
.RSL[$Zeitraum; $Methode; $XVersatz; $YVersatz]
.ZScore[$Zeitraum; $Methode]


Genau das was Du haben wolltest. Eine Realisierung des ZScore, den Du auf jede Zeitreihe anwenden kannst.

Ich hoffe Du und die anderen Mitglieder im Forum konnten meinen Erklärungen folgen.

Ich wünsche allen und auch dem L+P Team ein paar besinnliche Festtage und einen guten Rutsch ins neue Jahr.

Chuck
Roland Werth
Geschrieben: Monday, December 16, 2013 3:55:45 PM
Gruppen: Kunde

Beiträge: 144

Vielen Dank Chuck,

auf $Close:=object bin ich nicht gekommen. Ich hatte schon versucht, (alle) close gegen object in der Formel unten auszutauschen, was aber nicht wirklich funktioniert hat. Danke für die schnelle Antwort! Das hilft mir sehr und hilft sicher auch anderen hier bei der Programmierung weiter. Werde das gleich mal ausprobieren.

Dir und allen hier ein frohes Fest und gutes neues Jahr!

Roland
Roland Werth
Geschrieben: Monday, December 16, 2013 4:31:35 PM
Gruppen: Kunde

Beiträge: 144

Hallo Chuck,

funktioniert prima. Aber ich vermute, dass ich einen anderen Fehler übersehen hatte. Habe nämlich auch jetzt erst Fehlermeldungen erhalten. Möglicherweise hatte ich die Bibliothek nicht richtig zugewiesen. Jedenfalls habe ich jetzt den richtigen Indikator.

Nochmals vielen Dank

Gruß Roland
chuck
Geschrieben: Tuesday, December 17, 2013 1:12:20 PM

Gruppen: Kunde

Beiträge: 167

market maker
Hallo Roland,

jede neue Formel ist eine Funktion und entsteht durch Verwendung von schon bestehenden Funktionen.

In einer Formel braucht man für von MarketMaker erstellte Funktionen (+; -; RSL; ...) keine Bibliothek anzugeben. Benutzt man aber eine Funktion/Makro, das man selbst erstellt hat, dann muss man die Bibliothek angeben in der man es abgespeichert hat.

Benutzt man den Funktionsassistenten, dann wird bei der Auswahl der eigenen Funktion sofort auch die Bibliothek übernommen. Gibt man den Namen einer eigenen Funktion von Hand in die Formel ein, dann musst man im Reiter Bibliotheken noch die Bibliothek auswählen, in der diese Funktion abgelegt ist.

Chuck
Benutzer die diese Diskussion aktuell lesen
Guest

Powered by Yet Another Forum.net version 1.9.1.8 (NET v4.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.

Durch die Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz finden Sie hier