ArrayResize funktioniert nicht - Seite 2

 
Carl Schreiber #:

Da könntest Du dann das versuchen: e^(abs(0,5*(x-1)))-1.  // statt 0,5 gehen 0,1 .. 0,9

Die Frage ist, was ist für Dein Ziel am besten geeignet.

stimmt, die hat von anfang an nen steileren Anstieg. Habe jetzt zuerstmal die Symmetrische Variante des original ansatzes implementiert. also für werte > 1 die blaue und andernfalls die rote kurve. Der indikator hat sich nicht sonderlich verändert, eventiell mal mit x^2 testen. Was ich aber möchte ist, ein volatiliy Indikator, welcher möglichst schnell auf eine Kursänderung reagiert. Ich dachte mir, wenn close[i]/close[i-1] sehr groß oder sehr klein wird, soll der Indikator das möglichst schnell zeigen, sodass mögliche Trends/Breakouts frühzeitig erkannt werden


 
Claudius Marius Walter #:

stimmt, die hat von anfang an nen steileren Anstieg. Habe jetzt zuerstmal die Symmetrische Variante des original ansatzes implementiert. also für werte > 1 die blaue und andernfalls die rote kurve. Der indikator hat sich nicht sonderlich verändert, eventiell mal mit x^2 testen. Was ich aber möchte ist, ein volatiliy Indikator, welcher möglichst schnell auf eine Kursänderung reagiert. Ich dachte mir, wenn close[i]/close[i-1] sehr groß oder sehr klein wird, soll der Indikator das möglichst schnell zeigen, sodass mögliche Trends/Breakouts frühzeitig erkannt werden


Besser wäre doch für so etwas ein Mittelwert, der ema ist der einfachste:

#define ema(nxt,prv,c) (c >= 0.99 ? nxt : (((nxt)-(prv))*(c) +(prv)))
..
input double cCC = 0.5: //cPeriod: cCC = 2/(n+1)
...
OnCalculoate(..){
...
  static double emaCC = 1.0;
  double relCC = (close[i]/close[i-1])/emaCC;
  emaCC = ema(close[i]/close[i-1],emaCC,0.5);
   
 
Carl Schreiber #:

Besser wäre doch für so etwas ein Mittelwert, der ema ist der einfachste:

das hört sich so simple und einfach an.. werde es demnächst mal angehen und heir posten. aber nun nochmal zum indikator.

habe eine ganze studie daraus gemacht..

Zuerst bin ich dem Ansatz "die Funktion sollte symmetrisch sein" gefolgt. Ein sehr guter Ansatz. In der Praxis fielen mir aber ein paar Besonderheiten auf.
Trotz dass ich die funktion symmetrisch mit e^(abs(0,5*(x-1)))-1 programmiert habe, kam folgendes Ergebnis bei der Überprüfung heraus:

Diese Verteilung bezieht sich auf die Indikatorwerte. Der Indi bewegt sich zwischen 0 und 8+. Keine symmetrie mehr vorhanden.
Da muss ich wohl doch mit assymetrischen funktionen an die Sache heran. Daraufhin habe ich die wurzel gezogen und folgendes Ergebnis erhalten:

Sieht schon ganz gut aus. Dennoch weißt der Indikator im oberen drittel eine ungleiche verteilung auf. Man möchte Sagen, de relative Entropie ist << als 1.
daraufhin habe ich den tanh(x) auf den indikator losgelassen, um das rechte Eck zu trimmen:

Das Ergebnis ist ein sauberer Indikator mit einer hohen rel Entropie von ca 0.8, und einem relativen interquartilem Abstand von 4,3. Ist ganz ok.
mit noch mehr kursdaten könnte man eventuell den Mittelwert um den Median verschieben, soddas der Indikator vollständige symmetrie erlangt.

 

" Diese Verteilung bezieht sich auf die Indikatorwerte. Der Indi bewegt sich zwischen 0 und 8+. Keine symmetrie mehr vorhanden. Da muss ich wohl doch mit assymetrischen funktionen an die Sache heran. Daraufhin habe ich die Wurzel gezogen und folgendes Ergebnis erhalten:"

Warum?  So könnte man doch erkennen, ob der Markt normal ist (zB. Range-Trading) oder ausflippt (zB. kurzfristiges Trend-Trading). Je mehr man das normalisiert und harmonisiert, desto mehr von dieser Information über den Markt geht verloren - würde ich mal sagen.

 
wenn ich meinen überlegungen traue, hat durch die skalierung kein Informationsverlust stattgefunden. viel eher habe ich die verteilung in die mitte verschoben.
In der nachfolgenden abbildung wurden zwei level eingefügt. Dafür habe ich jeweils das untere und obere quartil gewählt. in diesem Bereich bewegt sich statistisch gesehen der kurs zu etwa 50% seiner zeit. darunter ist ganz niedrige volatilität und darüber wären dann die breakouts.
So gesehen scheint es mir, als hätte ich eher mehr information aus dem Indikator bezogen:

 
Claudius Marius Walter #:
wenn ich meinen überlegungen traue, hat durch die skalierung kein Informationsverlust stattgefunden. viel eher habe ich die verteilung in die mitte verschoben.
In der nachfolgenden abbildung wurden zwei level eingefügt. Dafür habe ich jeweils das untere und obere quartil gewählt. in diesem Bereich bewegt sich statistisch gesehen der kurs zu etwa 50% seiner zeit. darunter ist ganz niedrige volatilität und darüber wären dann die breakouts.
So gesehen scheint es mir, als hätte ich eher mehr information aus dem Indikator bezogen:

Sehr interessant. Jetzt würde ich noch gerne die anderen beiden Versionen auf dem selben Abschnitt sehen :)) Das Ergebnis wird ein erwartbares sein, nämlich die Erhöhung der Maxima und die Konzentration der Oszillatorkurve im unteren Teil.
Aber vielleicht treten durch die Überspitzung andere Charakteristika hervor.
 
du wirst keinen unterschied sehen, zumindest keinen signifikanten. hierbei handelt es sich nur um eine skalierung/normalisierung. Lies dir das Thema Entropie (informationstheorie) durch. Es ist die Mathematik, die zählt
 
Carl Schreiber #:

Besser wäre doch für so etwas ein Mittelwert, der ema ist der einfachste:

der vollständigkeit halber, habe ich diesen noch umgesetzt. Der Code ist etwas unordentlich..
Dateien:
 
Claudius Marius Walter #:
der vollständigkeit halber, habe ich diesen noch umgesetzt. Der Code ist etwas unordentlich..
Im Prinzip ist es egal, wie Du die Werte umrechnest, einzig wichtig ist welche Frage(n) welche Version die Handelsentscheidung kaufen, verkaufen, schließen und warten am besten voneinander unterscheidet.
 
Carl Schreiber #:
Im Prinzip ist es egal, wie Du die Werte umrechnest, einzig wichtig ist welche Frage(n) welche Version die Handelsentscheidung kaufen, verkaufen, schließen und warten am besten voneinander unterscheidet.

auch wieder wahr.. Danke euch:)!

Grund der Beschwerde: