Freitag, 19. April 2024, 20:14 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.

hsc

unregistriert

1

Freitag, 16. Dezember 2011, 15:40

Wert eines Anwender-Indikators beim Einstieg zum Ausstieg verwenden

Hallo, bitte Nachsicht walten lassen, wenn die Antwort trivial ist, da das mein erste Frage hier ist und ich im groben Drüberschauen im Forum nichts richtig passendes gefunden habe.
Also ich habe einen Indikator in VBScript gemacht, der liefert das Signal für den Einstieg und das Signal stellt gleichzeitig den Kurs für den Ausstieg dar. Wie gehe ich vor, um diesen Wert z.B. in der Exit-Regel oder einem Stop verwenden zu können?
Ich frage mich, wo ich mir das am besten merke (globale Variable?) und wie ich das mache, da ich m.E. in den Regeln des Handelssystems ja keine Zuweisung machen kann. Dort sind irgendwie nur boolesche Ausdrücke möglich. Muss ich einen Anwender-Stop in VBScript machen?
Danke für eine rasche Antwort

Tim

unregistriert

2

Freitag, 16. Dezember 2011, 16:10

Hallo hsc,

was funktioniert denn bei Dir nicht an der Variante:

Definitionsbereich des Handelssystems:

Quellcode

1
global calc Signal: DeinVBSIndikator;


Zugriff in den Exit-Regeln, Stops etc. über den Variablen-Namen Signal

Erhältst Du Fehlermeldungen und -falls ja- welche ?

Cu Tim

hsc

unregistriert

3

Freitag, 16. Dezember 2011, 16:17

Hallo Tim,
Danke für die schnelle Antwort.
Dein Vorschlag kam mir natürlich auch in den Sinn. Aber der würde doch den Wert meines Indikators zur aktuellen Periode festhalten. Ich brauche aber den zum Zeitpunkt des Einstiegs, der ja schon etliche Perioden zurückliegen kann. Die Definitionen werden doch in jeder Periode wieder neu aufgerufen.
Viell. habe ich ja auch ein Verständnisproblem?

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Freitag, 16. Dezember 2011, 16:30

Hallo,

es gibt ja die Stop-Option "Limit bei dynamischer Berechnung fixieren": Wenn aktiviert, wird ein Limit, das in einer globalen Variable dynamisch berechnet wird, auf dem Wert zu Beginn der Position festgehalten. Ansonsten wird das Limit im Verlauf der Position ständig an den Wert der globalen Variablen angepasst.

Viele Grüße
Andreas Knöpfel

hsc

unregistriert

5

Montag, 19. Dezember 2011, 10:57

Hallo Herr Knöpfel,
vielen Dank für die Antwort. Klingt logisch diese Stop-Option "Limit bei dynamischer Berechnung fixieren". Ich habe sie gesetzt mit entsprechend berechneter globaler Variable.
So richtig funktioniert es aber leider noch nicht. Wahrscheinlich ist in meinen Einstellungen noch an anderer Stelle ein Fehler bzw. Denkfehler.
Jetzt tritt immer der Intraday-Verlust-Stop in Kraft und zwar immer mit dem Open der nächsten Periode als Ausstiegspreis.
Meine Handelssystem-Einstellungen:
Beschreibung für System 'Mane1'
Uhrzeit: 19.12.2011 10:40:19
Angelegt am: 16.12.2011 13:29:50
Zuletzt bearbeitet: 19.12.2011 10:36:32
Komprimierung: 60 Minuten
***** Regeln ******
Enter Long:
0
Exit Long:
0
Enter Short:
(IndiMane > 0) and (Open < IndiMane)
Exit Short:
0
Übergreifende Definitionen:
Global calc IndiMane: Mane();
Global calc StopLimit: IndiMane - open;

***** Optimierung *****
Start: 01.01.1988
Ende: 31.12.1993
Optimierte Titel:
DAX-Future (Eurex)
Optimierungskriterien:
Maximiere 'Profit-Ratio zu Buy/Hold', Gewichtung: 1
Maximiere 'Sharpe Ratio', Gewichtung: 1
GA-Einstellung: Optimiere maximal 50 Generationen mit 15 Eltern und 100 Nachkommen.
***** Test-Einstellungen *****
Positionen: Long+Short
Enter-Basis: Open
Short: Open
Delay: 0
Exit-Basis: Close
Short: Close
Delay: 0
Buy/Hold-Basis: Close
Trade-Mindestdauer: 0
Out-Mindestdauer: 0
Punkte testen
Startkapital: 50000
Wert pro Punkt: 100
Entry-Gebühren: 100
Exit-Gebühren: 0
Zusatz-Gebühren: 7
Slippage: 0
Portfolio Zinssatz: 5
Risikotoleranz: 24
Intra-Verlust Short
bei StopLimit Kurspunkten
ab 0 Perioden
Intra-Gewinn Long+Short
bei 30 Kurspunkten
ab 0 Perioden
Handelszeit
von 09:00:00
bis 17:00:00
Money-Manag. Fester Kapitalanteil
Anteil 100%
Delta 50000
Max. Kontrakte 1
***** Optimierungs-Report *****
Kein Optimierungsergebnis vorhanden
***** Aktualisierungs-Einstellungen *****
Tägliche Aktualisierung um 20:00
Signale nur bei vollendeten Perioden
Der Indikator Mane() liefert einen Höchst-Kurs aus vergangenen Perioden oder 0. Der Indikator arbeitet m.E. richtig, da ich ihn im Chart sehe und er für den Einstieg die richtigen Signale liefert
Bitte erklären Sie mir, was dazu führt, dass der Ausstieg über den Intraday-Verluststop falsch ist.
Vielen Dank und viele Grüsse

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Montag, 19. Dezember 2011, 17:30

Hallo Jane Doe

Ich heiss' zwar nicht Herr Knöpfel, aber vielleicht ist er gerade bei Weihnachtseinkäufen ... also schreib' ich Dir jetzt doch meinen Gedanken, den ich heute morgen beim Lesen Deines Postings hatte:

Der Stop beginnt doch erst in der dem Einstieg folgenden Periode: probier bitte mal, ob diese Anpassung das gewünschte Resultat bringt, so geht's jeden bei mir mit Open Delay 0 normalerweise bei solch berechneten Stop-Werten, die sich von Periode zu Periode ändern:

Quellcode

1
Global calc StopLimit: Ref( IndiMane - open, -1);


(im Sofort-Stop ggf. natürlich die Berechnung ohne Ref-1 nehmen, is' klar, oder)
Gruss
Bernd

hsc

unregistriert

7

Montag, 19. Dezember 2011, 18:11

Hallo Bernd,
ich heiss zwar nicht Jane Doe, aber trotzdem freue ich mich über Deine Antwort anstelle der von Herrn Knöpfel, der sich viell. bei Weihnachtseinkäufen befindet (was ich auch besser tun sollte *ggg*)
Ich habs ausprobiert und es funktioniert!!
Aber verstehen tue ich es nicht und zwar aus dem Grund, weil ja das StopLimit zum Zeitpunkt des Einstiegs festgehalten werden soll und dieser Wert dann zum Zeitpunkt des Ausstiegs hergenommen werden soll. Aber anscheined wir dieses StopLimit zum Zeitpunkt des Ausstiegs bestimmt. Wahrscheinlich denke ich dazu sehr programmier-technisch.
Und da ich schon mal jemand gefunden habe, der sich auskennt, versuche ich gleich 2 weitere Fragen los zu werden:
Viell. kannst Du mir auch noch sagen, warum trotz meinen Einstellungen ein Trade immer mindestens eine Periode dauert?
Ausserdem wie bekomme ich es hin, dass dieser Stop auf Minuten-Basis funktioniert während die Enter-Basis auf Stunden-Komprimierung läuft? Die RTT-Daten liegen auf Tick-Basis vor. Kann ich bei der Berechnung von StopLimit dann Kompr(#Close#, #1#) verwenden oder muss ich da dann einen Anwender-Stop bauen?
Vielen Dank,
Heinrich

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

8

Montag, 19. Dezember 2011, 18:48

Hallo Heinrich

Schön, dass ich Dich jetzt mit einem Namen ansprechen kann. Oder wie sagt Colonel John "Hannibal" Smith: ich liebe es, wenn ein Plan funktioniert :D

Ohje, das ist immer das Problem, jede Antwort, die man sich erlaubt, wirft wieder Fragen auf ... naja, ich versuchs mal. Der Engländer würde sagen, das sind Constrains:
Ausserdem wie bekomme ich es hin, dass dieser Stop auf Minuten-Basis funktioniert während die Enter-Basis auf Stunden-Komprimierung läuft?

Die RTT-Daten liegen auf Tick-Basis vor. Kann ich bei der Berechnung von StopLimit dann Kompr(#Close#, #1#) verwenden oder muss ich da dann einen Anwender-Stop bauen?

Tägliche Aktualisierung um 20:00
Signale nur bei vollendeten Perioden

Viell. kannst Du mir auch noch sagen, warum trotz meinen Einstellungen ein Trade immer mindestens eine Periode dauert?

Ich würde sagen, Du hast das Pferd am Schwanz aufgezäumt: Du hast eine grosse Basis-Kompression gewählt, möchtest aber in diesen grossen Perioden rumpfuschen, dazu lässt Du keine unvollendeten Perioden zu (welche man bräuchte für zeitnahe Stops) und Du aktualisierst nur einmal um 20 Uhr (was für zeitnahe Stops auch, sagen wir mal, suboptimal, ist).

Tu Dir und uns einen Gefallen, und kehre das Paradigma Deines Denkansatzes um:

* Basis-Komprimierung ist üblicherweise die kleinste Komprimierung, auf der man die Stops rechnen möchte; ich schlage vor, Du wählst 5 Minuten (eine Minute wäre schöner, aber bei allem unter 5 Minuten steigt der Rechenaufwand exorbitant an, das wirst Du Dir in den Backtests nicht antun wollen (während es im Life-handel üblicherweise kein Problem darstellt))

* Dein Setup kannst Du ja mit Komp(# Ref( <deine Regeln>, -1)#,#60#) auf 60 Minuten hochsetzen und zum Open jeder Stunde einsteigen; wenn Du nur um 20 Uhr einsteigen willst, fixt Du halt den Entry über die Uhrzeit

* Aktualisierung ist alle 0 Sekunden während der Handelszeit bei unvollendeten Perioden (wenn Du eine schwache CPU hast oder viele Projekte laufen, tun es meist auch 3 bis 5 Sekunden, vor allem, wenn Du mit Stop-Entry in den Markt gehst, und den Stop schon rechtzeitig vorher in den Markt legst)

* verwende nur die Intraday Stops (auch der Tradedauerstop ist erlaubt, aber nicht die normalen Kurs-Stops)

Nun kommst Du bequem raus aus dem Trade und kannst die Entry- und Stop Level auch vernünftig im Chart prüfen. Und auch innerhalb einer 5-Min. Periode ist wegen der ständigen Aktualisierung Life ein Ausstige möglich, so wie er im Backtest INNERHALB der 5 Minuten Perioden auch gerechnet und gechartet wurde.

Nicht, dass man es sorum, wie Du es angefangen hast auf 60 Min. Perioden nicht auch hinbekommen kann; aber die Fehlersuche usw. fällt schwerer, und alles übrige mit 0 Sekunden Aktualisieren, unvollendete Perioden usw. was ich geschrieben habe, würde trotzdem gelten. Aber wie gesagt, mach es wie alle, sonst stehst Du das nächste mal beim Nachziehen eines Intraday Trailing-Stops an, den Du nicht in die 60 Minuten Basis-Komrpimierung reinziehen kannst und andere Probleme ...
Gruss
Bernd

hsc

unregistriert

9

Montag, 19. Dezember 2011, 19:01

Hallo Bernd,
das klingt nach einem guten bzw. sogar einem sehr guten Plan :thumbsup:
Um das umzusetzen, muss ich dann doch ein bisschen umstellen.
Wenn ich es habe, hörst Du wieder von mir ..........
Danke nochmals für Deine Antwort.
Grüsse,
Heinrich

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

10

Montag, 19. Dezember 2011, 19:05

Wenn ich es habe, hörst Du wieder von mir .......

Gruss
Bernd

hsc

unregistriert

11

Mittwoch, 21. Dezember 2011, 16:59

Hallo Bernd,
jetzt bin ich (endlich) wieder da, wo ich vor 2 Tagen schon war, aber diesesmal hoffentlich richtig.
Das Umsetzen Deiner Ideen oder zumindest soweit ich es verstanden habe, führte schon in die richtige Richtung, allerdings steigt das HS jetzt sobald es einmal zur vollen Stunde eingestiegen ist auch zwischen vollen Stunden ein - was mir aber klar ist, da die Bedingung zur vollen Stunde ja noch gilt.
Also habe ich das wohl irgendwas noch nicht richtig umgesetzt. Hier meine jetzigen Einstellungen des HS und Tests:
***** Regeln ******
Enter Long:
0
Exit Long:
0
Enter Short:
(IndiMane > 0) and (Open < IndiMane)
Exit Short:
0
Übergreifende Definitionen:
Global Calc IndiMane: Komp(#Mane(50)#, #60#);
Global Calc StopLimit: Komp(#Ref(Mane(50) - open, -1)#, #60#);


***** Test-Einstellungen *****
Positionen: Long+Short
Enter-Basis: Open
Short: Open
Delay: 0
Exit-Basis: Close
Short: Close
Delay: 0
Buy/Hold-Basis: Close
Trade-Mindestdauer: 0
Out-Mindestdauer: 0
Punkte testen
Startkapital: 50000 €
Wert pro Punkt: 100 €
Entry-Gebühren: 100 €
Exit-Gebühren: 0 €
Zusatz-Gebühren: 7 €
Slippage: 0 €
Portfolio Zinssatz: 5
Risikotoleranz: 24
Intra-Gewinn Long+Short
bei 30 Kurspunkten
ab 0 Perioden
Intra-Verlust Long+Short
bei StopLimit Kurspunkten
ab 0 Perioden
Handelszeit
von 09:00:00
bis 18:00:00
Money-Manag. Fester Kapitalanteil
Anteil 100%
Delta 50000 €
Max. Kontrakte 1
***** Optimierungs-Report *****
Kein Optimierungsergebnis vorhanden
***** Aktualisierungs-Einstellungen *****
Aktualisierung alle 1 Sekunden
Laufende Signale in unvollendeten Perioden
Vielen Dank für Deine Mühen und Grüsse,
Heinrich

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

12

Donnerstag, 22. Dezember 2011, 02:11

Hallo Heinrich

* Dein Setup kannst Du ja mit Komp(# Ref( <deine Regeln>, -1)#,#60#) auf 60 Minuten hochsetzen

Ich empfehle, Ref(,-1) wie im Muster meines Postings zu verwenden, siehe Doku zu Komp()

Zitat

Achtung: Beachten Sie, dass bei der Synchronisation von größeren Perioden in einen kleineren Periodenzusammenhang (also zum Beispiel von täglichen Berechnungen im Intraday-Zusammenhang), die High-, Low- und Closekurse der größeren Perioden „vorausblicken". ...

Ohne den Indi Mane() zu kennen, vermute ich doch, es sollte ungefähr so aussehen:
Global Calc IndiMane: Komp(#Ref(Mane(50),-1)#, #60#);
Global Calc StopLimit: Ref( IndiMane - open, -1);
Gruss
Bernd

hsc

unregistriert

13

Mittwoch, 28. Dezember 2011, 09:08

Hallo Bernd,
vielen Dank für Deine Antwort.
Es funktioniert nun!!

Allerdings den Einstieg nur zur vollen Stunde habe ich nicht anders hinbekommen als in der Enter-Regel als zusätzliche Bedingung "DatePart(n) = 0" aufzunehmen. Gibt es da nicht eine elegantere Möglichkeit, z.B. eine Einstellung in Investox? Es wird halt nur ein bisschen unhandlich, wenn man auf anderen Kompimierungen testet.
Noch ein weiterer Punkt, der mich bei meiner Arbeitsweise nervt. Da ich ja mit einer Komprimierung (z.B. 60 Minuten) Indikatoren entwickle für den Einstieg, der Ausstieg aber mit der Basiskomprimierung (z.B. 5 Minuten) passiert, muss ich mit zwei Projekten in Investox arbeiten, um das Wesentliche in Charts zu sehen. Das eine eben für das Handelssystem, das andere für die Indikatoren. Gibt es da nicht irgendeine bessere Möglichkeit in Investox?
Ich verspreche auch hoch und heilig, dass das zu diesem Thema die letzten beiden Fragen waren
Vielen Dank und Grüsse Heinrich

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

14

Mittwoch, 28. Dezember 2011, 09:53

Hallo Heinrich

Du könntest Dir den Stundenwechsel so definieren und dann die Variable Stundenwechsel später in der Signalgenerierung heranziehen:
global calc Stundenwechsel: Abschnitt(h, 1, k, m);

Deine Indikatoren hast Du vermutlich schon mit sowas wie
global calc meinIndi: Komp(#Ref(..., -1)#,#60#);

auf die 60 Miniuten hochkomprimiert. Im Chart kannst Du nun einfach meinIndi als Formel aufnehmen, und bei Definitionen den Haken bei "Verwenden" setzen. Das generiert Dir die Formel
#_loadDefs#
meinIndi

... und nun wird Dir der 60-Minuten Indikator meinIndi aus den Definitionen des Handelssystems im 5-Minuten Chart angezeigt, da brauchst Du kein anderes Projekt für.
Gruss
Bernd

hsc

unregistriert

15

Mittwoch, 28. Dezember 2011, 13:47

Hallo Bernd,
ja der Abschnittswechsel ist das was ich gesucht habe.
Bez. Indikatoren anderer Komprimierungen im gleichen Projekt ist Dein Vorschlag nur die halbe Miete, da ich ja den Indikator gerne in einem Chart mit der Stunden-Komprimierung sehen würde, obwohl die Basiskomprimierung im Projekt 5 Minuten ist. Nur in diesem Chart sehe ich, ob der Indikator richtig arbeitet.
Grüsse,
Heinrich

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

16

Mittwoch, 28. Dezember 2011, 14:06

Nur in diesem Chart sehe ich, ob der Indikator richtig arbeitet.

Quark mit Sosse.

Wie habe ich dann bloss die ganzen Jahre erfolgreich entwickelt? 8| Schau nochmal genau hin; wenn Du richtig gechartet hast, wird im 5er Chart zu sehen sein, wie der 60er Indi arbeitet.
Gruss
Bernd