Hallo Dirk,
Divergenzen sind ein gutes Hilfsmittel, um mögliche bevorstehende längerfristigere Trendwenden zu erkennen. Aber wie alle technischen Indikatoren und Chartformationen liefern sie alleine keine aussagefähigen Signale und bei Divergenzen kommt noch hinzu, dass sie keine Aussage zum Timing machen.
Dirk ich will dich nicht entmutigen, aber es ist wie Taxus schreibt:
Zitat:Deine Aufgabe muss programmiert werden.
und
Zitat:formuliere Deine Aufgabe zunächst verbal
und ich füge noch hinzu, sehr viel genauer, als Du dies in Deinen Beiträgen getan hast.
Die Unkenntnis der Programmiersprache ist nur das kleinere Problem eine solche Aufgabe nicht lösen zu können. Viele, die dann irgendwann die Programmiersprache beherrschen, werden dann trotzdem die Aufgabe nicht lösen können.
Warum?Das größere Problem, was meistens übersehen wird ist folgendes:
Bevor man überhaupt irgendeine Programmzeile schreibt, ist es unumgänglich eine sehr genaue Definition der Aufgabenstellung und der Analyse des Problems zu erstellen, das man mit einer Programmiersprache nachbilden will, so wie ich es in Ansätzen in meinen folgenden Ausführungen zeigen werde.
Tut man das nicht, erleidet man meistens eine Bauchlandung und bricht irgendwann frustriert sein Projekt / Programm ab.
Ich benutze nicht Tai-Pan und kann Dir deshalb keine Lösung für Tai Pan liefern. Aber ich kann hier allgemeine Gedanken zu diesem Thema beisteuern, die ich bei der Analyse zur Realisierung des Problems in MarketMaker angestellt habe.
In dem von Dir eingestellten Bild hast Du eine Konvergenz von Tiefs (mit Trendlinien unterhalb) dargestellt. Es gibt, nur zur Vollständigkeit, auch Konvergenzen von Hochs (mit Trendlinien oberhalb).
An Deinem Bild kann man sich mehrere Dinge klar machen, um ein solches Programm zu realisieren.
1. Du definierst was eine Trendlinie (Gerade) ist. Z.B. Eine „Trendlinie unterhalb“ ist eine Linie, die auf 2 oder mehr Tiefpunkten (Low oder Close Kursen) aufliegt und bei der alle übrigen Kurswerte oberhalb dieser Linie liegen. Umgekehrt ist es bei einer „Trendlinie oberhalb“.
2. Du legst einen Startzeitpunkt für den Untersuchungszeitraum fest (z.B. letzter aktueller Kurs)
3. Du legst dich entweder auf einen festen zu untersuchenden Zeitraum in Tagen fest, oder auf eine Anzahl von markanten Hoch- / Tiefpunkten fest, aus denen du dann den Zeitraum zwischen heute und dem n-ten Hoch- / Tiefpunkt in der Vergangenheit berechnest (variable Zeitspanne, die abhängig von der Stetigkeit einer Trendbewegung ist).
4. Die von Dir angedachte Vorgehensweise, vom aktuellen Datum in einer Schleife immer weiter in die Vergangenheit zu gehen, und alle Geraden zwischen diesen beiden Punkten zu berechnen, und dann in einem 2 Schritt, für jede dieser Geraden zu prüfen, dass zu allen Datums Werten der korrespondierende Kurswert größer oder gleich dem Wert der Trendlinie zu diesem Zeitpunkt ist, ist in seiner Grundüberlegung richtig. Sie kostet aber sehr viel Rechenzeit für Kurswerte, die nie Auflagepunkt für diese Trendlinie werden können.
Dies lässt sich sehr gut an Deinem Beispiel im Kursverlauf aufzeigen (siehe hochgeladenes Bild).
Wir behalten im Kurschart den Startpunkt für die Trendlinie im März 2009 bei und auch den Tiefpunkt am 24.10.2008. Dann betrachten wir Deinen weiteren mit einem gelben Kreis markierten Tiefpunkt am 21.11.2008. Geht man also vom 21.11.2008 zeitlich zurück zum davorliegenden Tiefpunkt (24.10.2008 ) und macht sich die unter Punkt 1 gemachte Definition einer „Trendlinie unterhalb“ noch einmal klar, so muss man zu dem Ergebnis kommen, dass alle Punkte zwischen den Tiefpunkten zu betrachten, zeitraubender Ballast in Deiner ersten Schleife ist
Als Erkenntnis daraus wählt man nur markante Hoch- / Tiefpunkte, über die ZigZag Funktion für die Berechnung aus, und erhält dadurch wieder akzeptable Berechnungszeiten.
1. Was sind markante Hoch- / Tiefpunkte?
Der Kurs muss vom letzten Hochpunkt um mindestens x% gefallen sein und die nachfolgenden Kurse müssen höher als dieser tiefste Kurs liegen, damit er zu einem Tiefpunkt werden kann.
Ein Tiefpunkt wird er jedoch erst dann, wenn er auch die Bedingung erfüllt, dass er nach diesem Tiefpunkt um mindestens x% wieder gestiegen ist. Diese Funktion leistet, wie Taxus schreibt, die ZigZag Funktion, die es auch in Market Maker gibt und die ich auch bei meiner Realisierung verwendet habe.
2. In Deiner Grafik ist der zeitlich letzte Punkt der Betrachtung nicht der letzte aktuelle Wert. Deshalb kann sich, wenn Du den letzten aktuellen Wert als Startpunkt nimmst, auch die schwarze Trendlinie, wie in meiner Grafik zu sehen, ergeben, je nach dem, als wie viel % Kursrückgang Du ein markantes Tief definierst. Ende März 2009 geht der Kurs von 4260 auf knapp unter 4000 zurück, bevor er wieder steigt. Das sind über 5%, und 5% sind, wenn Du nicht ganz langfristig handelst, und Du solche Kursrückgänge als Einstiegs Chancen nutzt, in meinen Augen ein markantes Tief.
Als Folgerung daraus ergäbe sich, dass Du nicht nur die letzte Trendlinie über die markanten Tiefs berechnen musst, sondern mehrere. Aus meinen Erfahrungen mit meinem Programm kann ich sagen, es reichen die letzten 3, ich habe die letzten 5 berechnet und stelle sie, wenn sie im untersuchten Zeitraum auftreten, auch im Chart dar.
Du siehst bisher haben wir noch keine einzige Programmzeile geschrieben. Aber schon einige Erkenntnisse gewonnen, die Entscheidungen notwendig machen (z.B. fester Zeitraum oder variabler Zeitraum festgelegt z.B. durch die letzten 5 markanten Tiefs, oder wie viel % Kursrückgang erachte ich als markantes Tief). Andere Erkenntnisse werfen weitere Fragen auf und machen weitere Analysen notwendig (z.B. wie berechne ich eine Gerade in einem Chart? Welchen Wert hat die Gerade an einen Datum zu dem ich prüfen muss, ob der Wert des Kurses größer oder kleiner dem Wert der Geraden zu diesem Zeitpunkt ist).
Du siehst es ist noch einiges an weiterer Analyse notwendig, bevor man überhaupt mit der ersten Programmzeile beginnen sollte.
Denn ein Programm arbeitet stupide immer nur die gleiche Befehlsfolge mit den gleichen Parametern ab. Darum musst Du vorher die Randbedingungen für die Aufgabe genau beschreiben und in kleine Unteraufgaben zerlegen, für die Du dann erst die entsprechenden Befehlsfolgen programmierst.
Die Programmierung einer Aufgabe erfolgt nach immer den gleichen Prinzipien:
1. Festlegen der Randbedingungen für die Aufgabe.
2.
Top Down Analyse: Durch Analyse der Aufgabenstellung, sie in immer kleinere Unteraufgaben auflösen, bis alle Unteraufgaben klar definiert sind.
3.
Bottom Up: Programmierung der Unteraufgaben mit Test des Moduls und Test der Übergabeschnittstellen.
4. Gesamttest mit evtl. weiterer Optimierung
Du siehst, die Arbeit bei einer komplexeren Aufgabe, bevor überhaupt nur eine Programmzeile geschrieben ist, ist aufwändig und sollte nicht unterschätzt werden. Sie ist auch notwendig, um später bei dem stupiden umsetzen der verbalen Formulierung in Programmcode nicht den Überblick zu verlieren.
Lass Dich durch die obigen Ausführungen, die aufzeigen wie komplex das von Dir aufgegriffene Thema ist, nicht abschrecken, Dich mit der Programmiersprache zu beschäftigen. Es ist noch kein Meister vom Himmel gefallen. Übe Dich in einfacheren Aufgabenstellungen und versuche kleinere Programme anderer Forenmitglieder nach zu vollziehen und beteilige Dich dabei aktiv am Forum, wenn Du Fragen hast.
Ich wünsche Dir und allen anderen Usern (auch den MarketMaker Usern), die mit der eingebauten Programmiersprache die Möglichkeiten Ihrer Börsen Software erweitern wollen, viel Ausdauer und eine hohe Frustrationsschwelle, wegen der mangelhaften Dokumentation in diesen beiden Produkten.
Wie Du in dem hochgeladenen Bild siehst, verwende ich einige variable Parameter. Diese haben folgende Bedeutung:
Schwelle:
Darin wird der Prozentwert für den ZigZag festgelegt, der zu markanten Tiefs führt. Den ZigZag siehst Du auch im Kurschart als schwarze Linie mit dargestellt.
Anzahl Tage opt:
Mit dieser Einstellung gebe ich an, um wie viel Tage ich ab dem aktuellsten Kursdatum rückwärts schaue, um nach Trendlinien unterhalb, bzw. oberhalb zu schauen.
MinAbstand opt:
Der dort eingegebene Wert gibt an, wie viele Tage zwischen 2 aufeinanderliegenden Tiefs mindestens liegen müssen, damit ein Tief zu dem vorhergehenden als Tief akzeptiert wird. Setzt man diesen Wert auf 1, so wird bei sehr unruhigen Zeiten mit starken Kurssprüngen, oder bei kleinem ZigZag-Wert ein nachfolgendes Tief als Tief anerkannt wenn zwischen den beiden Tiefs nur 1 Tag dazwischen liegt und dieser Tag ist dann ein Hoch.
Endatum opt:
Wird in diesem Parameter ein Datum eingetragen, dann wird dieses Datum als das Enddatum angesehen ab dem Rückwärts betrachtet nach Trendlinien unterhalb bzw. oberhalb gesucht wird. Ist dieser Parameter leer, so wird automatisch immer das Datum des aktuellsten Kurses verwendet und der Chart zeigt zu jedem Zeitpunkt die aktuellen Trendlinien an.
So das soll es zu der der so oft geäußerten Meinung sein: "Ich kann etwas nicht realisieren, weil ich mich in der Programmiersprache noch nicht oder noch nicht so gut auskenne."
Allen noch erfolgreiches Handeln an der Börse.
Chuck
chuck hat die folgenden Bilder hochgeladen: