Dienstag, 16. April 2024, 06:37 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

shirokuma

unregistriert

1

Mittwoch, 28. Januar 2004, 16:39

Trendfolger auf EOD-Basis

Liebe Boardler,
ich lese hier viel und nun poste ich auch mal. Es geht um die Entwicklung eines HS (Wen wunderts...?)


Ziel:
Tradingmöglichkeiten mit klar kalkuliertem Risiko und bei Trendentwicklung hohem Gewinnpotential.

Ausgangssituation:
Die meisten Trendfolger aus der Literatur (Breakout z.B. "simple Turtle", GD oder ADX basiert etc.), die ich getestet habe, haben die dort bis zum Abwinken beschriebenen Nachteile: Der Trend wird zu spät erkannt und sie bieten keine guten Möglichkeiten das Dilemma zwischen "laufen lassen" und "nicht so viel wieder abgeben", zu lösen.
Dann habe ich versucht, verschiedene Candlestick- oder andere Formationen zu implementieren. Allen voran den 1234er von Cooper, um Retracements im Trendverlauf zu erwischen. Der vorgestellte Trendfolger ist eine Mischung aus dem "N"-Konzept der Turtles, also einem für jede Periode berechneten Maximalrisiko und dem formationsorientierten Retracementansatz von Cooper (an sich etwas holprig formuliert), der sich aber, wie auch Breakouts, in der Bestätigung des Einstiegs auf steigende Kurse verlässt.

Philosospie:
Trends sind gut. Ein gutes System ist nicht optimierbar, es wirkt durch seine Logik. Simulationen müssen "worst case" sein, d.h. mit den schlechtesten Methoden und Bedingungen die besten Ergebnisse erzielen.

Anforderungen:
- Ich will mit Limitorders arbeiten, d.h.
- Ich will heute wissen, ob ich mich morgen positioniere, und wo
- Ich will heute mein Risiko von morgen definieren (S/L)
- Ich will, wenn ich positioniert bin heute wissen, ob und wann ich morgen aussteige

Grundlagen:
- Trenddefinition: zwei GDs (z.B. 13 und 21) + bestätigende Zusatzbedingungen
- Retracement: ganz einfach, wenn das heutige Tief tiefer ist als das vor n Perioden
- Trendwiederaufnahmebestätigung durch steigende Kurse morgen
- "Longtrail" (Short alles umgekehrt) der erstens als S/L dient und auch die Exits definiert.

Implementierung:
- enter long
const p: 4:
calc trend: s.o.;

trend > 0 and
low < Ref(low,-p) and
Ref(high,+1) > high

Enterbasis: max(high, ref(open,+1))

- longtrail
const faktor: 1.2;
const perioden: 21;
global calc longtrail: GD(middle() - (range() * faktor),perioden,s);
(middle() ist definiert als die Mitte zwischen High und Low, Range ist die einfache Ausdehnung zwischen High und Low. Hier werde ich evtl. später mit der TrueRange arbeiten.)

exit long:
Das Low morgen geht unter den Longtrail von heute.
low < longtrail

Exitbasis: min(longtrail,open)

Ich habe das so implementiert, weil mir Investox erstens heute ein Signal (kleiner, schwarzer Pfeil nach oben :) gibt, was aber nur ausgeführt wird, wenn morgen das Kauflimit (Hoch von heute) überschritten wird, andererseits genau dies in der Simulation auch so berücksichtigt wird. Der Wechsel von der Simulation zum Signalgeber ist dann denkbar einfach: ich nehme einfach die Bedingung Ref(high,+1) > high heraus. Dann allerdings funktioniert es nicht mehr als Simulation. Versteht sich von selbst.
Zweitens kann ich den longtrail von heute als StoppLimit für morgen nehmen. Das System hat also keinerlei (Investox)-Stopps. Real getraded müßte ich bei offenen Positionen nur jeden Tag den Stopp-Kurs anpassen.

Um das Moneymanagement realistisch zu simulieren, bin ich auf folgende Idee verfallen:
Ich setze ein Maximalrisiko von beispielsweise 1% des Gesamtkapitals. Im Moneymanagement setze ich das eingesetzte Kapital auf 10% des Gesamtkapitals fest (Damit erreiche ich eine mögliche theoretische Diversifikation auf max. 10 Positionen). Das variable Risiko ist immer der Abstand von der Enterbasis und dem heutigen longtrail. Um den Kapitaleinsatz entsprechend zu simulieren, setze ich in der Hebelberechnung einen (fiktiven) variablen Hebel ein: Maximalrisiko (10%) durch das prozentual gerechnete variable Risiko. Einfaches Beispiel: Wenn der Abstand von der Enterbasis zum Longtrail 5% der Enterbasis beträgt, bekäme ich einen Hebel von 2. Ich riskiere also 5 mal 2 des Anteils von 10% am Gesamtkapital = 1%


So. Und nun zum Zweck, warum ich das alles schreibe. Ich habe nämlich ein paar Fragen:

Enterbasis: Meines Erachtens ist es korrekt, mit einem System zu arbeiten, das mit der Berechnung der Enterbasis in die Zukunft blickt. Ich wäre eingestiegen, wenn der Kurs morgen über das Hoch von heute steigt. (da gibt es ja auch einige Threads, die sich mit dieser Frage beschäftigen). Von Vorteil ist diese Implementierung vor allem deshalb, weil ich meine Verluste auch korrekt berechne: Für den (blöden) Fall, dass die Kurse nämlich morgen über das Hoch von heute steigen und, wann auch immer unter meinen Stoppkurs (longtrail) fallen, kommt ein Trade in die Statistik und der Verlust wird angerechnet. (Falls es umgekehrt ist, dass nämlich die Kurse erst fallen um dann zu steigen, hätte ich "in Wirklichkeit" zwar keinen Verlust. Aber eben lieber so simuliert als anders herum).
Die Frage ist: Gibt es in der logischen Konzeption oder der konkreten Simulation Eventualitäten, die ich nicht berücksichtigt habe oder Fehler, die ich korrigieren sollte?

Exit: Auch die Exitstrategie finde ich angemessen (ich werde den longtrail noch so modifizieren, dass er etwas volatiler auf bestimmte "Es kündigt sich an, dass der Trend plötzlich zu Ende gehen könnte"-Indikatoren reagiert). Das System hat also keine programmierten Stopps, stattdessen einen für jede Periode berechneten Exit, was aber de facto einem Trailing-Stopp gleichkommt.
Auch hier: Stimmt die Logik, habe ich was vergessen und ist die Implementierung korrekt?

Kapitaleinsatz, die erste. Ich versuche zu simulieren, dass ich eine ganz bestimmte Menge von Geld in einen Trade investiere, egal, mit welchem Hebel, wenn überhaupt, ich das in Wirklichkeit realisiere. (Im Moment denke ich an Aktienindizes, oder andere "gedämpfte" Papiere, für die es eine Vielzahl von Produkten gibt, sodass die Strategie sich auch relativ einfach konkretisieren läßt. Die variable Hebelberechnung läßt sich aber, "wenn ich mal groß bin" auch in die Berechnung von Kontraktzahlen verändern)
Hier denke ich dass der Ansatz sehr einfach und folgedessen auch korrekt ist. Aber ist die Implementierung in Investox so auch richtig? (Ein Thema, das hier noch nicht so ganz gut implementiert ist, sind Gebühren (Slippage werde ich sehr gering halten, da die Märkte auf die ich es vorerst abgesehen habe, sehr liquide sind)).

Kapitaleinsatz die zweite. Gute Trendfolger leben von Überwasser- oder Zwiebelpyramiden. Einfach gesagt, ich möchte pyramidisieren. Sowas wie: Wenn HS 1 mit soundsovielen Anteilen im Plus ist gehe ich mit HS 2 wieder long. (und so weiter) Nervt die Programmierung, (soll ich also auf die von Herrn Knöpfel angekündigte Funktion warten) oder gibt es doch eine – einfache – Möglichkeit?

Seid also so nett und lasst mich Eure Bedenken, Zweifel, Tipps oder weiteren Hinweise hören :)

kuma

Martin

unregistriert

2

Mittwoch, 28. Januar 2004, 19:31

Hallo Kuma,

hast Du Deine Einstiegskurse mal nachgerechnet ob diese überhaupt stimmen?
Ich habe ein ähnliches HS aufgebaut und mußte die Enterbasis wie folgt definieren:

MAX(ref(high,-1), ref(open,0))
Delay = 1

Dann kaufst Du heute zum Hoch von gestern bzw. zum heutigen Open, wenn das heutige Open höher ist als das Hoch von gestern.

So wie das in Deiner Beschreibung steht kaufst Du zum heutigen Hoch oder zum morgigen Open, also alles um einen Tag verschoben.

Was ich festgstellt habe ist, daß wenn ein HS morgen über eine StopBuy-Order einsteigen soll, Du als Enter Long Bedingung ref(high,+1) (wie in Deiner Enterbedingung), aber bei der Enterbasis ref(high,-1) verwenden mußt. Irgenwie verwendet Investox nicht die selben Tagdefinitionen bei der Enterbedingung und Enterbasis.

Gruß Martin

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

3

Mittwoch, 28. Januar 2004, 20:16

Hallo zusammen,
wenn man HEUTE zum HIGH von GESTERN einsteigen will, lautet die korrekte EnterBasis (long): Ref(high, -1) mit Delay 0. Da das OPEN ja schon ÜBER dem HIGH liegen kann, wäre die Formel nach Max(Open, Ref(High, -1)) anzupassen, ebenfalls mit Delay 0! Delay 0 steht in diesem Fall für die Eröffnungsperiode, also der Tag des Einstiegs, Ref(High, -1) liefert dabei dann nur den Kurs, also einen Wert, der in der Einstiegsperiode erreicht werden muss, falls er nicht schon durch OPEN erreicht wurde. Für die ExitBasis muss ebenfalls Delay 0 eingestellt werden.

Ich denke auch, dass die EnterLong-Regel umgeschrieben werden muss:

const p: 4:
calc trend: s.o.;

trend > 0 and
low < Ref(low,-p) and
high > Ref(high, -1)

Dann sehe ich noch ein Problem beim Longtrail:

Zitat

global calc longtrail: GD(middle() - (range() * faktor),perioden,s);


Bei der Berechnung sollte die akt. Periode (in der das Exit erfolgen soll/könnte) berücksichtigt werden, da du sicherlich Longtrail als ExitLimit nehmen und die Order VOR der Exitperiode aufgeben willst.

global calc longtrail: Ref(GD(middle() - (range() * faktor),perioden,s), -1);

wäre dann die richtige Wahl.

Bei dem Umfang deines Postings fällt sicherlich anderen auch noch etwas auf bzw. ein.
Viele Grüße,
Hans-Jürgen

shirokuma

unregistriert

4

Donnerstag, 29. Januar 2004, 19:29

Simulation

Erst mal danke Euch beiden für die Antworten.
Ich weiß, das Posting ist lang ... Und trotzdem, oder vielleicht deshalb, habe ich mich wohl nicht so klar ausgedrückt.

Mir geht es hauptsächlich erst mal um die Denke. Ich konstruiere kein Handelssystem im eigentlichen Sinn, sondern ich versuche zu simulieren, wie ein Handelskonzept gelaufen wäre, hätte ich es angewendet.

Da gibt es also an einem bestimmten Tag (nennen wir ihn heute) die Situation, dass eine Reihe von Bedingungen eintrifft, die mich veranlassen würden long zu gehen. Ich will aber eine Bestätigung der Long-Hypothese. Ich bin also nur im Markt, wenn die Kurse morgen auch über das Hoch von heute steigen. In Wirklichkeit würde ich eine bis einschließlich morgen gültige, limitierte Order geben, die ggf. dann morgen auch ausgelöst wird, oder eben verfällt.
Ich weiß, dass das nicht so ganz der übliche Weg ist, das zu realisieren, aber simulieren würde ich das gern auch ganz genauso, wie ich es machen würde, ich positioniere mich heute und warte ob morgen meine Order ausgeführt wird.

Also: EnterLong (delay=0)
Meine Bedingungen and
ref(high,+1) > high

enter Basis: max(high,ref(open,+1)

@ Martin: Ich habe mir die Enterkurse angeschaut. Sie sind genauso wie geplant, nur dass sie eben am heutigen Tag angetragen werden.
@ Hans-Jürgen: Deine Methode ist die korrekte, wenn man ein HS bauen würde. Aber für eine Simulation ist sie mir zu kompliziert. Ich kann nur sehr schwer simulieren, dass ich evtl. in derselben Periode wieder aussteige und noch schwerer, zu welchem Kurs.
Mit dem Longtrail ist es dasselbe. Ich stelle die Position glatt, wenn der Kurs heute unter den Longtrail von gestern fällt. (Gap-Opening ist wie oben berücksichtigt) und simuliere damit nur, dass ich gestern meinen S/L auf das Niveau des Longtrail gesetzt hätte, der ggf. heute ausgelöst würde.

Ich habe mir wie gesagt die Enter- und Exitkurse angeschaut und es läuft genau, wie geplant.
Ehrlich gesagt, denke ich, dass diese Lösung einigermaßen elegant ist, weil sie mit wenig Rechenaufwand und ohne komplizierte Anwenderstopberechnungen etc. auskommt. Nur die Denke ist eben etwas "anders".

Meine Frage (evtl. auch an Herrn Knöpfel): Kann es sein, dass bei dieser Lösung aufgrund meiner zu Grunde liegenden Logik im Verhältnis zu der von Investox ein gravierendes Fehlverhalten meiner Simulation auftreten kann?

kuma (Ich heiße Andreas, aber im Netz gern "kuma" = japanisch, der Bär)

Martin

unregistriert

5

Donnerstag, 29. Januar 2004, 19:30

Hallo Hans-Jürgen,

ich habe mir nochmals die Einstiegsbedingung von Dir und Kuma angesehen. Meiner Meinung nach ist diese von Kuma schon richtig, wenn die Enterbasis nach meinem Vorschlag mit Delay = 1 verwendet wird.
Bei Deinem Vorschlag, Delay = 0 und Einstiegsregel etwas anpassen geht man Long, wenn auch das Tief am Einstiegstag auch tiefer ist als vor vier Tagen. Es ist nun die Frage, was Kuma will. Ich habe es allerdings so interpretiert, daß wenn heute das Tief tiefer ist als vor vier tagen, dann gehe ich morgen Long, wenn morgen das Hoch des Vortags überschritten wird.

Grüße Martin

Martin

unregistriert

6

Donnerstag, 29. Januar 2004, 19:36

Ups..
da da gabs ne Überschneidung mit Kuma.

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

7

Donnerstag, 29. Januar 2004, 19:56

Hallo zusammen,
wir liegen ja gar nicht so weit auseinander......ich betrachte ein Entry IMMER in der Einstiegsperiode und frage mich dann, welche Dinge habe ich eine Periode vorher sicher gewusst bzw. welche Dinge ändern sich in de Einsteigsperiode nicht und baue darauf die Formeln auf. Vielleicht kämen wir ja auf das gleiche Ergebnis.
Viele Grüße,
Hans-Jürgen

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

8

Freitag, 30. Januar 2004, 10:37

Hallo,

Zitat

......ich betrachte ein Entry IMMER in der Einstiegsperiode und frage mich dann, welche Dinge habe ich eine Periode vorher sicher gewusst


Diese Vorgehensweise finde ich auch transparenter. Es wurden dazu ja schon mehrere Beispiele im Forum besprochen. In der Dokumentation zu Order Plus! (http://www.investox.de/Download/OrderPlusDoku.pdf) findet sich auch noch ein Beispiel zu einem Limitsystem und wie man dies dann real umsetzen könnte.

Viele Grüße
Andreas Knöpfel