Donnerstag, 25. April 2024, 10:30 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

21

Montag, 17. August 2009, 23:14

Hallo Snoopy,

so lange das der Rest des Codes und Systems nicht mehr als 100 Perioden fordert wird alles gut... :D Ansonsten gibt es eventuell ein paar kleine Fehltrades aufgrund falscher Berechnungen! Meine AWS-Zeitangabe war natürlich mal wieder maßlos überzogen..weißte aber sicher und die anderen Leser bestimmt auch.. ;) Dennoch,wenn man haarscharf kalkuliert ist der AWS zu langsam und lastet das PC-System zu hoch aus,was eine höhere Slippage zur Folge haben kann! Ich würde ihn in kleinen Komprimierungen für den realen Handel zuweilen NICHT unbedingt einsetzen...
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

22

Dienstag, 18. August 2009, 01:58

1.Teil

Hallo,

als 1. habe ich mir überlegt, wie man den Bewegungsstop testen kann, so dass man sieht, ob er auch wirklich was bringt. Hierzu habe ich auf den EuroStoxx50, im 5min Chart, ein einfaches HS geschrieben, welches Anfang des Tages long geht, falls der VortagesClose überschritten wird. Es wird nur ein Trade pro Tag gemacht und mit dem Bewegungsstop möchte ich möglichst am Tageshoch ausgestopt werden.

Viele Grüße
Torsten
»sten« hat folgendes Bild angehängt:
  • 090818_basisSystem.GIF

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (18. August 2009, 02:17)


PnLtobePositive

unregistriert

23

Dienstag, 18. August 2009, 02:07

Hallo Zusammen,

Zitat

Das ist ein Punkt, der einer längeren Erklärung bedarf! Ich werde dazu gesondert schreiben

Erwartungsvoll.... :)

Zitat

Ist es das Dilemma des diskretionären Traders, oder ärgert es dich auch wenn dein System daneben liegt?

Das gilt immer, egal ob diskretionär oder Systemhandel.

Zitat

...sich nicht darüber zu freuen wie viel man verdient hat!

Genau!

Zitat

Macht man an einem Tag zu viele Fehler hintereinander handelt man einfach nicht mehr weiter.

Richtig, so sollte es sein. Meine Hoffnung ist, daß ich künftig "nur" noch die Fehler mache, die ich Investox beigebracht habe.

Zitat

Wenn Dein System real an den Märkten handelt kommst Du vielleicht einmal in den Genuss (ich hoffe für dich dass das nie der Fall sein wird), einen der oben genannten Fehler zu machen! ;)

Das ist auch meine Befürchtung. ;(

Zitat

Gewinne werden dagegen meist emotionslos registriert! ;)

Ja, ja, völlig cool. Das dreifache Nettomonatsgehalt einfach so über Nacht zu gewinnen war für mich eine neue Erfahrung. Das Problem ist, daß ich mir danach wie der Großmeister vom Dienst vorkam.
Als nächstes liefen die Positionsgrößen aus dem Ruder mit den üblichen Folgen. Ungefähr bei Break Even kam ich wieder zur Besinnung. Hier könnte INV helfen.

Hier noch meine Anregung zum Anwenderstop:


Gruß

Alexander

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

24

Dienstag, 18. August 2009, 02:16

2.Teil:

Ich mag den Anwenderstop nicht, der belastet meine System zu stark. Es geht aber auch ohne Stop, indem man Exitregeln definiert und zu Visualisierung kann man eine globale Variable definieren und sich die Werte im Chart ansehen. Die Linie ist dann natürlich auch nach der Stopauslösung noch zu sehen, aber dass ist nur Kosmetik.

Ein low-Level Bewegungsstop für long-Trades könnte so aussehen:

Zitat


global Calc periodenZählerTäglich: Abschnitt(p, 1, y, l); //zählt täglich von 1,2 bis 56

{Test Bewegungsstop}
//Einschränkungen:
//1.) nur Intraday und keine Übernachtpositionen
//2.) Trades erst ab 2.Tagesperiode
global Const rundenAufStellenNachKomma: 0; //Stopwert runden, z.B. 2: 1.23456 -> 1.23
global Const pufferInProzVomKurs: [pufferInProzVomKurs:0.1,0.01,1,0.01,1,0.01,3]; //soviel Kursrauschen zulassen bevor ausstopt
global Const faktor: [faktor:2.0,0,3,0,3,0.1,3]; //faktor * Durchschnittskerzengröße ... Referenzkerzengröße

global Calc REFn1_pufferInTicks: Prec(Ref(Close, -1)/100 * pufferInProzVomKurs, rundenAufStellenNachKomma);
global Calc REFn1_isPositiveKerze: Ref(Open, -1) < Ref(Close, -1); //d.h. weiße Kerze

global Const periodeFürDurchschnitt: 10;
global Calc REFn1_größeReferenzKerzenkörper: Prec(faktor * Ref(SUM(ABS(Open-Close), periodeFürDurchschnitt)/periodeFürDurchschnitt, -1), rundenAufStellenNachKomma); //brauche Bezugsgröße für Einschätzung der Kerzengröße = faktor * durchschnittskerzenGröße
global Calc REFn1_isGroßerKerzenkörper: REFn1_größeReferenzKerzenkörper <= Ref(ABS(Open-Close), -1);

global Calc isAußenstab: REFn1_isPositiveKerze AND REFn1_isGroßerKerzenkörper;

//falls Innenstab, d.h. negative oder kleine Kerze, dann nimm weiten Stop
global Calc stopLevelWeit: Schalter(0, periodenZählerTäglich = 1, Low, Ref(isAußenstab, -1)=1 AND isAußenstab=1, Ref(Low, -2)) - REFn1_pufferInTicks; //Stoplevel erhöht sich permanent, bei neutraler Kerze, d.h. 2 große Kerzen hintereinander in richtiger Richtung

//falls Außenstab (d.h. Durchbruchskerze), dann nimm engen Stop
global Calc stopLevelEng: MAX(Ref(Low, -1) - REFn1_pufferInTicks, stopLevelWeit); //nimm immer den engeren

//if Außenstab, dann eng, sonst weiter Stop
global Calc bewegungsStop_long: If(isAußenstab, stopLevelEng, stopLevelWeit);

//visualisiere Ausgestopt
global Calc ausgestopt: bewegungsStop_long >= low;


{Enter-Regeln}
global Calc enterLong: periodenZählerTäglich > 1 AND periodenZählerTäglich < 5 AND LastDP(C) < Ref(Close, -1);
global Calc exitLong: bewegungsStop_long >= Ref(Low, -1);
global Calc enterShort: periodenZählerTäglich > 1 AND periodenZählerTäglich < 5 AND LastDP(C) > Ref(Close, -1);


Berührt die Kerze den Bewegungsstop, dann geht es in der nächsten Periode zum Open heraus.
Die gestrichelte rote Linie ist der enge Stoplevel und die durchgehende rote Line der weite Stoplevel, zu dem immer wieder zurück geschaltet wird, wenn der Kurs anfängt seitwärts oder leicht fällt.

Im 1.Bild kann man die Entwicklung im Tagesverlauf sehen.

Allerdings wenn man sich die KK über den ganzen Kontrakt ansieht, dann ist das Ergebnis nicht besser geworden, d.h. das Ziel einer Verbesserung des HS duch den Bewegungsstop wurde leider nicht erreicht. Man kann es jetzt optimieren und wenn man die Werte sehr groß wählt, dann wird die KK besser, aber immer noch schlechter als das Basissystem.

Vielleicht sieht jemand einen Weg, wie man den Bewegungsstop vielleicht doch noch zum Erfolg bringen kann. Es ist auch nur eine ganz rudimentäre Variante, die nur die Kerzenfarbe und die Kerzengröße berücksichtigt.

Viele Grüße
Torsten
»sten« hat folgende Bilder angehängt:
  • 090818_testSystem_1Tag.GIF
  • 090818_testSystem_alles.GIF

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

25

Dienstag, 18. August 2009, 10:14

Boah Torsten...määäächtig viel Arbeit die Du Dir gemacht hast! :) Das Dilemma ist, das auch dieser Stopp in nicht allen Phasen der Zeitreihe-und vermutlich nicht mit jeder Zeitreihe und Komprimierung funktioniert! Wie schon geschrieben muss man vorher die Zeitreihe näher betrachten, mathematisch zerlegen und statistisch aufbereiten um zu prüfen wo,was,wie realisierbar ist! Auf die Schnelle kann man (zumindest meine Wenigkeit) dazu leider nichts sagen. Es könnte gut sein, wenn Du im Code Nuancen veränderst, das System fluktuiert.Es ist aber nicht ausgeschlossen das der Code für die Zeitreihe bezogen auf den Entry-Zeitpunkt nie funktioniert! Das ist schon ein Testmarathon-vor allen mit den vielen Variablen im Code-bis man ein aussagekräftiges Ergebnis bekommt! Auf welche Zeitreihen und Komprimierung wird der Stopp im Buch von Lindemeier angewendet?
Happy Trading

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

26

Dienstag, 18. August 2009, 12:35

versuchs mal mit 10,15 Minute Bars.
5 Minuten sind zu klein für diese Art von Stop
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

27

Dienstag, 18. August 2009, 12:54

Hallo Udo,

Zitat

Auf welche Zeitreihen und Komprimierung wird der Stopp im Buch von Lindemeier angewendet?


Up's, Nino verwendet 15min.
Lenzelott die größeren Komprimierungen werde ich mal probieren.

Danke.

Viele Grüße
Torsten

Dago

unregistriert

28

Dienstag, 18. August 2009, 13:16

Hallo,
noch eine andere Idee: Trailingstops bringen im allgemeinen keine Performance-Verbesserung , wenn das HS überoptimiert ist. Deshalb versuche ich alle Stops im Generalisierungszeitraum zu optimiern.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

29

Dienstag, 18. August 2009, 13:24

Hi,

ich habe noch einen Berechnungsfehler im Bewegungsstop, d.h. das weite Stoplevel (rote, durchgehende Line) darf nicht zurückweichen, siehe Bild 1.

Im Bild2 ist die Schalterberechnung hierfür und zwar der 2.Wert darf nur verwendet werden, wenn das neue Kurslevel höher ist als das alte:
Max("alter Kurslevel", Ref(Low, -2)) ... gibt es im Schalter() vielleicht eine interne Variable, wie der alte Wert war?

Viele Grüße
Torsten
»sten« hat folgende Bilder angehängt:
  • 090818_neu_Stop_weicht_zurück.GIF
  • 090818_neu_Stop_weicht_zurück__berechnung.GIF

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

30

Dienstag, 18. August 2009, 13:27

Hallo,

kurze Zusammenfassung für die Bewegungsstopregeln:
  • Der Stop wird immer auf das Low der Einstiegskerze - 0.2% Rauchen gesetzt bei long
  • Der Stop wird immer auf das High der Einstiegskerze + 0.2% Rauchen gesetzt bei Short
  • Bei auftretenden Innenstäben wird der Stop immer auf die letztmögliche Periode zurückversetzt, entweder zur letztmöglichen neuralen Kerze oder an das Einstiegssignal. Auch hier müssen die 0.2 % Rauschen berücksichtigt werden.
  • Beim auftreten von Innenstäben wird der Stop nur einmal zurück gesetzt !!!!! ... das ist bei meiner Berechnung oben noch falsch
  • Auch bei einer negativen Kerze (d.h. entgegen der Traderichtung, z.B. schwarze Kerze in einem long-Trade) wird das Stoplevel zurück gesetzt
  • Die letzte neutrale Kerze verliert bei Auftreten einer neuen neutralen Kerze ihre Gültigkeit.


Was ist eine neutrale Kerze?
Ganz einfach, immer dann wenn der Stop zweimal hintereinander nachgezogen werden konnte, wird die vorletzte Kerze zur neutralen Kerze, (da dieser Kerze keine Innenstäbe folgen) und das ist dann das neue, permanente Stoplevel. Ist der Trade dann im Gewinn, kann man nicht mehr verlieren.

Hoffe es ist einigermaßen verständlich.

Viele Grüße
Torsten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

31

Dienstag, 18. August 2009, 15:48

Hi,

Zitat

Max("alter Kurslevel", Ref(Low, -2)) ... gibt es im Schalter() vielleicht eine interne Variable, wie der alte Wert war?


Ich hatte mich da total verrannt. Es geht viel einfacher...
global Calc stopLevelWeit: HighestSince(stopLevelWeit_neu, periodenZählerTäglich = 1, 1); //den bisher erreichten Höchststand des Tages halten

Viele Grüße
Torsten

J79

unregistriert

32

Dienstag, 25. August 2009, 09:15

Der TS von Michael Voigt wurde bei tradesignalonline.de diskutiert und getestet. Laut diversen Tests ist er die Nr.1 unter den TS. Ich selber habe ihn für den Aktienhandel verwendet und finde ihn nicht so toll, da es teilweise Ewigkeiten dauert, bis der Stop ausgelöst wird. Mit dem Verkauf meiner Positionen an markanten Punkten bzw. Widerständen fahre ich besser.
Wenn es interessiert: http://www.tradesignalonline.com/Forum/t…ostnum=926#p926

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

33

Dienstag, 25. August 2009, 09:50

Hallo,

wie auch beim ENTER so ist es beim Trailing-Stopp immer wichtig, das die Dynamik der Zeitreihe zum Stopp passt! Testet einfach mal die Dax30 Aktien mit einem System. Ihr werdet sehen, das bei einigen Aktien Enter-Trailer sehr gut harmonieren und bei anderen das Minus immer größer wird.Hier sehe ich die grundsätzlichen Probleme der mathematisch nachgezogenen Stopps-egal ob Trailer oder Bewegung.Es muss zusammen harmonieren und man sollte beides als Einheit betrachten. Insofern spielt das ENTER für den Stopp eine wichtige Rolle!
Happy Trading

Ähnliche Themen