Tradestation User Group Germany (http://www.tradernet.org/wbb/index.php)
|- Posts aus dem alten Userforum (http://www.tradernet.org/wbb/board.php?boardid=15)
|-- Normierung der Polarized Fractal Efficiency (PFE) (http://www.tradernet.org/wbb/threadid.php?boardid=15&threadid=663)


Geschrieben von _Hans_Handler am 12.04.2001, 12:10:

  Normierung der Polarized Fractal Efficiency (PFE)

Hallo,

Ich habe den Programmcode fuer der PFE Indikator aus dem Beitrag von Uwe vom 1.2.2001.
Ich habe nun einen Eingabeparameter verallgemeinert. Dadurch ändert sich jedoch auch die Amplitude des Indikators.
Ich suche jetzt einen Normierungsfaktor, sodass sich der verallgemeinerte PFE stets im Bereich -100 bis +100 bewegt.

Schönen Gruß,
Hans

Ursprünglicher Code:


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");


Verallgemeinerter Code:

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)+Power((back+1),len1));

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

if (close-Close[back]) > 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");





Geschrieben von _Uwe am 13.04.2001, 20:10:

  RE: Normierung der Polarized Fractal Efficiency (PFE)

Hallo, Hans!

Den von Dir mir zugeschriebenen Programmcode habe ich seinerzeit auf Anfrage dem Buch "Neue Trading Dimensionen" von Erik Florek entnommen.

Was eigentlich in der Formel auf der Seite 207, berechnet wird, ist nicht so geheimnisvoll, wie im Buch dargestellt, das, wie meine Texte, einen umsichtigen, wissenschaftlichen Lektor vertragen könnte. dargestellt ist. Die angebene Formel ist im Vergleich zu den Angaben auf der Seite für MetaStock-Formeln von Equis (und nach Logik) falsch und die Grafik (Abb. 117) ist kaum aus dem Formelansatz entstanden (eine EMA mit scharfen Spitzen deutet nicht auf eine Mittlung hin).

Nichts Chaos, wie im buch beschrieben, ein wenig Geometrie, wegen meiner auch fraktale, jedoch Lehrstoff mit dem bekannten Satz vom Pytagoras a^2+b^2=c^2 und ein wenig Prozentrechenkenntnissen erklärbar).

Hier die {kommentierte}Formel nach Equis:

Polarized Fractal Efficiency

Mov(
If(C,>,Ref(C,-9),
{Wenn Polarstrahl steigt dann +PolarC2C/SUMc2c}
Sqr(Pwr(Roc(C,9,$),2) + Pwr(10,2)) / Sum(Sqr(Pwr(Roc(C,1,$),2)+1),9),
{Wenn Polarstrahl steigt dann -PolarC2C/SUMc2c }
-Sqr(Pwr(Roc(C,9,$),2) + Pwr(10,2)) / Sum(Sqr(Pwr(Roc(C,1,$),2)+1),9))
{und als Prozentdarstellung}
*100,
{als exponentiale Durchschnittskurve dargestellt}
5,E)


Schaut man sich den Aufbau an, so wird man erkennen, daß hier nur
  1. die direkte "Länge" der Verbindungslinie (PolarC2C) zwischen zwei Close-Kursen, die eine Periode begrenzen,
  2. der "tatsächlichen Länge" der Wegstrecke, wie sie sich aus der Summation der "Einzelwegstrecken" (SUMc2c) von Tages-Close zu Tages-Close des Folgetages ergibt,
  3. gegenüber gestellt und in Prozent ausgedrückt wird (PFE = (PolarC2C / SUMc2c)*100).
  4. Eine exponentialle Glättung liefert die sichtbare Kurve


Nun das ganze nocheinmal auf EL übertragen, mit der Erweiterung von Heinz_Handler und Abänderungen einiger Anweisungen um der Beschreibung gerecht zu werden):

{BEGIN DES (kommentierten) EL-Programms}
Inputs: back(9), Multi(0.333), Buyzone(62), Sellzone(-62);
Vars: PolarC2C(0), SUMc2c(0), PFE(0), Counter(0), Frac(0), EMA(0);

{"Länge der Strecke" vom Close[back] bis zum Close[0]
- Pythagoras a^2+b^2 = c^2
- a^2 Quadrat der Preisdifferenz
- b^2 Quadrat der Baranzahl (Handelstage-Strecke)
- c^2 Quadrat der Verbindingslinien-"länge"
- PolarC2C Verbindungslinien-"Länge" zwischen den Closekursen}

PolarC2C = SquareRoot(Power(Close-Close[back], 2)+Power(back+1,2));

{
Ermittlung und Aufsummeirung der "wahren" Wegstrecken ("Längen" der Verbindungslinien zwischen aufeinanderfolgenden Tagesclosekursen, Mit a = Close-Close[1] und b = 1 = eine Handelstag-"Länge)"
}

SUMc2c=0;
For Counter = 1 to back
begin
SUMc2c = SUMc2c + SquareRoot(Power((Close[Counter-1]-Close[counter]),2) + 1);
End;

{
Mit PolorC2C steht der Wert der "Länge" der direkten (Geraden) Verbindungsstrecke (Zeit/Range) zwischen den Closekursen am Beginn und am Ende der Periode mit der Länge back+1 zu Verfügung. Der Wert SUMc2c stellt die Summe aller Teilstrecken innerhalb dieser Periode dar, die an jedem Tag, bei verbindung der Closekurse enstanden sind.

Beide "Streckenlängen" weren ins %-Verhältnis zueinander gesetzt, und da die Gerade die kürzeste Verbindung ist, ist ihr Wert kleiner oder höchstens gleich der Summation der Einzelweglängen (PolarC2C <= SUMc2c), woraus 0 < PFE < 100 folgt. Es wird nur der gerundete Wert ermittelt
}

PFE = round(100*PolarC2C/SUMc2c,0);

{
Die Vorzeichenbestimmung erfolgt über die Richtungsgröße der Polarstrecke
}

if (close-Close[back])<0 then PFE = -PFE;

{
Es folgt noch eine exponentialle Glättung
}

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

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

{ENDE DES (kommentierten) EL-Programms}


Nun hoffe ich, das die Abhandlung in diesem Sinne richtig ist, da ich keine andere Interpretation der EQUIS-Formel erkennen kann, denn danach benötigst Du keine Steuerung zur Nomierung der Werte zwischen -100 <= PFE <= +100, da diese als Prozentzahl, wo der Nenner immer einen größeren oder wenigsten den gleichgroßen Wert liefert, gar kein Ergebnis größer |100| liefern kann.

Kurzgefaßt stellt in dieser Vorstellung der Indikator eine Maßzahl für die "Gradlinigkeit" der Richtung dar. Je mehr Zickzacks notwendig werden, um einen Kurs zu erreichen, umso näher wird der Indikatorwert bei Null liegen (Vorzeichen nach Polarstrahlrichtung).

Mit dieser Definition wird aber auch wahrscheinlich, das weit auseinanderliegende Begrenzungen eine Periode (back) durch eine kleine Kennzahl von EMA(PFE) gekennzeichnet sein dürften, da die Schwünge um die Verbindungslinie beider Begrenzungsbars, die Größe des Nenners ("wahren Weg") bestimmen.

Die "Effizienz" der Richtung, die durch den "Polarstrahl" gegeben ist, ist am größten, wenn möglichts wenig schwünge auf dieser Strecke passieren (PFE strebt gegen |100|).

Vielleicht liest der Autor des Buches hier mit und kann kurz Stellung dazu nehmen, wo mein Fehler liegt, daß es mir nicht gelingt, Formel (S. 207), Abb.117 (S.209) und Programm (S.444) in seinem Buch in Einklang miteinander zu bringen.

Ich hoffe, daß ich nicht mehr Fragen aufgeworfen habe, als ich beantworten konnte. Zudem möge man mir zu Gute halten, daß heute Freitag der 13. und mir somit das eien oder andere Mißgeschick passieren darf.

Gruß
Uwe


Geschrieben von _Hans_Handler am 16.04.2001, 00:10:

  RE: Normierung der Polarized Fractal Efficiency (PFE)

Hallo UWe,

Vielen Dank für deine wunderbaren Erklärungen. Jetzt kann ich mir die Bedeutung der PFE zum ersten Mal anschaulich vorstellen.

Daher glaube ich auch jetzt, dass in der Berechnung der "Länge der Strecke vom Close[back] bis zum Close[0]" ein kleiner Fehler ist. Statt SquareRoot(Power(close-Close[back], 2)+Power((back+1),2)) sollte es wahrscheinlich (Power(close-Close[back], 2)+Power((back),2)) heissen.

Auch mich würde das Programm mit dem die Abbildung 117 gemacht wurde interessieren. Im besonderen die Bedeutung des 2. Parameters (z.B. 8/2, 13/5). Kann es sein das dies der im Programm auf Seite 444 angegebene "Faktor" ist ? Wenn ich dann im Programm noch statt "Close - Close[back]/Faktor" "(Close - Close[back])/Faktor nehme, gefallen mir die entstehenden Kurven eigentlich besser.

Liebe Grüße
Hans


Geschrieben von _Uwe am 16.04.2001, 11:10:

  RE: Normierung der Polarized Fractal Efficiency (PFE)

Dein Einwand, Hans, bezüglich des Einsatzes von back bzw. back+1 ist richtig, wenngleich nur bei kleiner Parameterwahl entscheiden. Stelle ich nämlich back=1 ein, so sollte ja PolarC2C=SUMc2c sein und bleiben.

Anderseits, wenn man von den der Betrachung zugrundeliegenden Anzahl der Bars ausgeht, die man zur Berechnung der Wegstrecken benögtig, dann sind dies eben back+1.

Vielleicht ist ja auch jemand im Besitz des orginalartikels, aus dem die Grundlagen entnommen werden können um nicht auf meiner möglichen Fehlinterpretation hocken zu bleiben (V.12:1 (38-41)January issue of Stocks & Commodities).

Gruß
Uwe

Powered by: Burning Board 1.1.1 © 2001 by WoltLab