Donnerstag, 18. April 2024, 08:31 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.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Mittwoch, 23. September 2009, 11:24

nur den Wert des ersten TagesEnterLongs merken

Hallo,

ich verwende diese Berechnung:

Zitat


...
Calc periodenZählerTäglich: Abschnitt(p, 1, y, l); //zählt täglich von 1, 2 bis n , d.h. die Tagesperioden hoch
Calc halteEntryOpenwert: Schalter(0, periodenZählerTäglich=1, 0, Ref(enterLong, -1)=0 AND enterLong=1, Open);


Ich möchte nur den Open-Wert halten, wenn das erste Mal am Tag die 0-1-Flanke von enterLong auftritt (nur ein Trade pro Tag erlaubt). Aber leider treten mehrere 0-1-enterLong -Flanke auf, d.h. der Wert halteEntryOpenwert ändert sich ungewollt.

Wie kann man erreichen, dass wirklich nur die 1. 0-1-enterLong -Flanke des Tages genommen wird und nur dieser Openwert gehalten wird?

Danke.

Viele Grüße
Torsten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

2

Mittwoch, 23. September 2009, 11:52

PS:
Meine erste Überlegung war, das am Tagesanfang der Wert halteEntryOpenwert immer =0 gesetzt wird und nur dann darf der Wert verändert werden. Kommt also die 2. 0-1-Flanke daher, dann ist halteEntryOpenwert<>0 und dann muss eine neue Zuordnung unterbunden werden, z.B. so:

Zitat

if(halteEntryOpenwert=0, Open, halteEntryOpenwert)


Jetzt die if-Anweisung in den Gesamtausdruck eingebaut:

Zitat

...
Calc periodenZählerTäglich: Abschnitt(p, 1, y, l); //zählt täglich von 1, 2 bis n , d.h. die Tagesperioden hoch
Calc halteEntryOpenwert: Schalter(0, periodenZählerTäglich=1, 0, Ref(enterLong, -1)=0 AND enterLong=1, if(halteEntryOpenwert=0, Open, halteEntryOpenwert));


Leider kommt dann die Fehlermeldung:

Zitat

Parameter: halteEntryOpenwert
Meldung: Unverständlicher Parameter: Datenreihe oder Unterberechnung erwartet

Was eigentlich nicht wirklich verwundert, weil ich den Wert halteEntryOpenwert den ich berechnen möchte, gleichzeitig verwende für die Berechnung.

Irgendwie habe ich das Gefühl, dass ich mich verrannt habe. Das geht bestimmt ganz einfach ...

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Mittwoch, 23. September 2009, 13:32

Hab die Lösung gefunden:

Calc newHandelstag: ROC(DatePart(y),1,$) <> 0; //=1(true) in 1.PeriodeDesTages, sonst =0
Calc tradeCounter: CumSince(enterLong, newHandelstag, 0); //tagesInit=0, nach 1.Trade=1, 2, usw.
tradeCounter=1 AND Ref(enterLong, -1)=0 AND enterLong=1 ... in halteCalc einsetzen

Viele Grüße
Torsten