Hallo Norbert, Hallo Herr Vohswinkel,
Die Aufgabe ist nach Anregung durch ein Beispiel
aus dem Handbuch zur Filterentwicklung von S. Vohswinkel, Seite 19
und ergänzend TaiPan Formelsprache Referenzhandbuch Seite 39
mit nachfolgendem Programmcode gelöst worden.
TagesBereich:= 10;
// Der Auswertebereich umfaßt 10 Tage
TageVomEnde:= 5;
// Die letzten 5 Tage gehören nicht mehr zum Auswertebereich
// Wenn TageVomEnde = -0, dann einschließlich letzter Tag, wenn = -1, dann bis Vortag
// Wenn TageVomEnde = -2, dann Auswertebereich endet vor 2 Tagen usw.
MaxCKurs := Ref(HHV(C,TagesBereich),-TageVomEnde);
// MaxCKurs wird mit HighestHighValue (HHV) ermittelt und ist der höchste C(lose)Kurs
// innerhalb eines 10 tagelangen Bereiches, der 10+5 = 15 Tage vor dem letzten Kurs beginnt
// und 5 Tage vor dem letzten Kurs endet.
IndexLetzter := Count(C);
// liefert Anzahl der Close-Werte = entsprechend dem Zahlenwert des höchsten Indices'.
AlleDatumswerte := Date();
// Die Arrayvariable AlleDatumswerte wird mit den Datumswerten belegt.
ZielIndex := FindPrev(C,IndexLetzter, LastValue(MaxCKurs));
// FindPrev findet im Array der C(lose)-Werte,
// beginnend beim Wert mit dem ersten Index (Angabe nicht nötig und nicht möglich ?)
// bis zum Wert mit dem letzten Index IndexLetzter
// den letzten? (prevailing = maßgebenden, ausschlaggebenden ?) Index
(= ZielIndex) beim Vergleich
// der C(lose)-Werte mit dem Wert MaxCKurs.
ZielDatum := AlleDatumswerte[ZielIndex];
// Die Variable ZielDatum erhält den Wert des Datums mit dem Zielindex im internen Datumsformat
// Wichtig: Wenn man im obigen Ausdruck runde, statt eckige Klammern schreibt, dauert die Lösung der
// Aufgabe deutlich länger und kostet mehr Nerven.
!
Anzeigedatum := DateToStr(ZielDatum):
// Das Datum wird jetzt in das anzeigenübliche (String-)Format umgewandelt.
Result := Anzeigedatum
// Das Datum wird in lesbarem Format in der Listenspalte angezeigt.
Das vorstehende Programm gibt das gewünschte Datum in der zweiten Spalte aus.
Den gesuchten Max-Wert kann man mit einem Teil des Programms errechnen, der die ersten Zeilen bis MaxCkurs := …
und zusätzlich
Result := MaxCKurs enthält.
Hinweis: Die Fehlerfreiheit des Programm ist noch nicht ausreichend kontrolliert. Bitte melden, wenn Fehler entdeckt werden.
(Ohne die Tipps hätte ich die Lösung nicht gefunden, Danke!!
- gehe jetzt schlafen)
Viele Grüße von Gerd-2