Dienstag, 16. April 2024, 21:20 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.

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

1

Sonntag, 7. März 2010, 11:07

Anwenderstop: Swing Low

Hallo,

vor geraumer Zeit habe ich einmal begonnen, einen Anwenderstop auf Basis von Swing-Lows zu "programmieren", musste aber aus Zeitgründen wieder aussetzen.
Der Stop soll, ausgehend von heutigen Kurs, jeweils auf das x-Swing-Low zurückgehen und dann den Stop entsprechend einzeichnen. Das funktioniert soweit auch ganz gut:

Zitat

const Anzahl: x; {Hier kann eingestellt werden, das wievielte Swing-Low zurückgegangen werden soll}
calc TrailingStop: ValueWhen(Ref(Low,-1), Low > Ref(Low,-1) and Ref(Low,-1) < Ref(Low,-2), Anzahl, V);

calc Stoplinie:
HighestSince(Trailingstop,TradePeriods=1,1);

calc #_StopLevel#:
Stoplinie;

close<#_StopLevel#


Eine Problematik tritt aber in den Fällen auf, in denen das (alte) x-Swing-Low über einem neuen Enter-Kurs liegt, z.B. nachdem der Kurs stark nachgegeben hat und man einen Wiedereinstieg vornimmt. In diesem Fall wird das (alte) x-Swing-Low (vor Eingehen des Trades) gemäss meiner Formel verwendet, was natürlich zu einem ungewünschten sofortigen Ausstieg führt.

Ziel ist eine Bedingung einzusetzen, in dem z.B. nur das (x-) Swing-Low nach Enter verwendet wird bzw. erst, wenn durch ein Swing-Low nach Enter ein Anfangsstop (z.B. 90% des Lows des Einstiegstags) überschritten wird. Der Swing-Low Stop soll also "von unten" herangeführt werden. Anschliessend soll es wieder in die Routine des x-Swing-Lows während des Trades übergehen.

So habe ich das versucht umzusetzen, aber das ist offenkundig falsch ?( , denn der Stop wird gar nicht mehr angezeigt (Änderungen in kursiv):

Zitat

Calc Anfangsstop: ValueWhen(low*0.9 {z.B.},TradePeriods=1,1,V);

const Anzahl: x; {Hier kann eingestellt werden, das wievielte Swing-Low zurückgegangen werden soll}
Calc SwingLow: ValueWhen(Ref(Low,-1), Low > Ref(Low,-1) and Ref(Low,-1) < Ref(Low,-2), Anzahl, V);

calc TrailingStop:If(SwingLow<AnfangsStop,SwingLow,AnfangsStop);

calc Stoplinie:
HighestSince(Trailingstop,TradePeriods=1,1);

calc #_StopLevel#:
Stoplinie;

close<#_StopLevel#


Wer kann mir helfen, dieses "kleine" Problem zu lösen ?

Vielen Dank +
Viele Grüße,
Investor

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

2

Sonntag, 7. März 2010, 14:02

Der Stop nimmt jetzt aber nicht das x. Swing Low als Trailingstop, sondern das höchste der letzten x swinglows, oder sehe ich das falsch?!


mögliches Beispiel zum umgehen:

Quellcode

1
calc #_StopLevel#:min(TradeEntryPrice*0.9,stoplinie);


bzw.

Quellcode

1
calc #_StopLevel#:min(Anfangsstop,stoplinie);
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

3

Sonntag, 7. März 2010, 16:00

M.E. macht der Stop (blaue Linie, long) schon zunächst das Richtige, in der Graphik mit x=4 (Sept.-August 07), lässt sich nachvollziehen (ich habe HighestSince lediglich verwendet, damit die Kurve nicht im Zickzack verläuft).

Beim Wiedereinstieg am 28.9.2007 bezieht er sich (formelmässig leider zutreffend) auf das SwingLow am 13.7.2007 (rotes Kästchen), da es das 4. zurückliegende SwingLow ist:



...daher möchte ich hier eine Bedingung einfügen, wie z.B. "Bei Enter nimm den Anfangsstop 0.9*Low, bis die Swinglow -Linie höher liegt, dann nimm diese".

Wenn ich nun Deine Formel verwenden würde, würde er doch stets (idF) 0.9 * Low des Einstiegstags verwenden und damit immer zu niedrig liegen, vorausgesetzt, die Kurse und damit die SwingLows steigen ?

Danke für die Unterstützung !
Viele Grüße,
Investor

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

4

Montag, 8. März 2010, 01:14

Beim Wiedereinstieg am 28.9.2007 bezieht er sich (formelmässig leider zutreffend) auf das SwingLow am 13.7.2007 (rotes Kästchen), da es das 4. zurückliegende SwingLow ist:

Also entweder stehe ich völlig auf dem Schlauch, aber ich behaupte weiterhin, dass eine Formel den Stop wie ich schon oben beschrieben habe auf den höchsten Wert, den der 4. Swinglow vor bzw. während des Trades hatte zieht. Hier ist das zufällig auch der Wert des 4, muss aber nicht immer identisch sein.

...daher möchte ich hier eine Bedingung einfügen, wie z.B. "Bei Enter nimm den Anfangsstop 0.9*Low, bis die Swinglow -Linie höher liegt, dann nimm diese".

Das sollte meine "Formel" eigentlich machen (hab´s aber nicht geprüft).

Zitat

Minimum Liefert den kleineren von zwei Werten.
Der Indikator Minimum vergleicht zwei Werte miteinander und liefert den jeweils kleineren.
Schreibweise
Min(Daten, Daten)
Beispiel
Min(Open, Close)
Liefert den Eröffnungs- oder den Schlusskurs, je nachdem, welcher der niedrigere ist.


Wenn ich nun Deine Formel verwenden würde, würde er doch stets (idF) 0.9 * Low des Einstiegstags verwenden und damit immer zu niedrig liegen, vorausgesetzt, die Kurse und damit die SwingLows steigen ?


hast Du es ausprobiert?
Siehe oben imho müsste das funktionieren.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

5

Montag, 8. März 2010, 21:20

Zitat

Also entweder stehe ich völlig auf dem Schlauch

Kein Wunder, es war ja auch schon spät.... :D

Nein, im Ernst, vielleicht meinen wir das Gleiche, aber es wirkt sich unterschiedlich aus. Meine Formel macht jedenfalls weitestgehend das, was sie soll, zumindest wenn die SwingLows steigen (gebe ich ja zu). Durch

Zitat

ValueWhen(Daten, Ausdruck, X, Richtung)
gehe ich x-Perioden (hier x=4) zurück. Die Formel gibt mir also das Low des SwingLows an, welches zum 4. Mal in der Vergangenheit zutreffend war.

Zitat

ValueWhen gibt den Wert eines Datenfeldes an der Periode zurück, an der ein Ausdruck zum x-ten Mal den Wert ‘Wahr’ angenommen hat. Mit dem Parameter Richtung kann zudem bestimmt werden, ob die Suche nach dem Wert in die Vergangenheit (V) oder in die Zukunft (Z) verläuft.


Wenn Du Dir den ersten Chart im vorangegangenen Posting anschaust, siehst Du, dass die Linie immer ein Stückchen höher genau auf das Niveau springt, welches rückwärts (!) das 4. SwingLow ist. Und im zweiten Trade lag das 4. SwingLow eben über dem TradeEntryPrice.

HighestSince nutze ich also nur, um diese Linie als TrailingStop (aus einer vormaligen Stopberatung durch Herrn Knöpfel !) darzustellen: Auf diese Weise nimmt der Trailingstop ausgehend von Tradebeginn immer den Wert, bei dem die Bedingung erfüllt ist und der höher liegt als der vorangegangene.

Wenn ich z.B. x durch 3 ersetze, kommt auch eine entsprechende Linie heraus. Wie Du im folgenden Bild sehen kannst, nimmt die Formel im zweiten Trade nun das 3. SwingLow (3. blaues Kästchen von rechts):




Allerdings sollte sie tatsächlich lieber das 2. nehmen, da es niedriger liegt. Ich sehe nun, dass es möglicherweise besser wäre, im Bereich des Swing-Low mit dem "LowestSince" bei Rückwärtsbetrachtung zu arbeiten ?


Wenn ich dagegen Deine Formel einsetze, wird die Linie leider gar nicht mehr angezeigt:

Zitat

Calc Anfangsstop: ValueWhen(low*0.9,TradePeriods=1,1,V);

const Anzahl: 4;{Hier kann eingestellt werden, das wievielte Swing-Low zurückgegangen werden soll}
Calc SwingLow: ValueWhen(Ref(Low,-1), Low > Ref(Low,-1) and Ref(Low,-1) < Ref(Low,-2), Anzahl, V);

calc TrailingStop: SwingLow;
calc Stoplinie: HighestSince(Trailingstop,TradePeriods=1,1);

calc #_StopLevel#: MIN(Anfangsstop,stoplinie){Stoplinie};

close<#_StopLevel#


Ich möchte aber gar nicht ausschliessen, dass ich hier nicht richtig liege oder meine Linie nur rückblickend betrachtet (nahezu) das Richtige macht.

Somit sind es eigentlich zwei Überlegungen:

1. Möglicherweise müsste man das so umbauen, dass zunächst der Anfangsstop verwendet wird und der TrailingStop nur mit niedrigeren SwingLows als dem Anfangsstop arbeitet, bis während des Trades neue SwingLows erreicht werden ? oder

2. Man müsste im Bereich des ValueWhen/Swing-Low mit dem "LowestSince" bei Rückwärtsbetrachtung seit aktuellem Kurs arbeiten

Nur, wie könnte das formelmässig aussehen ?( ? ?

Sorry für die Länge des Beitrags, aber ich möchte es so genau wie möglich darstellen, um Missverständnisse zu vermeiden.

Ich wäre Dir (und natürlich dem gesamten Forum) ausserordentlich dankbar, wenn es hier Lösungsideen gäbe. Ich bin mir aber sicher, dass man das mit Investox umsetzen kann, schliesslich bin ich bis hierher schon relativ weit gekommen, denke ich zumindest :S

Danke und
Viele Grüße,
Investor

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

6

Montag, 8. März 2010, 23:32

Auch wenn das jetzt vielleicht ungebührlich klingt:

ich habe das Gefühl, dass Du meinen Vorschlag nicht mal im Ansatz ausprobiert hast.
mit 90%iger Wahrscheinlickeit löst er Dein Problem.
Wenn nicht, zeigt er Dir den weg zur Lösung.

Bisschen mehr Eigeninitiative kannste schon bringen.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

7

Dienstag, 9. März 2010, 15:07

Hallo,

>>Nur: Deine Linie funktioniert nicht (zumindest nicht bei mir), sie wird nicht angezeigt, warum auch immer.

also bei mir wird die Linie schon angezeigt, jedenfalls dann, wenn es schon 4 Swing Lows gegeben hat.

Viele Grüße

Andreas Knöpfel

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

8

Mittwoch, 10. März 2010, 07:18

Hallo Herr Knöpfel,

vielen Dank für Ihre Antwort. Ich prüfe es heute Abend erneut und melde mich.
Viele Grüße,
Investor

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

9

Mittwoch, 10. März 2010, 20:16

So, ich habe es gestestet und ein kleines Fehlerchen gefunden. Ich habe nun den Vorschlag von Lenzelott

Zitat

calc #_StopLevel#:min(TradeEntryPrice*0.9,stoplinie);

umgesetzt:

Zitat


const Anzahl: 4;{Hier kann eingestellt werden, das wievielte Swing-Low zurückgegangen werden soll}
Calc SwingLow: ValueWhen(Ref(Low,-1), Low > Ref(Low,-1) and Ref(Low,-1) < Ref(Low,-2), Anzahl, V);

calc TrailingStop: SwingLow;

calc Stoplinie:
HighestSince(Trailingstop,TradePeriods=1,1);

calc #_StopLevel#:MIN(TradeEntryPrice*0.9,stoplinie);

close<#_StopLevel#



Es tritt ein, was ich nicht möchte, denn der Anfangsstop liegt ja über die Definition von MIN immer niedriger, wenn der Kurs steigt und der Trailingstop nachgezogen wird:



Trotz des Vorschlags von Lenzelott bleibt also mein Problem bestehen.
Viele Grüße,
Investor

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

10

Donnerstag, 11. März 2010, 10:39

Hallo,

vielleicht wäre dies eine Möglichkeit: sobald "Anzahl" Swing-Lows seit Tradebeginn erfolgten, wird niedrigste der letzten "Anzahl" Swing-Lows nachgezogen, ansonsten der Anfangsstop verwendet:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
const Anzahl: 4;{Hier kann eingestellt werden, das wievielte Swing-Low zurückgegangen werden soll} 
calc AnfangsStop: TradeEntryPrice*0.9; 
Calc Swing: Low > Ref(Low,-1) and Ref(Low,-1) < Ref(Low,-2); 
//Das letzte Swing-Low (Anzahl=1!!) 
Calc SwingLow: ValueWhen(Ref(Low,-1), Swing , 1{!!}, V); 
Calc SwingLowBars: BarsSince(Swing, Anzahl); 
{Das tiefste der letzten *Anzahl* Swing-Lows, sofern seit Tradebeginn so viele stattgefunden haben, sonst der Anfangsstop.} 
calc TrailingStop: If(TradePeriods<SwingLowBars, Anfangsstop, LowestSince(SwingLow, Swing , Anzahl)); 
calc Stoplinie: 
HighestSince(Trailingstop, TradePeriods=1,1); 
calc #_StopLevel#: Stoplinie; 
close<#_StopLevel#


Viele Grüße

Andreas Knöpfel

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

11

Donnerstag, 11. März 2010, 20:12

Sehr geehrter Herr Knöpfel,

:thumbsup: , die Formel macht das, was ich erreichen möchte (auch wenn ich die Formelstruktur noch nicht ganz durchdrungen habe und ich mir es im Einzelnen noch genauer ansehen muss). Vielen Dank schon einmal an Sie, dass Sie mich hier unterstützen. Zudem zeigt es mir wieder, dass man (d.h. die "echten" Profis) auch vermeintlich schwierige Dinge mit INV umsetzen kann !

Die Graphik sieht nun so aus:



Der Anfang der Stoplinie sieht leider optisch noch etwas "unschön" aus. Ich habe versucht, über

Zitat

calc Stoplinie: MAX(Anfangsstop,HighestSince(Trailingstop, TradePeriods=1,1));
eine Vermeidung der senkrechten Startlinie herbeizuführen, aber das liegt wohl daran, dass die Stoplinie sozusagen bei Null (bzw. erst bei "Anzahl" SwingLows) startet. Lässt sich dies noch irgendwie eleminieren ?
Viele Grüße,
Investor

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

12

Freitag, 12. März 2010, 08:52

Hallo Investor,

stelle den Stop als "Level" dar, nicht als "Linie" (über Formatierung).

Viele Grüße
Cornelius

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

13

Sonntag, 14. März 2010, 09:45

Hallo Cornelius,

Danke für Deine Antwort. Auch nachdem ich alles auf 5.7.2. upgedated habe, finde ich nicht die Einstellung Formatierung für meinen Anwenderstop. Nach dem INV-Handbuch lässt sich dies für Datenreihen einstellen. Für Anwenderstops habe ich die Option leider nicht gefunden. Ich werde noch ein bisschen experimentieren. Und ich gebe gerne einen ("Profi"-)Stern ab 8)...
Viele Grüße,
Investor

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

14

Sonntag, 14. März 2010, 12:52

Sehr geehrter Herr Knöpfel,

ich hatte leider erst am Wochenende Zeit, mir die von Ihnen freundlicherweise eingestellte Formel näher anzusehen:

Wenn ich den "Anfangsstop" separat als Anwenderstop einfüge, sieht es so aus (rote Linie):



Der von Ihnen zur Verfügung gestellte Stop steigt leider nicht an dem angenommenen "Anfangsstop" (Zeile 8 des Codes) aus (siehe 2002):



Ich bin noch nicht dahintergekommen, woran es liegt, dass der Anfangsstop nicht angezeigt wird.

Zudem bekomme ich auch leider regelmässig eine Fehlermeldung (V5.7.2):



Die 0.15 sind der Wert, den Ihre Linie annimmt, wenn sie "von unten" startet.

Noch ein schönes Wochenende und ein herzliches Dankeschön für Ihre Unterstützung !
Viele Grüße,
Investor

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

15

Sonntag, 14. März 2010, 13:56

Hallo Investor,

Du hast recht: ich hatte gar nicht beachtet, dass Du den Stop direkt darstellst.

Ich behelfe mir teilweise damit, dass ich Stops nicht direkt darstelle, sondern die grafische Darstellung der Stopbedingungen separat vornehme ("Formel einfügen" in den Chart). Der Stop wird dann als eigene Datenreihe dargestellt und kann entsprechend formatiert werden.

Viele Grüße
Cornelius

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

16

Sonntag, 14. März 2010, 14:19

Hallo Cornelius,

ja, das wäre eine Lösung, allerdings möchte ich die Stops in den Backtest einbeziehen (deswegen bin ich auch so beharrlich bei der Entwicklung der Anwenderstops). Das funktioniert dank INV sehr gut, aber manchmal wird es eben leider zu knifflig für mich, s.o. !
Viele Grüße,
Investor

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

17

Sonntag, 14. März 2010, 16:14

Hallo Investor,

Du kannst den Stop ganz normal nutzen und in den Backtest einbeziehen (wenn er so funktioniert, wie Du Dir das vorstellst). Du stellst in nur nicht grafisch dar, sondern verwendest für die Darstellung eine eigene Berechnung.

Viele Grüße
Cornelius

Registrierungsdatum: 30. September 2005

Beiträge: 347

Wohnort: München

18

Dienstag, 16. März 2010, 19:32

Hallo Cornelius,

ja, deswegen möchte ich ihn ja auch zunächst mal im Backtest nutzen; dazu muss er aber eben einwandfrei funktionieren; und wenn dass dann so ist, dann kann ich ihn ja gleich über #_StopLevel# anzeigen, ohne eine eigene, zusätzliche Berechnung. Im Grunde funktioniert er ja schon, wenn ich die zwei Anwenderstops (Anfangsstop + Trailingstop) kombiniere (siehe mein Bild). Meine Berechnung ist leider keine "normale" Datenreihe, wie ein GD o.ä..

Zusammengefasst in einer Formel funktioniert er leider noch nicht; zudem kommt jetzt noch zusätzlich diese Fehlermeldung (siehe Posting #15). Meine Hoffnung ruht daher immer noch auf Herrn Knöpfel.... :engel:
Viele Grüße,
Investor

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

19

Mittwoch, 17. März 2010, 01:10

Hallo Investor,

ich nehme an, Dein Anfangsstop (rote Linie) soll ein 9 % Stop sein ?

Falls dem so ist, ändere bitte einmal in der Formel von Herrn Knöpfel die 2. Zeile wie folgt ab:

calc AnfangsStop: tradeentryprice-(TradeEntryPrice*0.09);


Passt es dann ?
Viele Grüße von Anke

http://www.ascunia.de

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

20

Mittwoch, 17. März 2010, 09:26

Hallo,

>>Zudem bekomme ich auch leider regelmässig eine Fehlermeldung (V5.7.2):

Haben Sie den Inhalt der Meldung (Konflikt mit global definierter Konstante) schon überprüft?

Viele Grüße

Andreas Knöpfel