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

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

1

Donnerstag, 1. Mai 2008, 13:36

Dynamischer Stopp

Hallo zusammen,

ich habe mal einen "alten" DynamischenStopp, der auf ATR-Basis nachgezogen wird nach VBS umgesetzt. Der Org.Indi musste "prev" bzw "fastprev" verwenden, was also grottenlangsam. Durch das Umschreiben ist der Indi jetzt turboschnell ;). Allerdings gibt es ein Problem wenn ich den Parameter "Faktor" größer als 1,6 einstellte (Fehlermeldung: sh. Grafik). Darunter, also <= 1,6, arbeitet er normal. Hat jemand eine Idee woran dies liegen könnte?

Hier der Code. Der Indi hat zwei Parameter:
1. Perioden; Wert; Standard: 10; Min: 1; Max: 100
2. Faktor; Wert; Standard: 1; Min: 0,1; Max: 5;


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'Die Variablen Perioden und Faktor werden als Parameter übergeben

Dim High, Low, ATR 
Dim z, Anfang, Ende, Stopp, Formel

GetDaten "High", High
GetDaten "Low", Low

Anfang = ErsteDatenPeriode(High)
Ende = LetzteDatenPeriode(High)

Formel = "ATR(" & cStr(Perioden) & ")"

if ScriptBerechneFormel(Formel, ATR) then
	
	Stopp = 0

	for z = Anfang+1 to Ende
		
        if z < Ende and Low(z) < Stopp and High(z) > Stopp then
			if High(z) > High(z-1) then
				Stopp = Low(z+1) - ATR(z)*Faktor
			else
				Stopp = High(z+1) + ATR(z)*Faktor
			end if
		else
			if Low(z) > Stopp and Stopp < Low(z) - ATR(z)*Faktor then
				Stopp = Low(z) - ATR(z)*Faktor
			else
				if High(z) < Stopp and Stopp > High(z) + ATR(z)*Faktor then
					Stopp = High(z) + ATR(z)*Faktor
				end if
			end if
        end if
		
		Ergebnis(z)= Stopp
			
	next
end if


Leider wird der Quellcode hier nicht sauber strukturiert dargestellt, aber zum Abkopieren wirds wohl gehen.
»Hans-Jürgen« hat folgendes Bild angehängt:
  • Aufzeichnen.PNG
»Hans-Jürgen« hat folgende Datei angehängt:
  • DynStopp.zip (1,27 kB - 434 mal heruntergeladen - zuletzt: 8. April 2024, 00:43)
Viele Grüße,
Hans-Jürgen

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

2

Donnerstag, 1. Mai 2008, 15:24

Hallo Hans-Jürgen

Probier mal:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'Die Variablen Perioden und Faktor werden als Parameter übergeben

Dim High, Low, ATR 
Dim z, Anfang, Ende, Stopp, Formel

GetDaten "High", High
GetDaten "Low", Low

Anfang = ErsteDatenPeriode(High)
Ende = LetzteDatenPeriode(High)

Formel = "ATR(" & cStr(Perioden) & ")"

if ScriptBerechneFormel(Formel, ATR) then
	
	Stopp = 0

	for z = Anfang+1 to Ende

		if ATR(z) = NoValue then

			Ergebnis(z)= 0      		  
		else
		
	        if z < Ende and Low(z) < Stopp and High(z) > Stopp then
				if High(z) > High(z-1) then
					Stopp = Low(z+1) - ATR(z)*Faktor
				else
					Stopp = High(z+1) + ATR(z)*Faktor
				end if
			else
				if Low(z) > Stopp and Stopp < Low(z) - ATR(z)*Faktor then
					Stopp = Low(z) - ATR(z)*Faktor
				else
					if High(z) < Stopp and Stopp > High(z) + ATR(z)*Faktor then
						Stopp = High(z) + ATR(z)*Faktor
					end if
				end if
			end if
		
			Ergebnis(z)= Stopp
		end if
			
	next
end if


Bindest Du den Stop eigentlich als Exit ein oder "verwurstest" Du ihn in einem Anwender- oder Intradaystop?
Gruss
Bernd

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

3

Donnerstag, 1. Mai 2008, 16:07

Hallo Bernd,

danke, das war's! Habe den Code allerdings so dargestellt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
'Die Variablen Perioden und Faktor werden als Parameter übergeben

Dim High(), Low(), ATR() 
Dim z, Anfang, Ende, Stopp, Formel

GetDaten "High", High
GetDaten "Low", Low

Anfang = ErsteDatenPeriode(High)
Ende = LetzteDatenPeriode(High)

Formel = "ATR(" & cStr(Perioden) & ")"

if ScriptBerechneFormel(Formel, ATR) then
	
	Stopp = 0

	for z = Anfang+1 to Ende
		
		if ATR(z) = NoValue then
			Stopp = 0
		elseif z < Ende and Low(z) < Stopp and High(z) > Stopp then
			if High(z) > High(z-1) then
				Stopp = Low(z+1) - ATR(z)*Faktor
			else
				Stopp = High(z+1) + ATR(z)*Faktor
			end if
		else
			if Low(z) > Stopp and Stopp < Low(z) - ATR(z)*Faktor then
				Stopp = Low(z) - ATR(z)*Faktor
			end if
			if High(z) < Stopp and Stopp > High(z) + ATR(z)*Faktor then
				Stopp = High(z) + ATR(z)*Faktor
			end if
		end if
		
		Ergebnis(z)= Stopp
			
	next
end if


Ich habe den Stopp bisher als Exit eingebunden, jedoch mit mäßigem Erfolg. Für mich war dies jetzt der Einstieg in VBS.
Viele Grüße,
Hans-Jürgen

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

4

Donnerstag, 1. Mai 2008, 16:25

Hallo Hans-Jürgen

Bitte, gern geschehen!

Das ist das schöne am codieren - man hat gewisse Freiheiten :D

Hattest Du die langsame Version dieses Stops früher mit mehr Erfolg angewendet? In dieser Version scheint er mir auch nicht so hilfreich; ich habe ihn am Meander System, welches Anke in dem anderen Thread in Investox-Notation bereitgestellt hat, am Russel eMini probiert. DIe Kurve geht dann ziemlich nach Süd-Osten ...
Gruss
Bernd

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

5

Donnerstag, 1. Mai 2008, 16:29

Hattest Du die langsame Version dieses Stops früher mit mehr Erfolg angewendet?


Hallo Bernd,

nein, war auch nicht so pralle.....aber vielleicht kann ja jemand etwas damit herausholen. Man kann die Parameter ja auch noch im RB-Test robusten.

BTW:
Ich habe den Indi in der Database zum Download bereitgestellt.
Viele Grüße,
Hans-Jürgen

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Donnerstag, 1. Mai 2008, 16:39

Hallo Hans-Jürgen

Man kann die Parameter ja auch noch im RB-Test robusten.

Ich habe mal den Darwin gestartet. In der ersten Generation Kapitalrisiko halbiert bei ungefähr gleichem Netto-Profit. Mal sehen 8)

Ich poste nachher die Erfahrungen dazu, wenn ein paar Generationen durch sind ...
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

7

Donnerstag, 1. Mai 2008, 17:57

Hallo Hans-Jürgen

Sieht doch gar nicht so schlecht aus! Gegenüber dem "nackten" Meander ohne Stops (ausser MOC natürlich) ist das max. realisierte Kapitalrisiko um 38% zurückgegangen (!), die Kapitalkurve sieht schon optisch besser aus (wird durch den Bestimmtheitsgrad der Steigung bestätigt, vorher 0,842, nachher: 0,949) und der durchschn. Return etwas gestiegen. Erwartungsgemäss gingen die profitablen Trades zurück (ein bisschen Schwund ist immer 8) )

Ich habe zuerst per GA ein wenig "vorgefühlt", und dann in einem sinnvoll erscheinenden Bereich herum die Parameter für den Long-Exit und den Short-Exit robustet. Das ging schneller, als alles in dem von Dir "grosszügig" vorgegebenen Bereich durchzu-robusten :D

Die Robtests weisen auch logisch zusammenhängende Gebiete auf; die gefundenen Werte scheinen also nicht punktuell zufällig zu sein; ich werde den Exit sicher mal in mein Tool-Set aufnehmen und weiter beobachten :thumbup:
»Bernd« hat folgende Bilder angehängt:
  • Meander_pur_Russel2000_eMini.png
  • Meander_mit_HJ_Exit_Russel2000_eMini.png
  • Meander_Robtest_LongExit.png
  • Meander_Robtest_ShortExit.png
Gruss
Bernd