Thorsten Kitzig schrieb:Viele Wege führen nach Rom .......
Ihre Frage ist nicht ganz eindeutig. Meinen Sie einen gesetzten Stopp-Kurs oder eine Überwachungslinie im Chart?
Wenn Sie die Überwachungslinie meinen, müssen sie folgenden Filter erstellen.
1. Filter Neu
2. Filterelement Formel
3. Parameter: Anzahl auf 1 und Typ auf Float. Default-Wert auf 3. Label kann beliebig gesetzt werden. Z.B. :"% Abstand"
4. Folgendes Script einfügen
Code:// ChartLinien, linear und logarithmisch
wTestLinie: Array;
bErgebnis : Boolean := FALSE;
// Aktuelles Symbol und TrendLinie 1
dStart := Stamm.TrendLinieStartDatum(CurrentSymbol,1);
fStart := Stamm.TrendLinieStartKurs(CurrentSymbol,1);
dEnde := Stamm.TrendLinieEndeDatum(CurrentSymbol,1);
fEnde := Stamm.TrendLinieEndeKurs(CurrentSymbol,1);
iStart := IndexOfDateTime (Close, dStart, 0);
iEnde := IndexOfDateTime (Close, dEnde, 0);
wCnt := Cum(1);
iDelta := iEnde - iStart;
fDelta := fEnde - fStart;
fSteigung := fDelta / iDelta;
wTestLinie := If (wCnt >= iEnde, fStart + (wCnt - iStart) * fSteigung, Leer);
LetzterLinienWert := wTestLinie[wTestLinie.Count()];
if LetzterLinienWert <> Leer then
Begin
ProzentAbstand := (1 - (LetzterLinienWert / Close[Close.Count()]))*100;
if (ProzentAbstand > Para1)
then bErgebnis := TRUE;
End
Result := bErgebnis;
Dieser Filter findet alle Wertpapiere deren 1. Überwachungslinie mindestens X% unter dem letzten Kurs der Kursreihe liegt. Der Wert für X kann über "Einstellen" im Filter-Dialog geändert werden.
Sollte der Stopp-Kurs gemeint sein, hilft folgendes Script
Code:
bErgebnis : Boolean := FALSE;
LetzterLinienWert := Stamm.StopKurs();
if Stamm.StopKurs() <> Leer then
Begin
ProzentAbstand := (1 - (Stamm.StopKurs() / Close[Close.Count()]))*100;
if (ProzentAbstand > Para1)
then bErgebnis := TRUE;
End
Result := bErgebnis;
Hallo Herr Kitzig!
Sie haben natürlich vollkommen recht, meine Frage war etwas unglücklich formuliert, umso schöner dass Sie Überwachungslinie und Stopkurslinie verformelt haben. Vielen Dank
Ich hoffe es ist ok wenn mir auf dem "Weg nach Rom" noch ein paar Fragen eingefallen sind
1. Ist es lediglich nötig beim Eintrag CurrentSymbol in den vier Zeilen auf "2" und bei "wCnt := Cum(1);" ebenfalls aus der 1 eine "2" zu machen um das ganze für die Überwachungslinie 2 zu berechnen?
2. wie kann man einen weiteren Filter so verformeln, das er alle Wertpapiere filtert deren 1. Überwachungslinie maximal X% ÜBER dem letzten Kurs der Kursreihe liegt. Ich habe mich selbst dran versucht, auch Ergebnisse gefunden, allerdings findet der Filter nicht alle Werte als Beispiel aus dem Dax die da zu gehören. Gibt's hier ne Lösung Ihrerseits?
Hier mal das von mir dahin gehend veränderte Script:
wTestLinie: Array;
bErgebnis : Boolean := FALSE;
// Aktuelles Symbol und TrendLinie 1
dStart := Stamm.TrendLinieStartDatum(CurrentSymbol,1);
fStart := Stamm.TrendLinieStartKurs(CurrentSymbol,1);
dEnde := Stamm.TrendLinieEndeDatum(CurrentSymbol,1);
fEnde := Stamm.TrendLinieEndeKurs(CurrentSymbol,1);
iStart := IndexOfDateTime (Close, dStart, 0);
iEnde := IndexOfDateTime (Close, dEnde, 0);
wCnt := Cum(1);
iDelta := iEnde - iStart;
fDelta := fEnde - fStart;
fSteigung := fDelta / iDelta;
wTestLinie := If (wCnt >= iEnde, fStart + (wCnt - iStart) * fSteigung, Leer);
LetzterLinienWert := wTestLinie[wTestLinie.Count()];
if LetzterLinienWert <> Leer then
Begin
ProzentAbstand := ((LetzterLinienWert / Close[Close.Count()]))*100-100;
if (ProzentAbstand > Para1)
then bErgebnis := TRUE;
End
Result := bErgebnis;
3. Ist es möglich für den Kurs der Überwachungslinien 1-3 ihre Formel für eine Liste im Listenmodul umzubauen? Mit folgender Formel für die Überwachungslinie bei einer Liste bekomme ich natürlich ein Ergebnis: "Result := Stamm.TrendLinieEndeKurs(CurrentSymbol,1);"
Allerdings bezieht sich das ja nur auf den letzten Kurs der Überwachungslinie. Solle somit die Überwachungslinie steigen oder fallen (nicht waagerecht sein) ist das nicht eine wirkliche Lösung richtig?
Können Sie auch hier behilflich sein?
Mit freundlichen Grüßen
Dietmar Schäfer