An das Marketmaker Team,
in 08/2010 wurde von Lenz+Partner das Upgrade von 4.0 auf 4.2 durchgeführt, deren Neuerungen großmundig als Highlights angekündigt wurden.
Zu dem Thema neue Indikatoren, insbesondere zu der unflexiblen Programmierung der Goerke Makros, habe ich mich vor einiger Zeit in einer Mail an Lenz+Partner schon einmal ausführlich kritisch ausgelassen.
Inzwischen habe ich mir einmal flüchtig die von Ihnen bereitgestellten Handelssysteme auf die Standardindikatoren (nicht Candlestick Formationen) angesehen. Dabei werfen sich bei mir 2 Fragen auf:
1) Welche Qualifikation haben die Ersteller dieser Formeln?
und
2) Führt Lenz+Partner vor der Freigabe dieser Lieferanteile eine Qualitätskontrolle aus?
An Hand von 2 Beispielen aus den von Ihnen gelieferten Auswertungen / Handelssystemen möchte ich aufzeigen, warum sich diese Fragen jedem der sich mit MM-Talk beschäftigt, aufdrängen.
1.) Handelssystem AD-LinieHier die ersten 3 Zeilen aus der Formel:
$wp:=Wp[];
$c:=$wp.close;
$adline:=$wp.AdvanceDeclineLine[$Zeitraum; $Startdatum];
a) Die in Zeile 2 berechnete Variable $c wird für den weiteren Verlauf des Handelssystems überhaupt nicht benötigt und taucht nach deren Berechnung überhaupt nicht mehr in der Formel auf. Sie kostet nur Rechnerzeit und Zugriffszeit auf die Platte und kann ersatzlos gestrichen werden.
2.) Handelssystem Aroon(14)Dort sind mir mehrere Fehler aufgefallen, die so nicht passieren dürfen.
a) Wenn Sie sich den Signalchart des Handelssystems und dort das Fenster des Aroons ansehen, wird Ihnen sicherlich auffallen, dass der dort dargestellte Aroon nur den Wertebereich zwischen 7 und 100 einnimmt. Der Wertebereich des Aroon ist jedoch von 0 bis 100.
Den Fehler in Ihrer Programmierung des Handelssystems aufzuzeigen ist unnötig, da ich Ihnen am Ende ein einfacheres und im Intervall des Aroon variable Variante dieses Handelssystems zeigen werde.
b) Der Aroon arbeitet, so ist es in Ihrer Definition für diesen Indikator festgelegt, mit High und Low Kursen und nicht mit dem Close Kurs für das Periodenmaximum und -minimum, wie Sie es im Handelssystem programmieren.
c) Es gibt keinen vernünftigen Grund den Aroonup und Aroondown in der von von Ihnen dargestellten Weise aus den Close Kursen zu berechnen, wenn der vorhandene Indikator Aroon diese beiden Zeitreihen schon liefert, und dabei auch noch variabel im Zeitintervall ist und dann auch noch das korrekte Intervall von 0 bis 100 anzeigt.
Damit ist auch die von Ihnen gemachte Aussage im Kommentar des Handelssystems -
"{Der Indikator Aroon 14 als Handelssystem (Zeitraum ist mit MMTalk nicht variabel - geht leider z. Z. noch nicht anders)}"
- ad absurdum geführt.
Hier nun das versprochene einfachere Handelssystem mit variablem Aroon Intervall.
Code:$Aroon:=close.Aroon[$AroonZeitraum]; {Den Indikator Aroon berechnen}
{Die beiden Linien des Aroon auf 2 Variablen separieren}
$aroonup:=.Aroon.lineget[0];
$aroondown:=.Aroon.lineget[1];
{Der Rest ist wie in Ihrem Handelssystem}
$aroon:=$aroonup.linesmulti[$aroondown];
$linien:=$aroon.hl[$Level_unten;$Level_oben];
$long:=$aroonup>$aroondown
and
$aroonup>$Level_oben;
$short:=_;
$closelong:=$aroondown>$aroonup
and
$aroondown>$Level_oben;
$closeshort:=_;
$signalmodus:=2;
HandelsSystem[
$Linien;
$Long;
$Short;
$CloseLong;
$CloseShort;
$SignalModus;
$Leerverkäufe_einbeziehen;
$Spesen;
$Losslimit]
Was der Verfasser wohl in seinem Kommentar in den ersten beiden Zeilen verdeutlichen will, ist, dass er in MM-Talk keine Schleifen programmieren kann, und er deshalb eine feste Anzahl von If-Abfragen (entspricht der Intervallgröße) in seiner Berechnung für die beiden Zeitreihen des Aroon benutzt.
Und genau das zeigt die mangelnde Kenntnis in MM-Talk, die ich von einem Mitarbeiter des Systemhauses nicht erwartet hätte.
In vielen Programmiersprachen wird die Schleifenkonstruktion/Kontrollstruktur
For Zähler = Start to End Step n
bei der der Startwert, die Schrittweite und der Endwert, bzw. die die Anzahl der Durchläufe bekannt sein müssen, statt der von MarketMaker im Handelssystem verschachtelten If-Konstruktion verwendet.
Und genau diese Kontrollstruktur lässt sich auch in MM-Talk mit Listenfunktionen realisieren. Hier die entsprechende Formel eines Makros, das aufzeigt, dass ein variabler Zeitraum, bei dem von Lenz+Partner vorgeschlagenen Berechnungsweg, doch in MM-Talk zu realisieren ist.
Code:{Dieses Makro berechnet in Abhängigkeit von $Periodenmaximum den Aroonup
oder den Aroondown.
Das Makro wird folgendermaßen aufgerufen:
Aroonup:=$Close.Makroname[$Aroonzeitraum];"Ja"]; bzw.
Aroondown:=$Close.Makroname[$Aroonzeitraum];"Nein"];
Dabei ist $Aroonzeitraum im Makro als Zahl und $Periodenmaximum als Boolean
zu definieren
-------------------------------------------------------------------------}
$Close:=object; {Eingabezeitreihe retten}
{Auswahl ob das PeriodenMaximum oder -minimum berechnet werden soll.}
$P_MinMax:=if($Periodenmaximum="Ja";
$Close.periodenmaximum[$Aroonzeitraum];
$Close.periodenminimum[$Aroonzeitraum]);
{Aroon Intervallwert nicht gerundet.
Wird der Wert in der Klammer auf $Aroonzeitraum-1 gesetzt, dann ist der Wertebereich des Aroon von 0 bis 100.}
$Ar_IntWert:=100.div[$Aroonzeitraum{-1}];
{Hilfsliste von 0 bis $Aroonzeitraum-1}
$HL:=($Aroonzeitraum).makelist;
{über alle Werte der Eingangszeitreihe}
#[]($PM:=object; {Wert des jeweiligen Perioden Min/Max}
$Dat:=$PM.datum; {Datum des jeweiligen Perioden Min/Max}
$HL1:=#[](if($Close.at[$Dat.addworkingdays[-object]]=$PM;
100.minus[$Ar_IntWert*object].roundn[0];
0)
).map[$HL];
$Wert:=NA;
$HL2:=#[]($Wert:=if(object>$Wert;object;$Wert);
$Wert
).map[$HL1];
$HL2.nth[$Aroonzeitraum-1]
).mapz[_;_;_;$P_MinMax]
Ich frage mich, wie ein Anwender die Programmierung von eigenen Indikatoren und Auswertungen in MM-Talk lernen soll, wenn die Beispiele von Marketmaker solche Fehler und falsche Aussagen enthalten, und diese somit nur begrenzt als Anschauungsbeispiele herhalten können. Auch der Part MM-Talk in der Benutzerdokumentation ist oft nicht sehr hilfreich, da die Beschreibungen der Funktionen sehr kurz und deshalb oft unverständlich sind und aussagefähige Beispiele fehlen.
Dies ist eigentlich sehr schade, da MarketMaker mit MM-Talk ein sehr mächtiges Werkzeug zur Analyse von Wertpapieren ist. Natürlich ist auch MarketMaker und MM-Talk noch verbesserungsfähig (z.B. Schnittstelle zu Online-Brokern, die Möglichkeit Price Level Profile (auch aus einem Makro heraus) darstellen zu können, oder die Möglichkeit Funktionalitäten aus anderen Applikationen zu nutzen).
Ich hoffe dass Lenz+Partner diese Kritik zum Anlass nimmt, künftig auch ein besseres Augenmerk auf die Qualität der mitgelieferten Beispiele zu haben, und auch die Benutzerdokumentation auf einen Stand zu bringen (Vollständigkeit und Verständlichkeit), so dass sie dem Nutzer auch hilfreich ist.
Trotz der obigen Kritik wünsche ich dem Lenz+Partner Team ein frohes Fest, ein paar besinnliche und erholsame Tage und einen guten Start ins Neue Jahr.
Mit freundlichen Grüßen