ℹ️ Neben den gängigen Indikatoren bieten wir Ihnen im Chart-Widget auch die Möglichkeit, Ihren eigenen Indikatoren mittels unserer „SSC" Programmiersprache zu programmieren oder bestehende Indikatoren umzuschreiben. (+ Anleitung)
Variante 1: Eigenen Indikator entwickeln
- Den Editor finden Sie im Chart-Widget unter der oben mittig liegenden Schaltfläche „Indikatoren".
- Natürlich bieten wir Ihnen auch Hilfestellung, welche Sie im Editor oben links unter der Schaltfläche „Dokumentation & Hilfe" finden.
- Bereits von Ihnen gespeicherte Indikatoren werden unter „Eigene Indikatoren“ in der gleichen Übersicht aufgelistet.
Variante 2: Bestehende Indikatoren umprogrammieren
-
Sie können auch Ihre eigenen Indikatoren entwickeln und speichern, indem Sie direkt den Code eines bestehenden Indikators nutzen.
-
Fügen Sie den Indikator zum Chart hinzu.
-
Rechtsklick auf den Indikator im Chart oder alternativ im rechten Menü unter dem passenden Indikator-Eintrag
-
Klick auf das Feld „Code editieren“. An dieser Stelle können Sie also die Berechnungslogik, die Anzeige etc. eines vorhandenen Indikators ändern/speichern. (Haben Sie einen Indikator in SSC entwickelt, können Sie ihre Angaben aus dem Programmierfenster zur Anzeige im User Interface (UI) auch direkt mit dem rechten Menü kontrollieren und z.B. auch die Parameter des Indikators anpassen.)
💡 Tipp: Haben Sie einen Indikator erstellt & gespeichert, so steht er Ihnen nicht nur im Charting zur Verfügung, sondern auch im Screener.
Über den Bereich "Mein Profil" können Sie Ihre SSC-Formeln verwalten.
🎥 Kurzvideo:
⚠️ Hinweis: Aktuell ist die Anleitung für Indikator auf Indikator noch in Arbeit. Beispiele für 2 gewünschte Fälle wären.
EMA auf EMA
# input outerPeriod = integer("Periode Außen", 200) innerPeriod = integer("Periode Innen", 50) displacement = integer("Displacement", 0) # meta data studyName("EMA auf EMA ", "Outer Period", "Inner Period") studySimilarValues(1) studyPrecision(2) studyWarmUp(10.36*(innerPeriod+1)) # calculation innerEma = ema(close, innerPeriod) outerEma = ema(innerEma, outerPeriod) # plotting plotLine("line", outerEma)("displacement", displacement)
SMA auf RSI
# input periodRsi = integer("Period RSI", 14) periodSma = integer("Period SMA", 50) # meta data studyName("SMA auf RSI ", "Period SMA", "Period RSI") studySimilarValues(0) studyPrecision(2) studyRange(-10, 110) studyWarmUp(20*periodRsi) # calculation w = 1 / periodRsi up = close > close[1] ? close - close[1] : 0 down = close < close[1] ? close[1] - close : 0 upSmoothed = up * w + (1-w) * nn(upSmoothed[1], up) downSmoothed = down * w + (1-w) * nn(downSmoothed[1], down) rsi = !downSmoothed ? 100 : 100 - (100 / ((1 + upSmoothed / downSmoothed))) smaRsi = sma(rsi, periodSma) # plotting plotThreshold("threshold", smaRsi, 70, 30)("legend", 0) plotLine("line", smaRsi)
Aufbau der SSC-Eingabemaske
- Bei Öffnen aus dem Menü oder beim Bearbeiten des Indikators aus dem Charting heraus, öffnet sich zunächst ein weiteres Fenster, in dem die Eingaben für den neuen Indikator vorgenommen werden können. Hier kann sowohl der Name, als auch die Berechnung bzw. Formel des Indikators, aber auch die Art der Anzeige im Charting und die Bedienung im Chart und im rechten Menü festgelegt werden.
- Von diesem separaten SSC-Fenster gelangen Sie auch zur englischsprachigen Dokumentation und zum Hilfemenü. Außerdem können über die Buttons im oberen Menü SSC-Indikatoren gespeichert, geladen und auch kopiert werden, damit Sie beispielsweise schnell in einen neuen umfassenderen Indikator als Teilberechnung integriert werden können.
- Zudem kann über das Zahnradsymbol auf der rechten Seite eine große Seitenleiste mit der Auflistung aller selbst erstellten SSC-Indikatoren angezeigt werden. Hier erhält man also den schnellen Zugriff auf alle „Eigenproduktionen“.
- Von diesem separaten SSC-Fenster gelangen Sie auch zur englischsprachigen Dokumentation und zum Hilfemenü. Außerdem können über die Buttons im oberen Menü SSC-Indikatoren gespeichert, geladen und auch kopiert werden, damit Sie beispielsweise schnell in einen neuen umfassenderen Indikator als Teilberechnung integriert werden können.
- Zudem kann über das Zahnradsymbol auf der rechten Seite eine große Seitenleiste mit der Auflistung aller selbst erstellten SSC-Indikatoren angezeigt werden. Hier erhält man also den schnellen Zugriff auf alle „Eigenproduktionen“.
Eingabemaske für den Indikator
- Zu Beginn ist das Eingabefeld in der Regel leer. Zu einem späteren Zeitpunkt wird der zuletzt bearbeitete Indikator angezeigt. Sollten Sie einen vorhandenen Indikator aus dem Charting heraus öffnen („Code editieren“), so erscheint der gesamt Code im neuen Fenster.
- In diesem Fenster können vorherige Eintragungen jederzeit gelöscht, erweitert oder angepasst werden. Zur besseren Bearbeitung sind die Eingabezeilen durchnummeriert und unterschiedliche Eingabekategorien auch unterschiedlich eingefärbt.
- Der einfachste Weg zum ersten bearbeiteten Indikator ist die Bearbeitung eines vorhandenen Indikators. Dazu laden Sie bei geöffnetem SSC-Fenster einen vorhandenen Indikator aus unserem Menü und erstellen eine Kopie des Indikators, da unser Original nicht direkt bearbeitet werden kann.
- Neben dem Eingabefenster wird direkt ein Beispielchart zur Veranschaulichung des Programmierten angezeigt.
- Für die Arbeit im Eingabefenster reicht es, den korrekten Code zu schreiben oder Anpassungen im vorhandenen Code vorgenommen zu haben, damit die Änderungen von SSC automatisch erfasst und in den Beispielchart, der zur Veranschaulichung und Prüfung dient, sofort übertragen bzw. angezeigt werden.
- Bei der Berechnung sollten Teilberechnungen- oder ergebnisse, die in einem späteren Arbeitsschritt in der Indikatorenformel auftauchen, zunächst vorab definiert werden. Unter anderem liegt dies daran, dass SSC die Ergebnisse der Programmierung immer von oben nach unten liest. Vorherige Definitionen können so aber ohne viel Aufwand in spätere Berechnungen einfließen. Ein definierter Name (String) wird dabei mit "=" und einer folgenden Formel definiert. Später kann einfach der zugrundeliegende Name der Teiloperation in die vollständige Formel integriert werden und wird so automatisch mitberechnet.
- Beispiel: Durchschnittskurs = (High - Low) / 2. In der SSC-Indikatorformel kann später die Berechnung ((High-Low) / 2) einfach durch den Variablennamen "Durchschnittskurs" ersetzt werden und es wird trotzdem immer der Durchschnittskurs berechnet.
- Ein konkretes Beispiel hierfür ist der Indikator Accelerator Oscillator, bei dem zunächst die Berechnung des sogenannten Durchschnittspreises (MP = mean price) definiert werden muss, um diesen später in die Formel für einen Zwischenschritt der Berechnung einzubinden:
- Zunächst wird also der Durchschnittskurs mp als (High - Low) / 2 definiert. Das =-Zeichen (Gleichheitszeichen) signalisiert dem Programm dabei, dass jetzt eine Berechnungsformel folgt. In der SSC-Indikatorformel kann später die Berechnung (High-Low) / 2 einfach durch den Variablennamen "mp" ersetzt werden und es wird trotzdem immer der Durchschnittskurs berechnet. Jede andere Begrifflichkeit ist natürlich auch denkbar. Gerade für Einsteiger bietet dies also den Vorteil, dass abstrakte Operationen mittels sprechender Strings anschaulich werden.
Aufteilung des SSC-Eingabefensters nach Funktionsbereichen
Gliederung des Fensters:
- #Input (Berechnungsbasis und Daten)
- #metadata (Indikatorenname, Beschriftung, Anzeige, Zahl der Nachkommastellen)
- #calculation (eigentliche Formel)
- #plotting (Art und Weise der Ausgabe der Daten, Anzeige der Daten im Chart, UI)
(Punkte für eine kurze Beschreibung von Aufbau und Funktion mit Pfeilen zu den SSC-Abschnitten)
study = Indikator
Die Informationen, die später im Chart via Text (als String) angezeigt werden sollten, schreibt man immer in Anführungsstrichen
Study similarvalues – Dieser Eintrag entscheidet, ob ein Indikator in oberem oder unterem Fenster angezeigt wird. Hierbei legt die Zahl „1“ fest, dass der Indikator im Chart angezeigt wird. Mit der „0“ wird der Indikator in einem separaten Fenster unter dem Chart eingeblendet. Dieser Chart hat dann eine Skala, die auf den Datenbereich des Indikators abgestimmt ist. In der Regel werden Indikatoren wie gleitende Durchschnitte im Chart angezeigt, Oszillatoren darunter. Mit der Einstellung der „Study similarvalues“ sind Sie also völlig frei bei der Platzwahl.
Precision = Anzahl der Nachkommastellen
plotline = Linie eintragen
Calculating → rechteckige Klammer wird verwendet, wenn ein Vergleich mit einem Wert von vor x Tagen stattfinden soll bzw. der Vergleich zwischen aktueller und Vortageskerze
„?“ - SSC soll prüfen, ob die Bedingung erfüllt ist. Ob die Bedingung erfüllt wurde oder nicht, gibt bei der Ausgabe eine anderes Ergebnis. Um dies einzugrenzen, kann man definieren, dass eine Erfüllung der Bedingung eine Reaktion auslöst („1“) und die Nichterfüllung eben keine Reaktion („0“) oder umgekehrt. Geschrieben wird dies in der Calculation als Var1 : Var2 oder zb 1:0 (vgl. ternärer Operator)
Syntax
- Unter der Syntax einer Programmiersprache versteht man die Art und Weise, wie Befehle, Operationen oder Information geschrieben werden sollen, damit diese vom Programm verstanden und umgesetzt werden können. Die Syntax ist sozusagen die Grammatik und der Satzbau der Programmiersprache. Im Fall von SSC ist die Sprache an Javascript angelehnt und hier einige grammatikalische Vorgaben zusammengefasst:
Anweisungen
- Bilden die Einzelteile des gesamten Programmcodes und beziehen sich auf Indikatorenberechnung, - benamung, - darstellung usw. Sie werden von oben nach unten gelesen und abgearbeitet, und können prinzipiell aus (ganzzahligen oder Fließkomma-) Zahlen, einem String, einem booleschen Wert oder einer Zeitreihe (zb aus Kursdaten) bestehen.
Handelt es sich um einen String, wird dieser in doppelte Anführungszeichen gesetzt. Zudem können auch CSS-Farbcodes zur Färbung von Ausgabedaten verwendet werden.- Einschub: Was ist ein String? Prinzipiell handelt es sich bei einem String um eine Zeichenkette- oder reihe, die aus einer endlichen Folge von Zahlen, Buchstaben, Sonderzeichen, Wörtern oder ganzen Sätzen bestehen, oder sogar auch leer bleiben kann. Strings haben keine mathematische Funktion und sind auch kein Programmierbefehl, sondern sind in der Regel sog. Textwerte, also Texte, Namen oder Begriffe. Zur besseren Unterscheidbarkeit werden Strings in Anführungszeichen gesetzt. Die Anzahl der Zeichen, aus der ein String besteht wird als seine Länge definiert. Ein Beispiel für einen 19-teiligen String wäre die Textfolge "Der Himmel ist blau" aber auch die Zeichenfolge (das Datum) "01.01.2021".
Syntax-Beispiel:
3
3,1
"Periode"
"rgb(255, 0, 0)"
Variablen können Ergebnisse beliebiger Anweisungen in Form von Ausdrücken speichern und haben dadurch den Typ einer Zahl, einer Zeitreihe (Liste von Zahlen), eines Strings oder eines booleschen Wertes. Zahlen, Zeitreihen und boolesche Werte unterstützen einfache mathematische Operationen wie "+", "-", "/", "*", "%". Darüber hinaus haben wir eine Vielzahl weiterer Berechnungsmöglichkeiten, die im Kapitel "Mathematische Befehle und Berechnungen" aufgelistet sind.
Operatoren wiederum sind mathematische Befehle, die auf einen, mehrere oder eine ganze Reihe von Werten angewendet werden und an deren Ende ein neuer Wert steht - das Ergebnis. Beispiele sind die oben genannten Operatoren "-" für Subtraktion oder "/" für Division. Die Zahlenwerte die vor und nach dem Operator stehen nennt man Operanden (zb die Zahlen 12 und 3 in der Operation "12 + 3").
Beispiel für Variablen und Operatoren:
n = 3
m = 3*n + 3
Variablen:
- Name, gilt immer nur für einen Indikator, nämlich den, der im Text darunter folgt.
- Standardmäßig werden die Werte des aktuellen Instrumentes als read-only Variablen bereitgestellt. Die folgenden Zeitreihen können in Berechnungen verwendet werden:
open (Eröffnungskurs)
high (Höchstkurs)
low (Tiefstkurs)
close (Schlusskurs)
volume (Volumen)
Bedeutung von Read Only:
- Read Only-Attribute bei Strings oder Operatoren legen fest, dass der angezeigte Wert nur ausgelesen, aber nicht verschoben oder überschrieben werden kann. Z.B. kann man mit Readonly verhindern, dass Ergebnisse einer Berechnung durch den User versehentlich abgewandelt werden können oder essentielle Teile einer Indikatorenformel verändert werden und so die Operation nicht mehr ausführbar ist. Bei SSC sind die Kursdaten(reihen) der Basiswerte auf die die Indikatoren berechnet werden in dieser Form schreibgeschützt, damit sie nicht verändert werden können.
- 'volume' hat nur dann einen Wert, wenn Volumendaten zum Instrument vorliegen.
Beispiel einer Berechnung mit Zeitreihen von Kursdaten:
m = (open+high)/2 + n
Nutzung einer Funktion:
- Eine Funktion ist ein Ablauf bzw. eine Reihe von Anweisungen (Prozedur), um eine Aufgabe auszuführen oder um einen Wert auszurechnen und zurückzugeben. Funktionen können an einer Stelle im Code gespeichert sein und von anderen Stellen aus zur Berechnung von Werten aufgerufen werden. In unserer Syntax werden die Parameter und Werte(auch Argumente genannt), die übergeben werden können, mit runden Klammern geschrieben. Eine Funktion kann einen Rückgabewert liefern, muss es aber nicht.
Beispiel einer Funktion:
n = Min(1, 4, 2)
plotLine("Linie", n)
- Zeitreihen können den Zusatz eines Index beinhalten. Ein Index wird in eckigen Klammern geschrieben und bezieht sich auf den vorhergehenden Wert, z. B. [1] auf den Wert von t-1, [2] auf t-2 und so weiter. Dies ermöglicht einfache rekursive Berechnungen, zum Beispiel die folgende Fibonacci-Folge. Beachten Sie, dass wir die Startwerte mit der NotNaN-Funktion nn() definieren.
f = nn(f[1], 1) + nn(f[2], 1)
- == ist der verwendbare Vergleichsoperator "istgleich". Er dient zum Vergleich zweier Werte und prüft, ob die Verweise bzw die Operanden gleich sind. D.h. das Ergebnis ist immer ein boolscher Wert der Form "wahr" oder "falsch".
Bedingter oder ternärer Operator („?“)
- Der Ternäre Operator arbeitet wie eine Kurzform einer „if.. else“-Anweisung („wenn-dann-sonst“-Anweisung) und dient der einfachen Unterscheidung und Trennung verschiedener Werte (einfache Entweder-Oder-Bedingungen).
- Eine „if...else“-Anweisung stellt eine operationale Verzweigung dar und funktioniert zunächst über eine Abfrage, ob eine Bedingung zutreffend („true“) ist und führt dann eine entsprechende Anweisung aus. Wird festgestellt, dass eine Bedingung nicht zutrifft („false“), greift die Anweisung, die für den Fall von „else“ zugrundeliegt.
Syntaxbeispiel:
Bedingung ? Anweisung1 : Anweisung2
- Das Fragezeichen in der Syntax gibt dabei an, an welchem Punkt die Bedingung endet und die Anweisungen für den Wahrheitsfall bzw. die Werte beginnen. Mit dem Doppelpunkt trennt man im Code dann den Wahrheitsfall von der Alternative.
Die Bedingung ist „Kugel ist schwarz“.
- Anweisung 1 wird für alle schwarzen Kugeln ausgefüḧrt - Anweisung 2 wird für alle nicht-schwarzen Kugeln ausgeführt. Ist eine Kugel jetzt also grün, wird Anweisung 2 verwendet.
- Die Bedingung gibt dabei einen boolschen Wert der Form „wahr“ („true“) oder „falsch“( „false“) zurück. Ist der Wert „wahr“ wird Wert 1 verwendet, sonst Wert 2
- Von diesen drei Angaben, die Bedingung, Wert 1 und Wert 2, erhält der Operator auch seine Bezeichnung „ternär“ (terni = lat. „jeweils drei“)
- Der ternäre/bedingte Operator legt analog zu „if...else“ zunächst eine Bedingung fest, die im Sinne von „true“ oder „false“ erfüllt sein muss. Dieser Bereich wird in der Syntax über ein Fragezeichen von den Werten getrennt, die angeben, was angezeigt oder ausgegeben werden soll, wenn eine Aussage unter der angegebenen Bedingung „true“ oder „false“ ist. Dabei wird beim Ergebnis „true“ der Wert 1 verwendet und bei Ergebnis „false“ der Wert 2. Idealerweise sollten die möglichen Ergebnisse der Unterscheidung insgesamt schon vor der Anwendung eines ternären Operators bekannt sein, um dann die entsprechende Fallunterscheidung zu treffen.
Ein Beispiel:
Variable = open > close ? open : close
plotLine("Linie", open > close ? open : close)
Beispiel ROC
- Bei der Rate of Change nutzt man den ternären Operator, um ein Teilen durch den Wert "0" und den damit verbundenen mathematischen Fehler gleich in der Syntax des Indikators zu verhindern.
- Neben einem ternären Operator im Code ist es auch möglich mehrere ternäre Operatoren hintereinander zu schalten oder mit mehreren Bedingungen verwenden.
BedingungA ? ( BedingungB ? WertA : WertB ) : WertC
UI - Die Gestaltungsmöglichkeiten der Benutzeroberfläche
- Jetzt befassen wir uns mit den allgemeinen Funktionen, die man in SSC nutzen kann, um das User Interface, also die Benutzeroberfläche anzupassen.
- Alle diese Befehle legen fest, in welcher Form die Parameter, die später im rechten Menü angezeigt und bearbeitet werden können, eingetragen werden.
User Interface:
- Bei Softwareanwendungen wie dem Charting Widget versteht man unter dem User Interface (UI) die Schnittstelle zwischen dem Benutzer und dem Computer, an der die Interaktion zwischen beiden stattfindet. Beim SSC-Interface handelt es sich um ein sog. Text-Interface, das mit der Tastatur und Maus bedient wird. Das Charting, in dem die Indikatoren angezeigt und über das Menü per Maus und Tastatur bedient und angepasst werden können, ist ein sog. Graphical User Interface (GUI). Hierbei werden die Befehle für Input-Funktionen (integer, float, boolean usw), wie man sie zB in SSC manuell erstellt hat, dann in Form grafischer, klickbarer Oberflächen oder als Funktion, Menü, Textfeld oder Symbol angezeigt.
- Darüber hinaus können Variablen im User Interface des Charting Widgets als Parameter deklariert werden. Diese Parameter benötigen ein Label/einen Namen und werden in rechten Chartingmenü angezeigt, um dann vom User bearbeitet werden zu können.
SSC unterstützt dabei die folgenden Typen für Parameter:
- integer ("Ganzzahliger Parameter", zum Beispiel -3, -10, 10)
float ("Fließkommazahlen-Parameter", Fließkommazahlen wie .5, 0, 1.3)
boolean ("Boolescher Parameter", wahre oder falsche Aussage, 1 bzw 0) - Set ("Satz"/ Gruppe von Zahlenpaaren)
Beispiel:
n = integer("Periode", 12)
float()
- Mit der Funktion legen Sie fest, dass Ergebnisse von Berechnungen oder Eingabe auch als sog. Float-Werte Eingang finden können. Diese können beliebige Zahlen sein, auch Fließkommazahlen, wie z. B. 0,5, 2,4. Umgekehrt: Sollen Fließkommazahlen - also sog. Gleitpunkttypen einfacher Genuigkeit, als Ergebnisse vorkommen können, muss die Funktion float verwendet werden, da sie diese als einzige Funktion in SSC anzeigen kann.
Argumente für float()
label
- Unter einem Label versteht man den Beschriftungstext (String) oder die Bezeichnung eines Bereiches in der Syntax, der als Verbindung zwischen einem Eingabefeld und der Beschriftung dient und später auf dem User Interface angezeigt wird. Ein Label kann auch aus einem Text und /oder einem Icon bestehen. So kann die Optik des Menüs eines programmierten Indikators im Charting angepasst und verändert werden.
default
- Der Default-Wert ist der Standard. Bei einem Indikator ist dies bspweise der in der Literatur oder vom Schöpfer des Indikators gesetzte Normalwert eines Parameters, der zur Berechnung des Indikators normalerweise verwandt wird. Der Default-Wert wird automatisch genutzt, wenn durch den User keine abweichende Eingabe gemacht oder keine andere Methode verwendet wird.
- min Mit dieser optionalen Angabe legen Sie fest, welchen Mindestwert das Programm für die Darstellung einer Zahlenreihe oder eines Parameters anzeigen wird. Er bildet also die Untergrenze für die Darstellung im Chart oder im separaten Fenster unter dem Chart.
- max Hier kann der optionale Maximalwert für die Darstellung einer Zahlenreihe festgelegt werden. Beispielsweise wenn ein Oszillator in einer bestimmten Bandbreite mit einer genauen Obergrenze angezeigt werden soll.
- Ein Beispiel ist der jeweils höchste Wert, der bei der Average True Range aus drei verschiedenen Höchstwerten herausgefiltert und dann in die Anzeige eingetragen werden muss:
Integer
- Wird eine Ein- oder Ausgabe mit „integer“ definiert, so besagt dies, dass nur ganze Zahlen als Parameter eingetragen oder als Ergebnis angezeigt werden können. Ganze Zahlen haben keine Nachkommastellen und die Form 12, 133 oder 393
Boolean
- Ein Sonderfall der Darstellung im UI ist die Verwendung der sog. Boolschen Zahlen. Hierbei wird zwischen den binären Grundformen „0“ und „1“ in der Anzeige unterschieden. Dabei bedeutet ein Wert von „0“ dass ein Ergebnis oder eine Aussage nicht zutrifft bzw. falsch ist und ein Wert von „1“, dass eine Aussage oder ein Ergebnis zutrifft bzw. richtig ist.
- Anwendung findet diese Unterscheidung z.B. wenn eine Checkbox für einen Teil der Darstellung notwendig wird, die man im Menü aktivieren oder deaktivieren können soll. Z.b. für die Anzeige oder das Ausblenden eines Indikators im Chart.
Set
- Mit dieser Funktion definiert man, dass bei der Anzeige nur Wertepaare berücksichtigt werden können. Für die Angabe der Zahlenwerte kann entweder der entsprechende String verwendet werden oder Wert, die in einem der Zahlenpaare enthalten sind, die über den Indikator berechnet oder angezeigt werden.
Study - Metadaten für Indikatoren
Study
- Ist ein Präfix mit dem Metadaten von Indikatoren bei der Erstellung des SSC-Codes vorab gesetzt werden können. Zudem wird über „Study“ die Bezeichnung für den jeweiligen Indikator festgelegt, die unter anderem dann im Chart und im rechten Menü entsprechend angezeigt wird.
Input Labels
- IL sind Bezeichnungen, die auf die jeweiligen Eingabemöglichkeiten verweisen. Der momentane Wert jeder Eingabemöglichkeit wird hinter dem Label/der Bezeichnung dieses Indikators angezeigt.
study precision
- Gibt die Anzahl der Nachkommastellen des Indikators bei der Anzeige im Chart vor. Hierbei handelt es sich also um eine Funktion, die sowohl in die Berechnung des Indikators (also im wörtlichen Sinn die mathematische Präzision) hineinspielt, als auch in die Genauigkeit der Anzeige beim Chart.
Study Range
- Mit der SR wird der Zoom für den anzuzeigenden Wertebereich auf der Y-Achse vorgegeben. Hierbei kann mit der Verwendung der Befehle min (kleinster Wert auf der Y-Achse) und max (größter Wert auf der Y-Achse) ein Korridor definiert werden, in dem der Indikator dargestellt werden soll, bevor man den Indikator bspw. mit der Maus verschoben oder die Skalierung manuell verändert hat.
- Anhand des Aroon Oszillators kann man leicht erkennen, wie die vorgegebene Bandbreite des Indikators von -100 bis +100 als Anzeigebandbreite mit einem leichten Puffer nach oben oder unten optimiert werden kann. In diesem Fall haben wir die Defaultwerte für Study Range auf -120 und 120 gesetzt:
studySimilarValues
- Diese Funktion beeinflusst die Position des Indikators im Charting. Denn hier wird angegeben, ob ein Indikator Werte in einem ähnlichen Bereich wie die Haupt-Zeitreihe (der Basiswert auf den sich der Indikator bezieht) besitzt. Dies gilt z.B. für einen EMA/SMA/Ichimoku, Bollinger Bänder usw., die ähnliche Werte bzw. aufgrund der Berechnung eine ähnliche Bandbreite an Werten haben, wie der Basiswert im Chart.
- Diese Funktion findet dagegen keine Verwendung bei Indikatoren wie den MACD oder Oszillatoren, deren Berechnungsformel Werte in vom Chart unabhängigen Bereichen liefern, da diese Werte bspw. in einem bestimmten Korridor, also z.B. im Bereich von [0, 100], [-100, 100], usw. liegen.
SSV
- beeinflusst auch die Platzierung des Indikators: wenn der Wert 1 ist, wird der Indikator im gleichen Chart wie die Zeitreihe platziert, auf die sich der Indikator bezieht. Wenn der Wert 0 ist, wird der Indikator in einem separaten Chart platziert.
- Wenn Sie einen Indikator in einen anderen Chart verschieben, beeinflusst er die Skala, in die der Indikator platziert wird.
- Wenn der Wert 1 ist, wird der Indikator auf der gleichen Skala wie die Zeitreihe im Chart platziert, auf die sich der Indikator bezieht.
- Wenn der Wert 0 angegeben wird, wird der Indikator auf einer separaten Skala platziert.
StudyWarmup #
- Hier kann angegeben werden, wie viele Berechnungsschritte durchgeführt werden sollen, bevor ein Indikator im Chart angezeigt wird. Beispielsweise für gleitende Durchschnitte oder spezielle Oszillatoren mit einer hohen Parameterzahl kann diese Funktion sehr nützlich sein, weil erste Berechnungsschritte ausgeblendet werden, die ggf. ungültige, verwirrende oder sprunghafte Ergebnisse liefern.
- Erst wenn die Historie an Rechenschritten lang und damit aussagekräftig genug ist, wird auch der Indikator eingeblendet. Diese Anzahl der Rechenschritte wird nach SWU als ganzzahliger Wert eingetragen.
Ein einfaches Beispiel ist das Default-StudyWarmup beim EMA, das in unserer Standardeinstellung bei 10,36*(n+1) liegt.
studyMinData
- Mit diesem Wert gibt man an, ab welchem Datenpunkt mit der Berechnung begonnen werden soll oder anders gesagt: Wie viele Datenpunkte übersprungen werden sollen, bevor die Berechnung startet. Diese Option ist z.B. für Indikatoren nützlich, die eine feste Anzahl von historischen Datenpunkten pro Berechnung benötigen.
Plot – Befehle für die Darstellung der Indikatoren im Chart
- Mit dem Befehl „plot“ und seinen Unterbefehlen kann man die Darstellung der Indikatoren im Chartfenster festlegen.
- Die Anzeige von Indikatoren im Charting kann dabei stark variieren und auf vielerlei Arten angepasst werden. Dafür liefern wir unterschiedliche Programmiermöglichkeiten und Einstellungen. Dabei können die einzelnen Darstellungsschichten beliebig oft miteinander verbunden werden, um unterschiedlichste, exakt definierte Darstellungsarten zu erhalten.
- Eine Beispielzeile: plotLine("Linie", offen)("Breite", 2)("Farbe", "blau")
Plotband
- Mit dieser Funktion kann eine fortlaufende, eingefärbte Fläche zwischen zwei Indikatoren im Charting dargestellt werden. Die Werte der beiden oberen (argument top) und unteren (argument bottom) Zahlenreihen der Indikatoren legen dabei die Grenzen fest, innerhalb derer das grafische Band verläuft bzw. die Fläche mit Farbe ausgefüllt wird. Diese Funktion ist insbesondere bei Kanal-Indikatoren wie Ichimoku, Bollinger Bändern (siehe unten) oder Keltner Channel hilfreich zur Visualisierung des Indikatorverlaufes im Chart.
- Der einfachste Kanalindikator ist der HHLL, der aus einer Spanne von Kursdaten die aktuell höchsten und tiefsten Werte herausfiltert und so lange in den Chart als waagrechte Linie abträgt, bis im untersuchten Zeitintervall ein höherer und/oder ein tieferer Kurs aufgetreten sind. So entstehen also zwei Bänder, die jeweils die Höchst- und Tiefstkurse einer Periode im Chart fortlaufend sichtbar machen.
- Option visible ist eine Funktion mit der die Anzeige der Bandeinfärbung aktiviert oder deaktiviert werden kann.
- Mit Option Fillcolour wird die Farbe festgelegt, in der das Hauptband dargestellt werden soll. Option FillcolourUp und Option FillcolourDown legen die Farben fest, falls es sich um mehrere oder voneinander durch einen weiteren Indikator getrennte Bänder handelt (zb. bei Bollinger Bändern, bei denen ein mittlerer gleitender Durschnitt zwei Bänder voneinander trennt).
PlotCandles
- Mit PC lassen sich die sogenannten Kerzen in einem Candlestick- oder Kerzen- Chart darstellen. Sie werden in der Form open, high, low und close für die jeweile Zeiteinheit angegeben. Dabei werden in die Zahlenreihe „open“ die Eröffnungskurse eingetragen, in die Zahlenreihe „high“ die Höchstkurse, in die Zahlenreihe „low“ die Tiefstkurse und in die Zahlenreihe „close“ die Schlusskurse der betrachteten Periode.
- Hier gibt es als zusätzliche Einstellmöglichkeit zu „option visible“ noch die „option marker“, die die Darstellung des Kursmarkers oder Wert des aktuellen Kurses auf der Y-Achse ein- oder ausschaltet. Zudem lassen sich farbigen Darstellungen der Kerzen selbst auch festlegen:
- Mit OptionColour wird die Farbe des sogenannten Dochts einer Kerze festgelegt. OptionUpColour legt die Farbgebung der Farbfüllung für Kerzen mit steigenden Kursen und OptionDownClour die Farbgebung der Farbfüllung für Kerzen mit fallenden Kursen fest. Die Farbe der Umrandung für steigende Kurse in einer Kerze lässt sich mit Option upBorderColour und für fallende Kurse mit downBorderColour festlegen.
- Um auch die Breite der Umrandungslinie zu ändern, kann mit Option width gearbeitet werden.
PlotCircles
- Da man sowohl Kurse, als auch die Einzelwerte eines Indikators nicht nur als durchgezogene Linie oder in Form eines aussagekräftigen Kerzencharts anzeigen kann, gibt es zusätzlich die Funktion „plotCircles“, mit der die Einzeldaten als kleine gefüllte Kreise im Chart abgetragen werden. Dabei werden die Einzelwerte der Zahlenreihe als Mittelpunkt der Kreise definiert.
- Funktionen wie „option visible“, „option marker“, „option colour“ stehen hier auch zur Verfügung. Zusätzlich kann mit „option width“ die Größe, also der Durchmesser der dargestellten Kreise verändert werden.
Plot Directional
- Mit dieser Funktion können mehrere Geraden auf der Basis der Indikatorwerte in den Chart gezeichnet werden. Dabei handelt es sich aber nicht um klassische Verbindungslinien, die zwei Punkte umfassen und in die Zukunft fortgeschrieben werden.
- Mit Plot Directional lassen sich Trendlinien zwischen den einzelnen Indikatorpunkten konstruieren, die die jeweilen Punkte miteinander verbinden und in Richtung der Veränderung der Indikatorenwerte eingezeichnet werden. Jeder Punkt auf der Linie hat dabei eine zugehörige Richtung: aufwärts oder abwärts. Jeder Wert dieser Reihe stellt die Richtung dar, die mit dem aktuellen Punkt verknüpft ist. Positive Werte zeigen einen Aufwärtstrend und negative Werte einen Abwärtstrend an. Je nach Richtung wird eine andere Farbe verwendet, um den jeweiligen Punkt zu zeichnen.
- So lassen sich sehr schnell und einfach Anzeigen konstruieren, bei denen man sofort erkennen kann, ob der Indikator (und somit auch der Basiswert) in einem Aufwärts- oder Abwärtstrend befindlich ist.
- Neben den üblichen Funktionen wie Ein- und Ausschalten der Anzeige oder Festlegen der Breite der dargestellten Linien kann bei dieser Darstellungsart definiert werden, welche Farbe für einen Aufwärtstrend gelten soll („Option upColour“) und welche für einen Abwärtstrend („Option Downcolour“). Zusätzlich kann auch für sog. Seitwärtsbewegungen oder Seitwärtsmärkte eine dritte Farbe mitgegeben werden, falls sich also der Wert zwischen zwei Datenpunkten des Indikators nicht geändert hat („Option sideways Colour“).
Plot Histogramm
- Mit dieser Funktion lässt sich ein Indikator als Histogramm darstellen. Relevant für die Optik sind dabei die Funktionen „Option fillColour“, die die Füllfarbe der Balken des Histogramms festlegt und „Option borderColor“ zur Festlegung der Farbe der Umrandung der Balken.
Plot Line
- Wenn Sie eine einfache durchgezogene Linie zwischen den einzelnen Datenpunkten des Indikators einzeichnen möchten, können Sie mit „plotLine“ arbeiten.
- Soll diese Linie noch einen unteren grafischen Bereich hin zur X-Achse besitzen, der zur besseren Kenntlichmachung schraffiert oder eingefärbt wird, können Sie statt plotLine plotMountain verwenden und damit den Indikator als sogenannten Mountain-Chart darstellen.
- Ein solches „Berg-Diagramm“ kann auch mit einem Farbverlauf aus verschiedenen Farben versehen werden. Hierfür werden die Befehle „Option upColour“ und „Option downColour“ verwendet.
Plot OHLC
- Mit dieser Funktion lässt sich quasi die vereinfachte oder abgespeckte Version eines Kerzencharts darstellen: Ein Kursdatenverlauf, bei dem für jeden Zeitpunkt die Handelsspanne über Höchstwert und Tiefstwert, sowie Startkurs oder Eröffnungskurs und Endkurs bzw. Schlusskurs abgetragen werden. Diese Abfolge von Kursstäben mit Markierung von Eröffnungskurs auf der linken Seite und Schlusskurs auf der rechten Seite nennt man auch Barcharts.
- Mit den Eingaben für „high“, „low“, „open“ und „close“ werden die Datenreihen entsprechend ihrer preislichen oder zeitlichen Position zugewiesen und später in den Chart eingetragen. Zusätzlich lassen sich die OHLC-Bars noch in unterschiedlichen Farben darstellen, je nach dem, ob die Werte im Zeitverlauf eines Bars gestiegen ( Option upColour) oder gefallen sind (Option downColour).
- Für die aktuellste Bar, die noch nicht abgeschlossen ist, lässt sich mit Option incompleteColour eine dritte Farbe wählen, die anzeigt, dass dieser Stab noch in Entstehung befindlich und nicht abgeschlossen ist.
PlotThreshold
- Soll neben einer einfachen Indikator-Linie noch die grafische Darstellung einiger oberer oder unterer Schwellenwerte im Chart Berücksichtigung finden, kann man mit PlotThreshold arbeiten.
- Upper threshold und Lower threshold legen dabei die oberen und unteren Limits fest, ab denen die Schwellenwerte erreicht sind und entsprechend Daten als weitere Linien in den Chart abgetragen werden. Die Bereiche jenseits der Schwellen und zwischen den Schwellen können farblich gefüllt werden. Hier verwendet man die Funktionen upColour, downColour und sidewaysColour für den mittleren Bereich. Mit breakoutsVisible hat man dann einen Befehl, der festlegt, ob Werte jenseits der oberen oder/und unteren Threshold-Grenzen abgetragen werden sollen. SidewaysVisible schaltet die Anzeige des Bereichs zwischen den beiden Grenzwerten an oder aus.
- Ein Beispiel für die Anwendung der Schwellenwerte bei der grafischen Umsetzung eines Indikators im Chart ist der Aroon Up/Down, der gleich mit drei Schwellenwerten arbeitet: Der Indikator kann Werte zwischen 0 und 100 einnehmen und hat daher drei Schwellenwerte bei 30, 50 und 70, die in der Fachliteratur als Signallinien definiert – und entsprechend in einem Subchart eingetragen werden:
PlotVolume
- Mit dieser Funktion lässt sich ein zweifarbiges Histogramm darstellen, das für die Anzeige des Volumens entwickelt, aber auch für andere Datenreihen verwendet werden kann. Hier werden Datenreihen insofern in seriesA und seriesB unterschieden, als abwechseln die Werte der abgeschlossenen Zeiteinheit verglichen werden und angezeigt wird, ob der neue Wert über oder unter dem vorherigen liegt. Ist diese Differenz positiv, wird die Farbe für steigendes Volumen (oder eine andere Untersuchungseinheit) angezeigt. Ist die Differenz negativ, also der neueste Wert kleiner, als der Wert zuvor, wird die Farbe für fallendes Volumen angegeben. Neben der unterschiedlichen Farbausgabe entstehen so fortlaufend zwei unterscheidbare Zahlenreihen, die auch später weiter bearbeitet werden können.
- Ein weiteres Beispiel für verschiedene Zeitreihen sind Vergleichscharts, wie sie bspweise mit einem Indikator wie der Korrelation ausgewertet werden können. Da die Berechnung und der Vergleich der Korrelation zwei Basiswerte erfordert, die verglichen werden sollen, muss von Anfang an mit zwei Zeitreihen und ihren beiden verschiedenen Quellen – also zunächst Basiswerten- gearbeitet werden. Hier kann man entsprechend die Daten auf Quelle 1 und 2 oder in SSC entsprechend aus „Source A“ und „Source B“ auswerten.
Mathematische Befehle und Berechnungen
In diesem Abschnitt finden Sie die Auflistung aller mathematischen Operationen, die SSC angewendet werden können und deren Abkürzungen für die Eingabe.
Abkürzung
|
Funktion
|
---|---|
Abs |
|
Avg |
|
Ceil |
|
floor |
|
round |
|
highest |
|
lowest |
|
max |
|
Min |
|
offsetHighest |
|
offsetLowest |
|
sign |
|
sum |
|
sqrt |
|
stdev |
|
md |
|
movingAvg |
|
linRegSlope |
|
exp |
|
Log |
|
pow |
|
sin |
|
Cos |
|
tan |
|
Einzelne Indikatoren als Beispiele
SMA
- Um einen einfachen gleitenden Durchschnitt zu programmieren oder auszubauen, kann man sich der Vorlage des SMA im Charting bedienen und so auch schon einige Punkte über SSC lernen:
- Der Name des Indikators kann unter „Study Name“ angepasst werden, die Parameter für die Berechnung werden gleich zu Beginn unter n= integer festgelegt, d.h. hier werden ganzzahlige Werte eingetragen, die die Anzahl der zusammengefassten Kursdaten festlegen.
- Mit Study Similar Values kann der Indikator im Chart eingefügt (Wert = 1) oder unter den Chart mit einer eigenen Skala geschoben werden. Diese Funktion kann bei Oszillatoren und speziellen Trendfolgern oder auch bei Systemen angewandt werden, die nur Signale anzeigen sollen.
- Displacement beschreibt, um wie viele Zeiteinheiten der Eintrag des Indikators nach Rechts oder Links verschoben werden soll. Dies kann also bspweise bei Indikatoren wie dem Ichimoku verwendet werden, der als Band-Indikator und Trendfolger auch mit in die Zukunft verschobenen Durchschnitten arbeitet.
- In der Formel selbst wird der Durchschnitt der Tage auf Basis der für „n“ definierten Parameter von Zeile 2 berechnet. Dabei können Sie nicht nur unterschiedliche Berechnungszeiträume angeben, die in Zeile 2 statt der 50 Zeitintervalle eingetragen werden. Sie können auch die Formel selbst verändern, indem z.B. der Berechnungskurs auf High, Low oder Open angepasst wird.
In der letzten Zeile kann dann die Darstellungsart angepasst werden.