Freitag, 19. April 2024, 01:06 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

klexer

unregistriert

1

Donnerstag, 10. Mai 2012, 11:23

Rohsystem mit Trendfilter

Hallo, hier nun wie versprochen das Rohsystem, noch ohne filter, nur aufgrund der neuen 5TagesHochs generiert.

Die Einstiege sind sehr rudimentär, nur open.
die Ausstiege ebenso.

Komprimierung: Täglich

***** Regeln ******
Enter Long:
NeuHoch >= 1 and NeuHoch > Ref(NeuHoch, -1)
and
Ref(ValueWhen(NeuHoch, Trendgesamt=1, 1, V),-1) > = Ref(ValueWhen(NeuTief, Trendgesamt=-1, 1, V),-1)

Exit Long:
low < = 5TagesLLV

Enter Short:
NeuTief >= 1 and NeuTief > Ref(NeuTief, -1)
and
Ref(ValueWhen(NeuHoch, Trendgesamt=1, 1, V),-1) < = Ref(ValueWhen(NeuTief, Trendgesamt=-1, 1, V),-1)

Exit Short:
high >= 5TagesHHV

Übergreifende Definitionen:
global calc VortagesLDPHigh:Ref(LastDP(H), -1);
global calc VortagesLDPLow:Ref(LastDP(L), -1);

global calc 5TagesHHV: Ref(HHV(high, 5), -1);
global calc 5TagesLLV: Ref(LLV(low, 5), -1);

global calc Vortag5TagesHHV: Ref(HHV(high, 5), -2);
global calc Vortag5TagesLLV: Ref(LLV(low, 5), -2);

global calc TrendUp: Schalter(0, 5TagesHHV >Vortag5TagesHHV, 1, 5TagesHHV <= Vortag5TagesHHV, 0);
global calc TrendDown: Schalter(0, 5TagesLLV >=Vortag5TagesLLV, 0, 5TagesLLV < Vortag5TagesLLV, -1);

global calc TrendGesamt:Schalter(0, 5TagesHHV >Vortag5TagesHHV, 1, 5TagesLLV < Vortag5TagesLLV, -1);

global calc NeuHoch:(If((If(Trendgesamt=1, CUM(Trendup), 0)) -
ValueWhen(Ref(CUM(Trendup),-1), Trendgesamt=-1, 1, V) >0
, (If(Trendgesamt=1, CUM(Trendup), 0))-
ValueWhen(Ref(CUM(Trendup),-1), Trendgesamt=-1, 1, V), 0));

global calc NeuTief: ABS((If((If(Trendgesamt=-1, CUM(TrendDOWN), 0)) -
ValueWhen(Ref(CUM(TrendDown),-1), Trendgesamt=1, 1, V) <0, (If(Trendgesamt=-1, CUM(TrendDOWN), 0)) -
ValueWhen(Ref(CUM(TrendDown),-1), Trendgesamt=1, 1, V), 0)));

***** Test-Einstellungen *****

Positionen: Long+Short
Enter-Basis: Open
Short: Open
Delay: 0
Exit-Basis: 5TagesLLV
Short: 5TagesHHV
Buy/Hold-Basis: Close
Trade-Mindestdauer: 1
Out-Mindestdauer: 1
Punkte testen
Startkapital: 100
Wert pro Punkt: 10000
Entry-Gebühren: 1
Exit-Gebühren: 1
Slippage: 0,5

Vorschläge zur Verfeinerung sind willkommen.

als nächstes werden die Retrace behandelt
»klexer« hat folgendes Bild angehängt:
  • NeuHochTief roh.PNG

klexer

unregistriert

2

Donnerstag, 10. Mai 2012, 12:22

jetzt die Retrace-Variante

Einstiege und Ausstiege immer noch rudimentär

***** Regeln ******

Enter Long:
(high > 5TagesHHV )
and
trendgesamt=-1
and
Ref(ValueWhen(NeuHoch, Trendgesamt=1, 1, V),-1) >
Ref(ValueWhen(NeuTief, Trendgesamt=-1, 1, V),-1)

Exit Long:
low < = 5TagesLLV

Enter Short:
(low <= 5TagesLLV )
and
trendgesamt=1
and
Ref(ValueWhen(NeuHoch, Trendgesamt=1, 1, V),-1) <
Ref(ValueWhen(NeuTief, Trendgesamt=-1, 1, V),-1)

Exit Short:
high > = 5TagesHHV

Übergreifende Definitionen:

global calc VortagesLDPHigh:Ref(LastDP(H), -1);
global calc VortagesLDPLow:Ref(LastDP(L), -1);

global calc 5TagesHHV: Ref(HHV(high, 5), -1);
global calc 5TagesLLV: Ref(LLV(low, 5), -1);

global calc Vortag5TagesHHV: Ref(HHV(high, 5), -2);
global calc Vortag5TagesLLV: Ref(LLV(low, 5), -2);

global calc TrendUp: Schalter(0, 5TagesHHV >Vortag5TagesHHV, 1, 5TagesHHV <= Vortag5TagesHHV, 0);
global calc TrendDown: Schalter(0, 5TagesLLV >=Vortag5TagesLLV, 0, 5TagesLLV < Vortag5TagesLLV, -1);

global calc TrendGesamt:Schalter(0, 5TagesHHV >Vortag5TagesHHV, 1, 5TagesLLV < Vortag5TagesLLV, -1);

global calc NeuHoch:(If((If(Trendgesamt=1, CUM(Trendup), 0)) -
ValueWhen(Ref(CUM(Trendup),-1), Trendgesamt=-1, 1, V) >0
, (If(Trendgesamt=1, CUM(Trendup), 0))-
ValueWhen(Ref(CUM(Trendup),-1), Trendgesamt=-1, 1, V), 0));

global calc NeuTief: ABS((If((If(Trendgesamt=-1, CUM(TrendDOWN), 0)) -
ValueWhen(Ref(CUM(TrendDown),-1), Trendgesamt=1, 1, V) <0, (If(Trendgesamt=-1, CUM(TrendDOWN), 0)) -
ValueWhen(Ref(CUM(TrendDown),-1), Trendgesamt=1, 1, V), 0)));

***** Test-Einstellungen *****
Positionen: Long+Short
Enter-Basis: (If(high > 5TagesHHV, 5TagesHHV, open))
Short: (If(low < 5TagesLLV, 5TagesLLV, open))
Delay: 0
Exit-Basis: 5TagesLLV
Short: 5TagesHHV
Delay: 0
Buy/Hold-Basis: Close
Trade-Mindestdauer: 1
Out-Mindestdauer: 1
Punkte testen
Startkapital: 100
Wert pro Punkt: 10000
Entry-Gebühren: 1
Exit-Gebühren: 1
Slippage: 0,5
Portfolio Zinssatz: 5
Risikotoleranz: 24
Money-Manag. Fester Kontrakt
Anzahl 1
Delta 50000
Max. Kontrakte 100
»klexer« hat folgendes Bild angehängt:
  • NeuHochTief roh retrace.PNG

klexer

unregistriert

3

Donnerstag, 10. Mai 2012, 12:30

Stops bei Entry festgelegt

ich hätte gerne einen Stop, der bei longs das zum Entry gültige 5TagesLLV als Stoplevel festlegt, solange der 5TagesLLV tiefer als der 5TagesHHV ist, als BE Lievel erreicht hat. (siehe 1. September 2010, wird wegen kleinem Rückgang, der immer noch oberhalb des 5TagesLLV bei entry ist, ausgestoppt, so ein Ärger..)

wie wird das programmiert ?

habs noch nicht hinbekommen

klexer

unregistriert

4

Donnerstag, 10. Mai 2012, 12:39

KK beide Systeme

hier die KK beider Systeme zusammen
»klexer« hat folgendes Bild angehängt:
  • NeuHochTief roh + retrace KK .PNG

Ganesha

unregistriert

5

Donnerstag, 10. Mai 2012, 22:39

Hallo,

habs gerade mal beguckt: Zumindest beim Bund sieht das ganz gut aus. Direkte grobe Schnitzer sehe ich auf Anhieb nicht. Also abgesehen von Min/Max-Ding, was grade auf EOD-Basis noch drastischer ist.

Allerdings habe ich mich nicht einstopen lassen, sondern bin beim Open der nächsten Periode eingestiegen.

Für Aktien geht das System allerdings nicht, die Slippage frisst dort den Gewinn auf.

Viele Grüße

klexer

unregistriert

6

Freitag, 11. Mai 2012, 09:42

Hallo Ganesha

das System ist ja an sich kein System sondern nur die Vorlage für Einstiege, wenn dieser Vorfilter das ok gibt.

Inzischen hab ich auf MinMax umgestellt, es ergab sich in EURUSD keinerlei Veränderung.

Es ist auch bisher nix robustet, optimiert etc. Da ist noch genug Luft nach oben.

Was mich jetzt beschäftigt ist der Stop.

Kann man fixe Werte eingeben, so z.B. als Zusatzbedingung für einen Trailingstop, die da lautet: trailingstop gilt erst dann, wenn der Trailingstop >= dem Eibnstiegspreis ist. Solange gilt der 5TagesLLV-Wet zum Zeitpunkt des Einstiegs (!) und bleibt so lange fix.
Damit dürften die Unterbrechungen im den Longs wegfallen

Wer kann da helfen und hat eine Idee ?

klexer

unregistriert

7

Freitag, 11. Mai 2012, 11:02

so geht der Stop, eigentlich ganz einfach... seufz
für longs:
global calc ExitL:If(5TagesLLV-ValueWhen(5TagesLLV, EntL=1, 1, V) > 0.01, 5TagesLLV, ValueWhen(5TagesLLV, EntL=1, 1, V));

low <= ExitL

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »klexer« (11. Mai 2012, 12:48)


Ganesha

unregistriert

8

Freitag, 11. Mai 2012, 17:17

Kann man fixe Werte eingeben, so z.B. als Zusatzbedingung für einen Trailingstop, die da lautet: trailingstop gilt erst dann, wenn der Trailingstop >= dem Eibnstiegspreis ist. Solange gilt der 5TagesLLV-Wet zum Zeitpunkt des Einstiegs (!) und bleibt so lange fix.
Damit dürften die Unterbrechungen im den Longs wegfallen
Das kannst Du mit zwei Stops machen.
1. (Intraday-Verluststop) Du setzt einen Mindestgewinn von z.B. 0.001. Dazu die Optionen "nur in Traderichtung nachziehen".
2. (Intraday-Verluststop) auf 0% setzen und dazu eine Berechnungsbasis (über Optionen) die im Definitionsbereich gesetzt wird. IMO muss man noch irgendwas mit 'fixieren' anklicken.

Die Berechnungsbasis muss man dabei mit ref(-1) zurücksetzen. Zum Beispiel könnte man so einen Stop "ein Tick unter dem Tief der letzten fünf Tage" setzen:

global calc LongStop: ref(LLV(low, 5),-1)-0.01;
Der LongStop wird als Berechnungsbasis im Stop eingetragen.

Die Exitregel bleibt dabei leer.

In Deinem Fall kannst Du theoretisch den LongStop als Berechnungsbasis in beide Stops eintragen. Einer wird nachgezogen, der andere bleibt wo er ist. Praktisch ist es IMO besser sowas zu definieren:

global calc ITL ref(LLV(low, 5),-1)-0.01;
global calc IVL ref(LLV(low, 5),-1)-0.01;

Dann einmalig die Stops über die GUI definieren. Man kann dann verschiedene Varianten direkt in den Handelsregeln definieren.

klexer

unregistriert

9

Freitag, 11. Mai 2012, 18:45

hi Ganesha

ich hab die Stops jetzt folgendermassen gelöst:
global calc ExitL:ValueWhen(Ref(5TagesLLV,-1), 5TagesLLV> Ref(5TagesLLV,-1), 1, V);
global calc ExitS:LastDP(H) >Ref(LastDP(H), -1) and Ref(LastDP(H), -1)> Ref(LastDP(H), -2) and Ref(LastDP(H), -2)> Ref(LastDP(H), -3) and high >= 5TagesHHV ;

den ExitS kann man sicher eleganter formulieren, wichtig ist nur: es müssen 3 aufeinander folgende Tage einen höheren LastDP geben.

Aber das Ergebnis ist jetzt prima, viele unnötige exits eliminiert
»klexer« hat folgendes Bild angehängt:
  • NeuHochTief roh III bessere Stops mini.PNG

Ganesha

unregistriert

10

Freitag, 11. Mai 2012, 23:21

Hi Klexer,

Du bist doch in Deinem Ansatz EOD unterwegs? Dann zwei Punkte: Du brauchst dort kein LastDP(), Du kannst ja einfach ref(high,-1) abfragen. Außerdem unterstelle ich (nur zur Sicherheit) dass Dein Exit in die Zukunft guckt. Und zwar genau dann, wenn LLH, LLV oder LastDP ihren jeweiligen Signalwert an genau dem Tag des Exits erreichen.

Die Unterstellung ist natürlich erstmal nur eine rein akademische Unterstellung. Ich sehe schon, dass Du mit vielen ref() arbeitest. :)

Ich hatte den Ansatz gestern mal kurz auf meinen aktuellen Lieblings-Futures geprüft. Dort kam man ganz gut auch ohne Einstoppen und Exit-Stops zurecht. Gemäß meiner Üblichkeiten habe ich den Entry/Exit um jeweils eine Periode zurückgesetzt und das hat ganz gut funktioniert.

Der Exit von heute hat dagegen eine langfristige Verschlechterung gebracht.

Viele Grüße

klexer

unregistriert

11

Dienstag, 15. Mai 2012, 15:48

den Versuch mit einem trendsystem hab ich eingestellt, ein HS mit zusätzlichen Funktionen auf die KK funktioniert besser.