Montag, 22. Oktober 2018, 15:19 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lenzelott Männlich

Erleuchteter

Registrierungsdatum: 30. Dezember 2002

Beiträge: 2 901

Wohnort: Giessen

1

Sonntag, 20. April 2008, 18:26

Ungereimtheit bei VBS Indikator zur Tradeauswertung

Hier der Code meines Indikators:
der berechnet die Kapitalkurve ohne Kosten.
Wenn ich jedoch den Profitfakor auf identischem Wege berechnen möchte, müßte ich die Ergebnis Berechnung wie folgt abändern:

Quellcode

1
ergebnis(i+datenoffset)=-summegewinner/summeverlierer


Leider erhalte ich dann aber keine Ergebnisse mehr zurück, sondern nur K/A.
Das verwundert mich schon sehr, dass das ersetzen der Addition durch die Divison zu diesem Ergebniss führt. ?(

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
dim i	
dim aktTradeNr
dim startperiod
dim endperiod
dim wert
dim datum
dim TradeStartdatum
dim DatenOffset
dim anzahlgewinner, anzahlverlierer, summegewinner, summeverlierer

anzahlgewinner=0
anzahlverlierer=0
summegewinner=0
summeverlierer=0


if tradeanzahl>0 then
	'Zuerst ermitteln, welcher Offset in den Perioden von
	'Tradeliste und Chartdaten besteht
	getdatum datum
	TradeStartdatum=tradeergebnis(1,"startdate")
	Startperiod=tradeergebnis(1,"startperiod")
	for i=1 to alleperioden
		if datum(i)>=TradeStartdatum then
			DatenOffset=i-Startperiod
			exit for
		end if			
	next 
	' Jetzt das gewünschte Ergebnis kopieren
	for aktTradeNr = 1 to tradeanzahl
		startperiod=tradeergebnis(akttradenr,"startperiod")
		endperiod=tradeergebnis(akttradenr,"endperiod")

		wert=(tradeergebnis(akttradenr,"exitbasis") - tradeergebnis(akttradenr,"enterbasis"))*tradeergebnis(akttradenr,"position")
        if wert>0 then
		  anzahlgewinner=anzahlgewinner+1
		  summegewinner=summegewinner+wert
		else
		  if wert<0 then
		  anzahlverlierer=anzahlverlierer+1
		  summeverlierer=summeverlierer+wert
		  end if
		end if

		for i = startperiod to endperiod
			if i+datenoffset <= AllePerioden then
				ergebnis(i+datenoffset)=summegewinner+summeverlierer
			end if
		next
	next
else
	'Ohne Tradeliste: Alles auf 0 setzen
	for i=1 to alleperioden
		ergebnis(i)=1
	next
end if
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Tim Männlich

Profi

Registrierungsdatum: 5. August 2004

Beiträge: 441

2

Sonntag, 20. April 2008, 18:59

Hallo Lenzelott,

Dein Code ist ok.
Du musst den Indikator nur über "Formel einfügen" und dann mit

#_tradelisteeinbinden#
DeinIndikatorname()

im Chart anzeigen lassen.

Cu Tim

Lenzelott Männlich

Erleuchteter

Registrierungsdatum: 30. Dezember 2002

Beiträge: 2 901

Wohnort: Giessen

3

Sonntag, 20. April 2008, 19:14

Genau das habe ich gemacht. Deswegen bekomme ich ja auch Ergebnisse angezeigt.
Siehe oben.

Nur wenn ich das Pluszeichen in der Berechnung für das Ergebniss im Indi gegen eine Divison tausche (weil ich den Profitfaktor haben möchte) kommt immer K/A im chart.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Tim Männlich

Profi

Registrierungsdatum: 5. August 2004

Beiträge: 441

4

Sonntag, 20. April 2008, 19:27

Hallo,

eine Division durch Null ist bei Dir ausgeschlossen ?

Bei mir funktioniert der Code auch mit der Division.

Cu Tim

Lenzelott Männlich

Erleuchteter

Registrierungsdatum: 30. Dezember 2002

Beiträge: 2 901

Wohnort: Giessen

5

Sonntag, 20. April 2008, 20:04

Genau da liegt das Problem.
Danke für den Hinweis.
Wenn der erste Trade ein Gewinner ist bekommt man sofort am Anfang eine Division durch 0 und der Indi bricht ab.

Sorum wird ein Schuh daraus


Quellcode

1
2
3
4
5
6
if summeverlierer<>0 then
				ergebnis(i+datenoffset)=-(summegewinner/summeverlierer)
              else
			    ergebnis(i+datenoffset)=0
			  end if
			end if



Evtl. sollte man noch warten bis zum 15. oder 20. Trade mit der Aussgabe eines Ergebnisses bis sich der Profitfaktor "eingeschwungen" hat.

dann wäre das Ergebnis wie folgt darzustellen:

Quellcode

1
2
3
4
5
6
if summeverlierer<>0 and akttradenr>20 then
				ergebnis(i+datenoffset)=-(summegewinner/summeverlierer)
              else
			    ergebnis(i+datenoffset)=0
			  end if
			end if
If you think it´s expensive to hire a professional, wait until you hire an amateur.