Dienstag, 16. April 2024, 13:26 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

winkel

unregistriert

41

Donnerstag, 27. Juli 2006, 11:22

Zitat

Beide Vorgehensweisen sind vollkommen richtig und möglich – nur solltest Du Dich an dieser Stelle für eine der beiden entscheiden.
ja das hat mich nämlich verwirrt, ich würde Snoopys Ansatz nehmen wollen.

Torsten

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

42

Donnerstag, 27. Juli 2006, 12:00

OK - dann teste mal folgende Verifikation:



***** Regeln ******

Enter Long:
Cross(high, (trigger_long ), 1) = 1

Enter Short:
Cross(low, (trigger_short), 1) = -1

Übergreifende Definitionen:
{Festlegung der Zeitfenster}
calc Bed1: Zwischen(DatePart(h),8,10);
calc Bed2: Zwischen(DatePart(h),11,13);
calc Bed3: Zwischen(DatePart(h),14,23);
{long}
calc Abfrage1:Komp(#Ref(ValueWhen(high,DatePart(h)=7,1,V),-1)#,#60#)+0.001;
calc Abfrage2:Komp(#Ref(ValueWhen(high,DatePart(h)=10,1,V),-1)#,#60#)+0.001;
calc Abfrage3:Komp(#Ref(ValueWhen(high,DatePart(h)=13,1,V),-1)#,#60#)+0.001;
global calc trigger_long:If(bed3=1,Abfrage3,(If(bed2=1,Abfrage2,If(bed1=1,Abfrage1,Abfrage1))));

{short}
calc Abfrage4:Komp(#Ref(ValueWhen(high,DatePart(h)=7,1,V),-1)#,#60#)-0.001;
calc Abfrage5:Komp(#Ref(ValueWhen(high,DatePart(h)=10,1,V),-1)#,#60#)-0.001;
calc Abfrage6:Komp(#Ref(ValueWhen(high,DatePart(h)=13,1,V),-1)#,#60#)-0.001;
global calc trigger_short:If(bed3=1,Abfrage6,(If(bed2=1,Abfrage5,If(bed1=1,Abfrage4,Abfrage4))));


***** Test-Einstellungen *****

Positionen: Long+Short
Enter-Basis: MAX(open,trigger_long)
Short: MIN(open,trigger_short)
Delay: 0
Exit-Basis: MIN(open,trigger_short)
Short: MAX(open,trigger_long)
Delay: 0
Viele Grüße von Anke

http://www.ascunia.de

winkel

unregistriert

43

Donnerstag, 27. Juli 2006, 14:00

Anke,

hatte noch eine Fehlermeldung bekommen:
Indikator IF, Abfrage1 unverständlicher Parameter

global calc trigger_long:;If(bed3=1,Abfrage3,(If(bed2=1,Abfrage2,If(bed1=1,Abfrage1,Abfr
age1))));

ich hab´s mal mit Snoopy´s Formel verglichen, der Fehler ist weg wenn ich
hinter dem Doppelpunkt das Semikolon setze, aber im Vergleich zu Snoopy
fehlen noch die Klammern vor der IF Anweisung, ist das korrekt oder kann ich die Klammern vor dem dem IF einfach weglassen?
Ich frage mich nur warum der Fehler nicht auch bei der Abfrage des Shorttriggers auftaucht, dort fehlt ja auch das Semikolon und die Klammern?


Torsten

winkel

unregistriert

44

Donnerstag, 27. Juli 2006, 15:44

muss mich korrigieren wenn ich das System starte kommt die Fehlermeldung:


nach dem ich die Klammern in der Definition der Longtriggerabfrage nach Snoopy gesetzt habe.

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

45

Donnerstag, 27. Juli 2006, 16:38

Torsten,

die Formel die ich gepostet habe, ist korrekt.
Ich kann mir nur folgenden Grund für die Fehlermeldung vorstellen:

Du hast

..... Abfr
age1))));

geschrieben, wobei der Part:

age1))));

in einer neuen Zeile steht - so wie in meinem Posting hier im Forum (möglicherweise noch durch Zeilenumbruch getrennt).

Es muss aber lauten

..... Abfrage1))));


Die Formatierung hier ist nur ein Copy-Paste Problem bei der Übertragung der Systembeschreibung hier ins Forum gewesen.
Dabei wurde im Posting hier ein Zeilenumbruch gesetzt, der im ürsprünglichen Code so nicht enthalten ist (...Zeile war wohl zu lang).

Weil Deine Codezeile:

global calc trigger_long:If(bed3=1,Abfrage3,(If(bed2=1,Abfrage2,If(bed1=1,Abfrage1,Abfr

nicht mit Semikolon abschließt, erscheint die Fehlermeldung.

Das Semikolon hinter dem Doppelpunkt ist falsch und hat dort nichts zu suchen !

If-Bedingungen müssen auch nicht komplett eingeklammert werden. Es hat aber keine Auswirkungen auf die Berechnung, wenn man es macht.
Teste es eben einfach mal, setze einmal die gesamte If-Bedingung in Klammern (wie Snoopy) und einmal nicht und checke dann ob es Unterschiede gibt.
Viele Grüße von Anke

http://www.ascunia.de

winkel

unregistriert

46

Freitag, 28. Juli 2006, 10:59

Hallo Anke,


Zitat

Die Formatierung hier ist nur ein Copy-Paste Problem bei der Übertragung der Systembeschreibung hier ins Forum gewesen.

auf sowas wäre ich nicht gekommen, da hat der Fehlerteufel wieder mal voll zugeschlagen.

Das System bringt nun keine Fehler mehr.
Ich habe mal die Triggerlevel im Chart eingefügt.
Mir ist aufgefallen das die Level, verkehrt angezeigt werden,
da diese Formel ja für den Entry des Systemes benutzt wird,
bekomme ich folglich verkehrte Einstiege, und zwar Long&Short.
Nun bin ich wieder ratlos, die Formel scheint soweit plausibel aber
liegt hier der Fehler?
Müsste ich womöglich für den Shorttrigger high durch low ersetzen?

Anm. die rote und grüne durchgezogene Linie ist der berechnete Trigger vom System, die Punkt-Strich Linie wäre der richtige Trigger, Punktlinie das
High und Low der 7Uhr Kerze, ich hoffe man kann alles erkennen.

Torsten




Longtrigger:


Shorttrigger:

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »winkel« (28. Juli 2006, 11:09)


Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

47

Freitag, 28. Juli 2006, 11:55

Hallo Torsten,

Zitat

Müsste ich womöglich für den Shorttrigger high durch low ersetzen?


Ja, wenn der Shorttrigger auf low-0.001 liegen soll müssten die Formeln lauten:

calc Abfrage4:Komp(#Ref(ValueWhen(low,DatePart(h)=7,1,V),-1)#,#60#)-0.001;
calc Abfrage5:Komp(#Ref(ValueWhen(low,DatePart(h)=10,1,V),-1)#,#60#)-0.001;
calc Abfrage6:Komp(#Ref(ValueWhen(low,DatePart(h)=13,1,V),-1)#,#60#)-0.001;

=)
Viele Grüße von Anke

http://www.ascunia.de

winkel

unregistriert

48

Samstag, 29. Juli 2006, 16:21

Hallo Anke,Snoopy und Neurofx


gestern wollte ich noch über nicht korrekt angezeigte Trigger
posten, heute starte ich das System und stelle fest, das die berechneten
Trigger genau stimmen.
Offensichtlich war hier die Skalierung das Problem, Snoopy hatte
schon einmal auf diese mögliche Fehlerquelle (Indi mit Y-Skala mischen) erwähnt.

Das System macht nun endlich was es soll. :-)
Die Performance ist natürlich nicht akzeptabel, aber ich bin erstmal froh
den Ansatz mit der Hilfe aus dem Forum umgesetzt zu haben, nämlich das Gerüst.

Und nun geht´s an das Feintuning dazu folgende Fragen:

-Wenn ich ich auschließlich den Exit über Intraday- bzw. Sofortstops umsetze, kann ich doch die Exitregeln:
long: MIN(open,trigger_short)
Short: MAX(open,trigger_long)
offen lassen, oder?

-Ist die Enterbasis long: MAX(open,trigger_long)
short: MIN(open,trigger_short)
gleichzusetzen mit Entry at Market?
Ich will nur sicher gehen dass das System hier nicht im Backtest mit Limit Entry rechnet, denn in der Realität würde ich bei erreichen
des Levels Market ordern (nur Forex).

-Könnte ich, um nicht jedes mal alle Werte (10Pips) ändern zu müssen, hier vielleicht mit global const einen
festen Wert zum Beispiel LLevel und SLevel definieren?

Dann müsste doch unter Definitionen stehen:

{long}
calc Abfrage1:Komp(#Ref(ValueWhen(high,DatePart(h)=7,1,V),-1)#,#60#)+LLevel;
calc Abfrage2:Komp(#Ref(ValueWhen(high,DatePart(h)=10,1,V),-1)#,#60#)+LLevel;
calc Abfrage3:Komp(#Ref(ValueWhen(high,DatePart(h)=13,1,V),-1)#,#60#)+LLevel;
global calc trigger_long:If(bed3=1,Abfrage3,(If(bed2=1,Abfrage2,If(bed1=1,Abfrage1,Abfrage1))));

{short}
calc Abfrage4:Komp(#Ref(ValueWhen(high,DatePart(h)=7,1,V),-1)#,#60#)-SLevel;
calc Abfrage5:Komp(#Ref(ValueWhen(high,DatePart(h)=10,1,V),-1)#,#60#)-SLevel;
calc Abfrage6:Komp(#Ref(ValueWhen(high,DatePart(h)=13,1,V),-1)#,#60#)-SLevel;
global calc trigger_short:If(bed3=1,Abfrage6,(If(bed2=1,Abfrage5,If(bed1=1,Abfrage4,Abfrage4))));

global const LLevel:0,001 {hier den Wert zum ändern des Longtriggers angeben}
global const SLevel:0,001 {hier den Wert zum ändern des Shorttriggers angeben}


-Kann ich den veränderten LLevel und SLevel automatisch im Chart anzeigen lassen?
Bisher ändere ich die Triggerschwelle jedesmal manuell im Indikatormenü.


Grüße

Torsten

Snoopy

unregistriert

49

Sonntag, 30. Juli 2006, 18:30

Hallo Torsten,
für den Anfang ist das System auch eigentlich zu schwer, aber durch die unermüdliche Geduld von Anke. ;)
Jetzt zu den Punkten. Ich hab da mal was vorbereitet.

Zitat

-Wenn ich ich auschließlich den Exit über Intraday- bzw. Sofortstops umsetze, kann ich doch die Exitregeln:
long: MIN(open,trigger_short)
Short: MAX(open,trigger_long)
offen lassen, oder?


Nein, wenn der Stop weiter entfernt liegt als der gegensätzliche Trigger kann die Position durch ein Gegensignal beendet werden, also Exit Signal.
Den Sofortstop wollten wir ja nicht verwenden, wegen Enter Basis Open und Delay 1.

Zitat

-Könnte ich, um nicht jedes mal alle Werte (10Pips) ändern zu müssen, hier vielleicht mit global const einen
festen Wert zum Beispiel LLevel und SLevel definieren?


Das kannst du so machen. Als nächstes Feintuning lege für den LLEVEL und SLEVEL eine Optimierungsvariable für die 10 Pips an. Damit kannst du den besten Long- und Shorttrigger finden.

Zitat

-Kann ich den veränderten LLevel und SLevel automatisch im Chart anzeigen lassen?
Bisher ändere ich die Triggerschwelle jedesmal manuell im Indikatormenü.


Die Differenz vom LLEVEL/SLEVEL braucht nicht im Chart angezeigt werden.
Die Trigger ändern sich automatisch bei Änderung des LLEVEL im Chart, wenn du folgendes durchführst:
Rechte Maustaste
Formel einfügen
Taste F3 (Schlüsselwort zufügen)
Schlüsselwort LoadGlobal anklicken
In der Liste unten die Variable Trigger_Long und alle anderen Variablen die zu der Berechnung des Trigger_Long erforderlich sind auswählen.
Den Befehl Trigger_Long eingeben
Mit OK das Fenster schließen.

Gruß Snoopy