|
Gruppen: Kunde
Beiträge: 75
|
Hallo,
Ich handele primär langfristig trendfolgend, daher ist der EMA200 für mich von grosser Bedeutung. In diesem Kontext habe ich eine Handelsstrategie auf der Basis des Abstands vom EMA200 definiert. Diesen Abstand ermittele ich prozentual. Vor diesem Hintergrund möchte ich gerne wissen, wie hoch der maximale Abstand des Schlusskurses vom EMA200 jemals gewesen ist. Positive und negative Abweichungen differenziere ich nicht, ich gehe long oder short. Aber die maximale historische Bewegung des Titels gegenüber dem EMA 200 interessiert mich.
Dies ist im Chart einfach grafisch darzustellen, ich möchte die Daten aber auch gerne in einer Liste haben. Die max. Abweichung ermittele ich über folgende Formel:
Array1 := abs((close-mov(c,200,e))*100/mov(c,200,e)); result1 := Highest(Array1);
Ich habe das Array mit Absicht definiert. Preisfrage: wie bekomme ich das Datum der maximalen Abweichung in meine Liste? Oder geht es auch einfacher als in meiner Formel? Das Array sollte mit den Schlusskursen und den EMA200-Werten ein Kursarray sein und dies führt ja auch das Datum, oder? Jedenfalls funktioniert das Ganze im Chart einwandfrei und im Infofenster wird das Datum natürlich auch angezeigt. Aber wie definiere ich dies als weitere Spalte in meiner Liste?
Mit freundlichen Grüssen aus Bochum
Uwe Michalowski
Mit freundlichen Grüssen
Uwe Michalowski
|
|
Gruppen: Kunde
Beiträge: 371
|
Hallo Uwe,
hast Du schon mal Dein Array1 im Debugger angeschaut. Da findest Du den Aufbau mit Datum. Den maximalen Abstand hast Du gut berechnet. Der Wert ist gut berechnet. Nun liegen Dir also der Maximalwert und das Array1 vor.
Wenn man nun das Datum zum Maximalwert suchen will, kann man das ganz manuell erledigen: Man ruft das Array1 im Dugger auf, beginnt am Dateiende mit dem letzten Kurs und geht dann mit der Bild-Taste bis zum Anfang der Datei. Parallel wird der Maximalwert gesucht.
Das muß man nun nur noch im Programm organisieren. Nun könnte man wie folgt vorgehen:
Man verwendet z.B. eine While - Do - Schleife vom letzten bis zum ersten Index und sucht den Maximalwert. Dabei muß man "Index" für "Index" das Array1 absuchen. Ist der Wert gefunden, liegt automatisch schon der aktuelle Index vor. Das Datum kann man mit der Funktion "DateAt" ermitteln. Dann verwendest Du die Formel einfach der gewünschten Listenspalte.
Grüße
|
|
Gruppen: Kunde
Beiträge: 75
|
Hallo Taxus,
Vielen Dank für die schnelle Antwort. Zwischenzeitlich bin ich zu der gleichen Lösung wie Du gekommen. Die Do-While-Schleife habe ich durch die "FINDNEXT"-Anweisunng ersetzt, dies erspart ein paar Codezeilen. Ich werde künftig etwas intensiv er nachdenken, bevor ich frage --)
Für alle Interessierten hier mein Formeltext:
Array1 := abs((close-mov(c,200,e))*100/mov(c,200,e));// Berechnung Kursarray Highest_Array1 := Highest(Array1); // Findet den Maximalwert im Array1
// Erste 2 Zeilen=Formel für Indikator in Chart
i := FindNext(Array1,0,Highest_Array1); // Findet den Index für Maximalwert Highest_Array1_Date := DateAt(Array1,i); // Findet das Datum zum Index "i" in Array1 result1 := Highest_Array1_Date; // Gibt das Datum als Spalte in der Liste aus
P.S. Ich heisse Uwe -)
Viele Grüsse aus Bochum
Uwe Michalowski
Mit freundlichen Grüssen
Uwe Michalowski
|
|
Gruppen: Kunde
Beiträge: 371
|
Hallo Uwe,
Deine Idee mit FindNext ist gut. Danke. Sorry Uwe, es passiert mir immer wieder. Woran liegt das wohl.
Grüße
|
|
Guest |