Registrierung Kalender FAQ & Boardregeln Suche Mitgliederliste Moderatoren und Administratoren Linkdatenbank Startseite
Tradestation User Group Germany » freie Foren » Posts aus dem alten Userforum » an die Profis: Frage zu PFE Indikator » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
_jojo
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 1

_jojo ist offline
  an die Profis: Frage zu PFE IndikatorAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

habe aus dem Florek buch den Polarized Fraktal...(PFE) fein säuberlich abgetippt.
Leider ist am Ende ein Fehler in der Formel.
(plot1...)
FRAGE:
Hat jeman den richtigen code da??
es wäre mir seeehr geholfen!
Danke
jojo

01.02.2001, 15:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _jojo senden Homepage von _jojo
_Uwe
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313

_Uwe ist offline
  zu PFE IndikatorAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo jojo!

Da liegt vermutlich ein Tippfehler bei Dir bei Deiner Fleißarbeit vor. In der Anweisung Plot1(EMA,"EMA"); ist defintiv kein Fehler, wenn zuvor alles richtig abgetippt wurde.

Wie lautet die Fehlermeldung? Ich vermute den Fehler in der Variablendefintionszeile, wo ..., EMA(0); vielleicht nicht richtig geschrieben steht.

Denoch hier das gesamte, lauffähige Programm als Indicator:

Inputs: back(9), len1(2), Multi(0.333), Buyzone(62), Sellzone(-62);
Vars: PFE(0), C2C(0), Counter(0), Frac(0), EMA(0);

PFE = 0;
C2c = 0;
Counter = 0;
Frac = 0;
EMA = 0;

PFE = SquareRoot(Power(close-Close[back], len1)+100);

For Counter = 1 to 9 begin
C2C = C2C + SquareRoot(Power((close[Counter-1]-Close[counter]),len1)+1);
End;

if (close-Close[9]) > 0 then
Frac = Round((PFE/C2C)*100,0)
else
Frac = Round(-(PFE/C2C)*100,0);

If Currentbar = 1 then
EMA = Frac
else
EMA = Round((Frac*Multi)+(EMA[1]*(1-Multi)),0);

Plot1(EMA,"EMA");
Plot2(Buyzone,"Buyzone");
Plot3(Sellzone,"Sellzone");


Viel Erfolg
Uwe

01.02.2001, 16:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _Uwe senden Homepage von _Uwe
_Stockoperator
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 11

_Stockoperator ist offline
  Bemerkung: schon mal mit len1 = 3 oder len1 = 5 probiert ? ;-))Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich halte den Code in der angegebenen Form für "nicht wasserdicht" !!
Der Indikator ist so nicht vor Abstürzen sicher.

06.02.2001, 09:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _Stockoperator senden Homepage von _Stockoperator
_Uwe
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313

_Uwe ist offline
  Warum len1 = 3 oder len1 = 5 oder (2*n-1) ...Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

...für alle 1 < n oo nicht funktionieren kann


Hallo stockoperator!

Schönen Dank für Deinen Hinweis, der mir Gelegenheit gibt, zu betonen, daß ich nur den Quellcode aus der Literaturquelle wiedergegeben habe.

Die Interpretation der Umsetzung bedingt jedoch, daß man versucht, zu verstehen, was eigentlich programmiert wurde und da fällt auf, daß die Variable len1 keine Länge (Zeiteinheit) darstellt, wie bei einer Auswertung einer Zeitreihe zu erwarten wäre, sondern als Variable für den Exponent einer Potenz eingesetzt wird!

Der "Ausgangswert" von PFE bei jedem erneuten Berechnungsdurchlauf, ergibt sich nach der Formel

[1]PFE = SquareRoot( Power(Close - Close[back]), len1) + 100)

berechnet, wo u.a. die Variable len1 Verwendung findet. Die Anweisung in Worten gefaßt bedeutet dies:

[Gleichung eins]

  1. berechne die Differenz zwischen dem letzten Schlußkurs und dem Schlußkurs vor back-Bars: RateOfChange(Close,back) oder eben Close-Close[back]
  2. Potenziere das Ergebnis, also die Differenz (ROC) und verwende dabei als Exponent den Wert Len1
  3. addiere hierzu den Wert 100
  4. Berechne die Quadratwurzel aus der Summe


An dieser Stelle wird deutlich, warum jeder ungerade Wert für Len1 die Gefahr birgt, mit Fehlermeldung abzubrechen.

Wenn Dein Rechner mit Systemabsturz reagiert dann ist es ein sehr feinfühlender Rechner, der Dir verdeutlichen will, daß man aus einer negativen Zahl, keinen rationallen Zahlwert allein als Läsung angeben kann, was natürlich auch der Grund der Fehlermeldung ist.

Für alle, die es hier im Detail interessiert, ein wenig tiefergehend erläutert:
Die ermittelelte Differenz Close-Close[back] kann sowohl positive als auch negative Werte annehmen. Mit der Potenzierung hängt nun das Vorzeichen des Ergebnisses von dem Exponenten ab.

mit Close = 15 und Close[back] = 20 erhält man:

Power(15-20,len1) = (15-20)len1 = (-5)len1

  • len1=1:(-5)1 = -5
  • len1=2:(-5)2 = (-5)*(-5) = +25
  • len1=3:(-5)3 = (-5)*(-5)*(-5) = -125
  • len1=4:(-5)4 = (-5)*(-5)*(-5)*(-5) = +625
  • len1=5:(-5)5 = (-5)*(-5)*(-5)*(-5)*(-5) = -3125

    Da zu diesen Zahl der Wert 100 addiert wird, ergibt sich solange ein positiver Wert aus dem dann die Quadratwurzel gezogen werden soll, wie die potenzierte Differenz (ROC)len1 mathematisch größer als -100 bleibt (Ergebnis Null zu den positiven Werten gezählt).

    Ist die potenzierte Differenz jedoch kleiner als -100, so führt die Addition von 100 zu dem Wert, der kleiner als 0 bleibt (negativer Wert), aus dem eine Quadratwurzel mit rationalem Ergebniswert nicht gezogen werden kann.


    Nach soviel Erläuterung bleibt die Frage, warum für Len1 eine Varible verwendet wurde, ohne den Gültigkeitsbereich aufzuzeigen.

    In der Formel aus MetaStock ist dieser Wert als konstante mit einer 2 versehen, so daß immer der Quadratwert ermittel wird, der ja immer zu einem positiven Wert führt, aus dem sich dann auch immer eine Wurzel ziehen läßt.

    Ein Expiremtieren mit der Potenz sollte erst dann erwogen werden, wenn man sich über das: "Was will uns der Indikator sagen", Klarheit verschafft hat.

    Daher mein Tipp: len1 durch 2 ersetzen.

    Ich habe sogar den ersten Eindruck, daß mit der Einführung von back als Variable, ebenso der Term +100 im Ansatz für PFE angepaßt werden muß. Doch dazu müßte ich die Formel erst von ihrem "Gedanken" her untersuchen.

    Gruß
    Uwe



    Formelbeschreibung (Quelle: equis:
    Polarized Fractal Efficiency
    Rev. 03/20/97

    The January 1994 issue of Stocks & Commodities featured an article by Hans Hannula on Polarized Fractal Efficiency. Here is the custom formula for creating the five-period smoothed 10-day PFE using MetaStock:

    Polarized Fractal Efficiency

    Mov(If(C,>,Ref(C,-9),Sqr(Pwr(Roc(C,9,$),2) + Pwr(10,2)) /
    Sum(Sqr(Pwr(Roc(C,1,$),2)+1),9),-
    Sqr(Pwr(Roc(C,9,$),2) + Pwr(10,2)) /
    Sum(Sqr(Pwr(Roc(C,1,$),2)+1),9))*100,5,E)

  • 06.02.2001, 22:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _Uwe senden Homepage von _Uwe
      « Vorheriges Thema Nächstes Thema »
    Neues Thema erstellen Antwort erstellen
    Gehe zu:

    Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR