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

Tim

unregistriert

1

Dienstag, 4. Juli 2006, 15:54

Boxen waagerecht zählen

Hi,

ich möchte im P&F-Chart herausfinden, auf welchem Preisniveau sich über den Handelstag verteilt die meisten Boxen befinden (egal ob X oder O).
Hat jemand eine Idee, wie ich das mit der Formelsprache realisieren kann ?

Danke + lg von Tim

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Dienstag, 4. Juli 2006, 16:50

Hallo Tim,

die kumulierte Häufigkeitsverteilung ist bislang noch nicht möglich. Ich habe auch keine Idee, wie man das mit den aktuellen Formel-Möglichkeiten effektiv umsetzen kann!
Happy Trading

Tim

unregistriert

3

Dienstag, 4. Juli 2006, 17:39

Hi Udo,

danke für deine Antwort. Ich habe heute auch schon den ganzen Tag erfolglos versucht, das Problem zu lösen, leider. ;(


@ Herrn Knöpfel

Haben Sie eventuell einen Lösungsvorschlag ?

Falls mit aktuellen Inv-Mitteln wirklich keine Lösung möglich ist, könnte alternativ ein entsprechender hardgecodeter Indikator auf die Inv-Erweiterungsliste ?

lG Tim

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tim« (4. Juli 2006, 17:39)


Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Mittwoch, 5. Juli 2006, 09:53

Hallo,

entsprechende Indikatoren sind auf der Liste bzw. in Arbeit.

Viele Grüße
Andreas Knöpfel

Tim

unregistriert

5

Mittwoch, 5. Juli 2006, 09:56

Danke.

Tim

unregistriert

6

Mittwoch, 28. September 2011, 12:13

Hallo,

ist mein Problem aus dem Jahr 2006 inzwischen lösbar und -falls ja- wie genau muss ich vorgehen?

mfG Tim

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

7

Mittwoch, 28. September 2011, 15:42

Hallo,

mit den Histogrammen aus Markt Plus! bzw mit dem Histo-Analyse-Indikator.

>>kumulierte Häufigkeitsverteilung
macht genau das.

Viele Grüße
Andreas Knöpfel

Tim

unregistriert

8

Donnerstag, 29. September 2011, 15:35

Hallo Herr Knöpfel,

vielen Dank für Ihren Hinweis auf Markt Plus.
Leider gelingt mir die Zählung der waagerechten Boxen im P&F-Chart mit Histogrammen und dem Histo-Analyse-Indikator bisher aber nicht.
Zum Stichwort "kummulierte Häufigkeitsverteilung" habe ich weder in den Histo-Indikator-Einstellungen noch in der Markt-Plus Dokumentation bisher einen Hinweis finden können.

Ich möchte Sie deshalb darum bitten, mir den Lösungsweg mit Hilfe von Markt Plus aufzuzeigen.
Welchen der 4 Histo-Indikatoren sollte ich mit welchen Einstellungen verwenden ?

Danke und Grüße

Tim

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

9

Donnerstag, 29. September 2011, 17:46

Hallo,

die Histogramme sind ja selbst die "kumulierte Häufigkeitsverteilung". Allerdings war mein Hinweis darauf nicht richtig durchdacht bzw. mir fällt da zunächst auch nichts ein, wie man das mit der Histo-Funktionalität umsetzen kann (das Problem ist die Differenzierung der einzelnen Kästchen pro Spalte).
Hier nun ein Vorschlag, wie man die Fragestellung mit einem VBScript umsetzen kann. Das Script zeigt auch ganz gut, wie hilfreich ein "Dictionary"-Objekt in einem VBScript sein kann. Vielleicht hat auch jemand noch Verbesserungsvorschläge dazu oder kann zeigen, dass das so nicht funktioniert:

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
VBScript(#>>
option explicit
dim SH, ST, SA
dim Datum 
dim Levels
dim i, j,Maximum
dim Kasten, KeyT, AlleKeys
Set Levels = CreateObject("Scripting.Dictionary")
' Das Datum sowie Spalten Hoch, Tief und Kästchenanzahl pro Spalte holen
GetDatum Datum
scriptberechneformel "Spalte(SH)", SH
scriptberechneformel "Spalte(ST)", ST
scriptberechneformel "Spalte(SA)", SA

' Nun für jede Periode die Kästchen zählen
for i=2 to AllePerioden
	if SH(i)<>Novalue then
		if fix(datum(i))>fix(Datum(i-1)) then
			' Beim Tageswechsel, das Maximum auswerten
			if Levels.count>0 then 
				maximum=0
				AlleKeys=Levels.Keys ' Alle gezählten Levels untersuchen
				for j=0 to ubound(AlleKeys)
					if Levels(AlleKeys(j))>maximum then
						maximum=Levels(AlleKeys(j))
						ergebnis(i)=Mid(AlleKeys(j),2) ' Der Key des Eintrags ist "#" & Kurslevel
					end if
				next
			else
				ergebnis(i)= 0 ' Kein Level gefunden
			end if
			' Nach der Auswertung alle gespeicherten Levels löschen
			Levels.removeall	
		else
			' während eines Tages den Vorgänger-Wert verwenden
			if ergebnis(i-1)<>NoValue then
				ergebnis(i)=ergebnis(i-1)
			end if
		end if
		' Ab hier erfolgt die Kästchen-Zählung pro Periode
		' Zunächst die Kästchen-Größe in Punkten ermitteln
		if SA(i)>1 then
			Kasten=(SH(i)-ST(i))/(SA(i)-1)
		else
			Kasten=SH(i)-ST(i)
		end if
		for j = 1 to SA(i)
			' Der Key des Eintrags ist das Kästchen-Kurslevel (davor ein #)
			KeyT="#" & ST(i)+(j-1)*Kasten-Kasten/2
			' Nun einfach für jedes Level eine 1 addieren, um das Kästchen zu zählen
			' Bei Dictionary wird ein Element automatisch angelegt, wenn es noch
			' nicht existiert
			Levels(KeyT)=Levels(KeyT)+1
		next
	end if
next <<#)


Viele Grüße
Andreas Knöpfel

Tim

unregistriert

10

Freitag, 30. September 2011, 09:01

Hallo Herr Knöpfel,

vielen Dank für Ihren Code.
Meiner Ansicht nach zeigt der Indikator in der Grafik unten nicht richtig an?
Erwartet hätte ich die Preisniveau-Anzeige für den 27.09.11 auf Höhe von 136,50 (13 Boxen).
Ich denke, dass die Fragestellung perspektivisch bestimmt am besten mit Hilfe von Markt Plus lösbar sein könnte.
Bei Verwendung eines Indikators würde ich ein Problem darin sehen, geeignete Preisniveaus zu ermitteln, wenn waagerecht mehrmals an verschiedenen Niveaus die gleiche Boxenzahl auftritt?




mfG Tim

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

11

Freitag, 30. September 2011, 11:42

Hallo,

die Zählung bei Spalten mit eine Kästchen war noch nicht korrekt. Unten ein entsprechend modifizierter Code (nun auch mit Rundung auf die Minimale Preisänderung des Titels).

Zitat

Bei Verwendung eines Indikators würde ich ein Problem darin sehen, geeignete Preisniveaus zu ermitteln, wenn waagerecht mehrmals an verschiedenen Niveaus die gleiche Boxenzahl auftritt?

Dieses Problem stellt sich bei Verwendung von Histogrammen aber genauso. In einem VBScript-Code kann man sogar eher noch flexibel damit umgehen. Die Frage ist nur, wie?

Viele Grüße
Andreas Knöpfel

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
VBScript(#>>
option explicit
dim SH, ST, SA
dim Datum 
dim Levels
dim i, j,Maximum
dim Kasten, KeyT, AlleKeys
dim TickSize
Set Levels = CreateObject("Scripting.Dictionary")
' Das Datum sowie Spalten Hoch, Tief und Kästchenanzahl pro Spalte holen
GetDatum Datum
scriptberechneformel "Spalte(SH)", SH
scriptberechneformel "Spalte(ST)", ST
scriptberechneformel "Spalte(SA)", SA
scriptberechneformel "#_MinPriceChange#", TickSize
' Nun für jede Periode die Kästchen zählen
for i=2 to AllePerioden
	if SH(i)<>Novalue then
		if fix(datum(i))>fix(Datum(i-1)) then
			' Beim Tageswechsel, das Maximum auswerten
			if Levels.count>0 then 
				maximum=0
				AlleKeys=Levels.Keys ' Alle gezählten Levels untersuchen
				for j=0 to ubound(AlleKeys)
					if Levels(AlleKeys(j))>maximum then
						maximum=Levels(AlleKeys(j))
						' Der Key des Eintrags ist "#" & Kurslevel
						ergebnis(i)=Mid(AlleKeys(j),2) - Kasten/2
					end if
				next
			else
				ergebnis(i)= 0 ' Kein Level gefunden
			end if
			' Nach der Auswertung alle gespeicherten Levels löschen
			Levels.removeall	
			Kasten=0
		else
			' während eines Tages den Vorgänger-Wert verwenden
			if ergebnis(i-1)<>NoValue then
				ergebnis(i)=ergebnis(i-1)
			end if
		end if
		' Ab hier erfolgt die Kästchen-Zählung pro Periode
		' Zunächst die Kästchen-Größe in Punkten ermitteln
		if SA(i)>1 then
			Kasten=clng((SH(i)-ST(i))/TickSize(i))*TickSize(i)/(SA(i)-1)
		end if
		for j = 1 to SA(i)
			' Der Key des Eintrags ist das Kästchen-Kurslevel (davor ein #)
			KeyT="#" & ST(i)+(j-1)*Kasten
			' Nun einfach für jedes Level eine 1 addieren, um das Kästchen zu zählen
			' Bei Dictionary wird ein Element automatisch angelegt, wenn es noch
			' nicht existiert
			Levels(KeyT)=Levels(KeyT)+1
		next
	end if
next <<#)

Tim

unregistriert

12

Freitag, 30. September 2011, 12:49

Hallo Herr Knöpfel,

vielen Dank für den erweiterten Code.

Zitat

Dieses Problem stellt sich bei Verwendung von Histogrammen aber genauso. In einem VBScript-Code kann man sogar eher noch flexibel damit umgehen. Die Frage ist nur, wie?


Stimmt, das Problem besteht bei den Historgrammen auch.
Mein Ziel ist, auf Basis der Wertebereiche mit den meisten waagerechten Boxen Support- und Resistance-Zonen für den folgenden Handelstag zu definieren.
Insofern wäre eigentlich weniger das Preisniveau mit der maximalen Boxenzahl von Intersse, sondern eher die obere/untere Begrenzung der Handelsbereiche mit vielen waagerechten Boxen (z.B. Grafik 1- Resistance Level 136,60 - > Enter Long bei Buy Pattern über diesem Level, Support-Level z.B. bei 135,70 -> Enter Short bei Sell-Pattern unter diesem Level).

Für die Problematik meines Eingangspostings ist VBS zweifellos flexibler.
Ich habe leider mein Eingangsposting seinerzeit zu ungenau formuliert.

mfG Tim

Lasse1 Männlich

Benutzer

Registrierungsdatum: 19. Mai 2007

Beiträge: 15

13

Montag, 16. Januar 2012, 00:00

Hallo,

die "Dictionary"-Funktion von VBA wollte ich mal mit dem Volumen einsetzen. Dabei hat man den Vorteil gegenüber den Histogrammen, dass nicht nur der Maximale Wert -sondern auch mehrere Werte ausgewertet werden können.

Dazu hatte ich für den Test versucht die Formel von Herrn Knöpfel in der Form abzuwandeln, dass statt der Boxen auf einen Niveau nun das Volumen auf einen Niveau gezählt wird. Das schien erst einmal relativ einfach…

Leider bekomme ich immer eine Fehlermeldung, dass der Typ nicht stimmt. Hat jemand eine Idee, woran das liegen könnte?



Fehlermeldung:

Typen unverträglich in Line:

Levels(KeyT)=Levels(KeyT)+Vo



Die Änderungen habe ich rot gekennzeichnet!



option explicit

dim SH, ST, SA, Vo


dim Datum
dim Levels
dim i, j,Maximum
dim Kasten, KeyT, AlleKeys
dim TickSize
Set Levels = CreateObject("Scripting.Dictionary")
' Das Datum sowie Spalten Hoch, Tief und Kästchenanzahl pro Spalte holen
GetDatum Datum
scriptberechneformel "Spalte(SH)", SH
scriptberechneformel "Spalte(ST)", ST
scriptberechneformel "Spalte(SA)", SA
scriptberechneformel "#_MinPriceChange#", TickSize
getdaten "Volume", Vo



' Nun für jede Periode die Kästchen zählen
for i=2 to AllePerioden
if SH(i)<> Novalue then
if fix(datum(i))>fix(Datum(i-1)) then
' Beim Tageswechsel, das Maximum auswerten
if Levels.count>0 then
maximum=0
AlleKeys=Levels.Keys ' Alle gezählten Levels untersuchen
for j=0 to ubound(AlleKeys)
if Levels(AlleKeys(j))>maximum then
maximum=Levels(AlleKeys(j))
' Der Key des Eintrags ist "#" & Kurslevel
ergebnis(i)=Mid(AlleKeys(j),2) - Kasten/2
end if
next
else
ergebnis(i)= 0 ' Kein Level gefunden
end if
' Nach der Auswertung alle gespeicherten Levels löschen
Levels.removeall
Kasten=0
else
' während eines Tages den Vorgänger-Wert verwenden
if ergebnis(i-1)<>NoValue then
ergebnis(i)=ergebnis(i-1)
end if
end if
' Ab hier erfolgt die Kästchen-Zählung pro Periode
' Zunächst die Kästchen-Größe in Punkten ermitteln
if SA(i)>1 then
Kasten=clng((SH(i)-ST(i))/TickSize(i))*TickSize(i)/(SA(i)-1)
end if
for j = 1 to SA(i)
' Der Key des Eintrags ist das Kästchen-Kurslevel (davor ein #)
KeyT="#" & ST(i)+(j-1)*Kasten
' Nun einfach für jedes Level eine 1 addieren, um das Kästchen zu zählen
' Bei Dictionary wird ein Element automatisch angelegt, wenn es noch
' nicht existiert
Levels(KeyT)=Levels(KeyT)+Vo
next
end if


next

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Montag, 16. Januar 2012, 09:29

Hallo,

VO ist ja ein Datenfeld, muss also immer indiziert angesprochen werden:

Levels(KeyT)=Levels(KeyT)+Vo(i)

Viele Grüße
Andreas Knöpfel