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

Malecode

unregistriert

1

Mittwoch, 25. Februar 2009, 19:33

Automatische Trendlinie

Da das Thema in letzter Zeit wohl etwas eingeschlafen ist, möchte ich mal folgenden Ansatz zur Diskussion stellen. Wer mag, ist herzlichst eingeladen den Indikator auszuprobieren, zu kritisieren, Verbesserungsvorschläge zu machen und/oder seine Weiterentwicklung vorzustellen...
(Insbesondere haben ja vielleicht einige bessere Ideen zur Ermittlung der Auflagepunkt der Unterstützungslinie.)

Thomas

Hier der VB-Code für eine automatische Unterstützungslinie (einfach einen Indikator erstellen und einfügen, Parameter sind nicht erforderlich):
GetDaten "High", High
GetDaten "Low", Low
GetDaten "Close", Close
GetDaten "Open", Open

StartI = ErsteDatenPeriode(Close)
EndI = LetzteDatenPeriode(Close)

Dim DiffBars, DiffLow, Linie, WP
ReDim DiffBars(EndI), DiffLow(EndI), Linie(EndI), WP(EndI, 7)


For i = StartI+200 To EndI

'Anfangswerte
WP(StartI+200, 5) = StartI+200 'Bar Aktuell
WP(StartI+200, 6) = Close(StartI+200) 'Wert Aktuell
WP(StartI+200, 7) = 0 'Steigung Aktuell
Linie(StartI+200) = Low(StartI+200)

'Übernahme der alten Werte
WP(i, 0) = WP(i-1, 0) 'Bar des ersten Wendepunkts
WP(i, 1) = WP(i-1, 1) 'Wert des ersten Wendepunkts
WP(i, 2) = WP(i-1, 2) 'Bar des zweiten Wendepunkts
WP(i, 3) = WP(i-1, 3) 'Wert des zweiten Wendepunkts
WP(i, 4) = WP(i-1, 4) 'Steigung

WP(i, 5) = WP(i-1, 5) 'Bar Aktuell
WP(i, 6) = WP(i-1, 6) 'Wert Aktuell
WP(i, 7) = WP(i-1, 7) 'Steigung Aktuell

'Geradengleichung
Linie(i) = WP(i, 6) + WP(i, 7)*(i-WP(i, 5))

'Ermittlung neuer und Fortschreibung alter Wendepunkte
If Low(i-2) > Low(i-1) then
If Low(i-1) < Low(i) then
WP(i, 2) = i-1
WP(i, 3) = Low(i-1)
WP(i, 0) = WP(i-1, 2)
WP(i, 1) = WP(i-1, 3)
'Berechnung der Steigung
DiffBars(i) = WP(i, 2) - WP(i, 0)
DiffLow(i) = WP(i, 3) - WP(i, 1)
If DiffBars(i) <> 0 then
WP(i, 4) = DiffLow(i)/DiffBars(i)
Else
WP(i, 4) = 0
End If
End If
End If

'Berechnung neuer Unterstuetzungslinie bei Bruch
If Close(i) < Linie(i) AND WP(i, 4) > 0 then
WP(i, 5) = WP(i, 2) 'Bar Aktuell
WP(i, 6) = WP(i, 3) 'Wert Aktuell
WP(i, 7) = WP(i, 4) 'Steigung Aktuell
End If

Next

For i = StartI+200 to EndI
Ergebnis(i) = Linie(i)
next

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

2

Mittwoch, 25. Februar 2009, 21:04

Hallo Malecode,

toll dass Du Deine Entwicklung hier einstellst !
Du hast Dir sehr viel Mühe damit gegeben.

Es gab vor einiger Zeit einmal einen Artikel zu den ATL im Stocks & Commodities Magazine- ich meine er war von George Siligardos.
Ich hatte die ATL danach programmiert, musste dabei aber leider feststellen, dass der von Siligardos als Basis für seine ATL genutzte Swing-Indikator in die Zukunft schaute.
Siligardos hat den Zukunftsblick 2-3 S&C Ausgaben später aufgrund einer Anfrage eines anderen Lesers bestätigt.

Ich habe dann die Siligardos -ATL noch einmal ohne Blick in die Zukunft programmiert.
Die Basis meiner Programmierungen stelle ich gern als weiteren Input für diesen Thread zur Verfügung.
Die Indikatoren sind ausbaufähig.
Ich wollte sie schon längst mal um einige Parameter erweitern und abschließend überarbeiten.

Bisher fehlte mir dazu aber dann doch immer wieder die Zeit....



Meine VBS-Codes lauten:

Aufwärtstrendlinie

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
getdaten "close", closedaten
getdaten "high", highdaten
getdaten "low", lowdaten


starti= ersteDatenperiode(lowdaten)
endi =  letzteDatenperiode(lowdaten)
n=Endi
Dim Downswing()
redim Downswing(Endi+5)

For a=starti to endi

if lowdaten(a)<lowdaten(a-1)   then

counter=counter+1
end if

if lowdaten(a)>lowdaten(a-1) then
counter=0
end if

if counter >= 2 then
Downswing(a)=2
else
Downswing(a)=counter
end if
next

dim pivotposition(10000000)
'f=n-2 = Verzögerung der Aktualisierung um 2 Perioden
f=n
pivotsfound=0

      
 do until b>0  

 do while ((f>((Sensibility+counters)-1)) and (pivotsfound<(Sensibility+counters)))
  
   if Downswing(f)=2 then
   pivotsfound = pivotsfound+1
   pivotposition(((Sensibility+counters)+1)-pivotsfound)= f
   end if
   f=f-1	  
	 loop

  x1=pivotposition(1)
  x=x1
  x2=pivotposition(2)
   p1=lowdaten(x1)
  p2=lowdaten(x2)

 do while maxtest < (x2-x1)
  if lowdaten(x1+maxtest)<p1 then
  p1=lowdaten(x1+maxtest)
  x1=pivotposition(1)+maxtest
  maxtest=maxtest+1
 end if
  maxtest=maxtest+1
  loop

dim y,TL1
redim y(endi+5),tL1(endi+5)

 b=(p2-p1)/(x2-X1)  
 counters=counters+1
 

  for i=x1 to endi+5
 	     
    y(i)= b*i+p1
      
	tl1(i)=     y(i) + ( p1-y(X1))     
   
	if lowdaten(i)<tl1(i) and i<x2 then
	p1=lowdaten(i)
	x1=i
	end if
	
  next

 
  loop
        
       for j=x1 to endi+5

b=(p2-p1)/(x2-X1) 

  	     
    y(j)= b*j+p1
	        
	ergebnis(j)=     y(j) + ( p1-y(X1))     
	
	        
   next



Abwärtstrendlinie

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
getdaten "close", closedaten
getdaten "high", highdaten
getdaten "low", lowdaten


starti= ersteDatenperiode(closedaten)
endi =  letzteDatenperiode(closedaten)
n=Endi

Dim Upswing()
redim upswing(Endi+5)


For a=starti to endi

if highdaten(a)>highdaten(a-1)   then

counter=counter+1
end if

if highdaten(a)<highdaten(a-1) then
counter=0
end if

if counter >= 2 then
Upswing(a)=2
else
upswing(a)=counter
end if
next


dim pivotposition(10000000)
'f=n-2 = Verzögerung der Aktualisierung um 2 Perioden
f=n
pivotsfound=0

      
 do until b<0  
   
  do while ((f>((Sensibility+counters)-1)) and (pivotsfound<(Sensibility+counters)))
  
   if upswing(f)=2 then
   pivotsfound = pivotsfound+1
   pivotposition(((Sensibility+counters)+1)-pivotsfound)= f
   end if
   f=f-1	  
	
	 loop	 	   
 
  x1=pivotposition(1)
  x=x1
  x2=pivotposition(2)
   p1=highdaten(x1)
  p2=highdaten(x2)
 
  		 
 do while maxtest < (x2-x1)
  if highdaten(x1+maxtest)>p1 then
  p1=highdaten(x1+maxtest)
  x1=pivotposition(1)+maxtest
  maxtest=maxtest+1
 end if
  maxtest=maxtest+1
  loop

dim y , TL1
redim y(endi+5), TL1(endi+5)

 
 b=(p2-p1)/(x2-X1)  
   counters=counters+1
 
 		  
  for i=x1 to endi+5
   	     
    y(i)= b*i+p1
	        
	tl1(i)=     y(i) + ( p1-y(X1))     

	   
	if highdaten(i)>tl1(i) and i<x2 then
	p1=highdaten(i)
	x1=i
	end if
	
	   	    next
				        
  
  loop
        

        for j=x1 to endi+5

b=(p2-p1)/(x2-X1) 

					   
   	     
    y(j)= b*j+p1
	        
	ergebnis(j)=     y(j) + ( p1-y(X1))     
	
	    			       
   next
Viele Grüße von Anke

http://www.ascunia.de

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

3

Freitag, 27. Februar 2009, 01:34

In beiden Indikatoren muss ein Parameter definiert sein, damit sie funktionieren.
Das hatte ich vergessen zu erwähnen.
»Wiwu« hat folgendes Bild angehängt:
  • Parameter.GIF