Hallo, Hans,
bestimmt könnten Dir auch hier andere helfen, doch Du hast durch Diene Ansprache, ind der ein Lob für mich enthalten ist, für das ich danken möchte, vielleicht auch den Befragtenkreis, vielleicht zu Deinem zeitlichen Nachteil eingeengt.
Doch nun zu Deinen Darstellungen, die soweit richtig umgesetzt sind, nur das Du mit Plot1(DMI,"DMI") keinen Oszillator darstellst, sonden die volatilitätsbedingte Periodenlänge (dynamische Periodenlänge), die Du für die Längenangabe von Oszillatoren, wie z.B. dem RSI anwenden kannst.
Formelintepretation
Mit Backdays1 wählst Du eine "Grundperiode" (beim RSI ist die Standardeinstellung 14 Bars). Diese Grundperiode wird in Abhängigkeit eines Volatilitätsmaßes verändert.
Mit steigender Volatilität soll die Peroidenlänge verkleinert werden, während sie sich mit Abnahme der Volatilität vergrößern soll.
Als Faktor (1/Divisor = 1/volatility) wird das Verhältnis einer aktuellen Standardabweichung (Volatilität) über die Periode Backday2 gegenüber seines Durchschnittswertes, gebildet aus den Backdays3-Bars der jüngsten Vergangenheit.
Dieser Wert volatility, liegt im positiven Zahlenbereich und ist größer als Null, wenn in den letzten Backdays2 mindestens eine Veränderung im Closekurs aufgetreten ist. Anderseits wird die Abfrage volatility>0 vor der Divison erforderlich, die des sauberen programmstils wegen, auf jedenfall eingebaut werden sollte.
Teilt man nun eine Zeitvariable, wie sie hier mit backdays1 gegeben ist, durch diesen dimensionslosen Wert volatility, so erhalte ich wieder eine Zeitvariable, die jedoch eine gebrochen Wert beinhaltet. Daher wir der Ganzahlanteil für die weitere Bearbeitung herausgefilter (funktion IntPortion)
if volatility>0 then DMI=intPortion(backdays1/volatility)
Eine gute Ergänzung liefert die Einführung einer Bereichsbegrenzung für diese dynamische Periodenlänge (DMI -für Dynamic Momentum Indikator; nicht zu verwechseln mit dem DMI=Directional Movement Indicator- kann hier, in der von Dir benannten Literatur etwas "vorschnell" als RSI-Indikator interpretiert werden, wo es doch eigentlich nur um eine dynamische Länge bei der dargestellten Formel handelt).
if volitolity>0 then DMI=MinLen(MaxList(intPortion(backdays1/volatility),MinLen),MaxLen)
Damit steht DMI, was hier vielleicht eindeutiger als dynLen (dynamische Periodenlänge) bezeichnet werden sollte, zur Verfügung.
Zu beachten ist, das bei dem Einsatz, die automatische "MaxBarsBack"-Funktion (Format Indidicator->Properties) für Indikatoren/ShowMe/Paintbar in die irre geführt werden kann, wenn man nicht die Inputvariable MaxLen einführt.
Input: BasisLen(14), sDevLen(5), AvLen(10), MaxLen(50), MinLen(5); Vars: dynLen(0),volatility(0), StdAbw(0);
StdAbw = StdDev(Close,sDevLen); volatility = StdAbw/Average(StdAbw,sDevLen),AvLen);
if volitolity>0 then dynLen = MinLen(MaxList(intPortion(BasisLen/volatility),MinLen),MaxLen);
Plot1(dynLen, "dynLen");
Baust Du Dir die Funktion dynLen, so läßt sich diese Variable dynLen in verschiedenen Indikatoren als Längenparameter einsetzen, wenn die Funktion eine Varible als Übergabeparameter akzeptiert.
Viel Erfolg mit dem "dynIndikator", für den Du die dynamische Länge ermittelt hast. Uwe
|