Lesen Sie hier den unab- hängigen Softwaretest von Wave59 aus dem "Trader's Magazin" (Ausg. 04/2006)
Selber programmieren
Egal wieviele Tools eine Chartsoftware mitbringt, es kommt irgendwann immer der Punkt an dem Sie etwas mit der Software tun wollen was noch nicht vorhanden ist. Ob die Anzeige von Charts, die Berechnung eigener Indikatoren, die Erweiterung der Zeichentoolpalette oder die Programmierung spezieller Kundenwünsche.
Jedes Chartprogramm, das nicht die Möglichkeit bietet eigene Indikatoren oder andere Tools zu programmieren ist in Wahrheit eigentlich nichts weiter als ein Spielzeug und kann genauso nicht Ernst genommen werden wie viele der frei erhältlichen Chartingtools im Internet. Sie sind vielleicht ganz nützlich für Teilzeit-Trader, haben aber in den Händen eines ernsthaften Daytraders nichts verloren.
In Anbetracht der Notwendigkeit, eine leistungsfähige und dennoch leicht zu erlernende Programmiersprache dazu zu verwenden, suchten wir nach einer ebensolchen. Sie mußte so schnell sein wie herkömmliche Programmiersprachen und sollte aber dennoch leicht, mit minimalen Hindernissen, für Nicht-Programmierer zu schreiben sein. Und am wichtigsten, sie sollte absolut geeignet sein für die Programmierung von Trading-Tools. Das Resultat war QScript, die Programmiersprache für Trader.
Warum nicht "Visual Basic"
Wenn Ihne die neuesten Chartprogramme vertraut sind haben Sie sicher bemerkt das fast jedes von ihnen Microsoft's "Visual Basic" als Programmiersprache verwendet. Der Grund ist, seit "Viaual Basic" so eine verbreitete und populäre Sparche ist, mit Millionen von Benutzern, ist es die perfekte Sprache zur Programmierung von Indikatoren und Systemen. Dazu gibt es sehr viele Bücher darüber und viele Leute, die einem bei Problemen und mit Tricks helfen können.
Lassen Sie mich eine Frage stellen. Scheren sind ein Werkzeug das vielen Millionen Menschen bekannt ist. Sie können verschiedene Arten von Scheren benutzen, beispielsweise um Ihre Büsche im Garten oder Äste von den Bäumen zu schneiden. Millionen von Leuten benutzen sie, auch wenn sie dann Mühe haben jemanden zu finden der die Schere repariert. Aber wenn Sie den Rasen mähen möchten, würden Sie dann eine Schere benutzen?
Fakt ist, das "VB" nicht entwicklet wurde um Trading-Indikatoren zu programmieren. Sie können "VB" zwar dazu verwenden, aber Sie werden dafür viel Sourcecode benötigen und langsam sein. Sie müssen wahrscheinlich selber Preisdaten suchen, sie in eigene Arrays speichern, selber Variablen deklarieren und Sie brauchen einen speziellen Compiler um Ihre Programme anwendbar zu machen. Am schlechtesten von Allem ist jedoch, das die Sprache nicht für diese Art der Programmierung gemacht wurde und Sie dadurch mehr Seiten Sourcecode schreiben müssen als Sie mit einer anderen Sprache tun müssten.
Anstelle einer weiteren Diskussion über Pro und Contra von VB,C++ oder anderen populären Programmiersprachen zur Erstellung von Indikatoren und Systemen zeige ich Ihnen ein Beispiel und Sie können es selber beurteilen. Lassen Sie uns überprüfen wie man eine Schulter-Kopf-Schulter-Formation finden kann. Jeder Trader hat schon mal danach gesucht, aber es fällt nicht unbedingt in den Bereich dessen wofür moderne Programmiersprachen gemacht wurden.
Kurz zur Erinnerung, eine Schulter-Kopf-Schulter-Formation sieht so aus:
Dieses klassische Muster wird schon seit Jahrzehnten von Tradern benutzt und ist das wohl bekannteste Muster von allen. Die Idee ist, short zu gehen, wenn der Preis nach der zweiten Schulter fällt.
Obwohl es für einen Menschen leicht zu identifizieren ist, dieses Muster ist nicht leicht zu beschreiben für einen Computer. Nehmen wir an jeder Arm des Musters ist nur einen Bar lang (eine sehr einfache Schulter-Kopf-Schulter-Formation!), hier ist der Sourcecode in TradeStation's EasyLanguage:
if c<o and c[1]>o[1] and c[2]<o[2] and c[3]>o[3] and c[4]<o[4] and c[5]>o[5] and lowest(l[1],2)>low[5] and lowest(l[3[,2)>low[5] and highest(h,2)<highest(h[2],2) and highest(h[4],2)>highest(h[2],2) then begin...
Warum benutze ich EasyLanguage hier? Weil es der kürzeste Sourcecode ist im Vergleich zu Visual Basic or C++. Somit benutze ich die beste Programmiersprache die neben QScript verfügbar ist...
Dieser Sourcecode sieht gar nicht so schlecht aus. Auch wenn Sie EasyLanguage nicht kennen, das ist sicherlich nicht zu schrecklich. Natürlich, im wahren Leben interessiert sich niemand für eine Schulter-Kopf-Schulter-Formation mit nur einem Bar Länge! Wenn wir unsere Anforderungen nun etwas erhöhen und nach einem Muster mit 2 bis 5 Bar langen Armen, wird der Sourcecode zum Lbyrinth. Das heisst das es nun 4 unterschiedliche Löngen für jeden Arm gibt. Sechs Abschnitte im Muster entsprechen dann 4x4x4x4x4x4 oder 4096 unterschiedlichen Kombinationen. Wenn Sie sich nun in der Art und Weise wie oben gezeigt der programmiertechnischen Lösung nähern wollen, dann enden Sie mit mehr als 12.000 Zeilen Sourcecode!
Um beim Programmieren nicht verrückt zu werden müssen Sie Schleifen verwenden und die jeweiligen Schleifenzähler als mögliche Bars für Ihr Muster einsetzen. Ohne zu weit einzusteigen, hier eine Möglichkeit dies mit EasyLanguage zu lösen:
Sie müssen nicht unbedingt etwas von Programmierung verstehen um zu sehen das der kleine, schöne Sourcecode von oben nun plötzlich schon viel schlechter aussieht. In der Mitte ist nun auch noch eine Menge an Sourcecode zu schreiben um festzustellen, ob denn überhaupt eine Schulter-Kopf-Schulter-Formation vorliegt. Und was, wenn Sie das größtmögliche Muster im gesamten Zeitraum finden wollen, nicht gerade das erste? Viel Glueck! Der EasyLanguage-Sourcecode dafür wird mindestens 2-3 Seiten sein lang, wenn Sie ihn denn zum laufen bringen. Wenn Sie VB oder C++ verwenden, dann hängen Sie noch 2 Seiten daran.
Ist es das weshalb Sie ins Tradinggeschäft gegangen sind? Um den ganzen Tag lang Computercode zu schreiben? Es ist als ob Sie den Rasen mit der Schere mähen würden!
Würden Sie es glauben, daß sie nur 2 Linien Code brauchen, um die Schulter-Kopf-Schulter-Formation mit QScript zu finden? Mit der Power der regulären Ausdrücke kann QScript sehr schnell und leistungsfähig nach irgendeiner Art Muster suchen. Jeder Abschnitt des Musters kann beliebig viele Bars lang sein. Sie können sogar sagen, das längste oder kürzeste Resultat zu zeigen, das gefunden wurde. Falls Sie neugierig sind, hier ist alles was man dazu braucht:
Hier ist eine von diesem Sourcecode gefundene Schulter-Kopf-Schulter-Formation: (der rote Punkt zeigt das Signal, als das Muster gefunden wurde)
Reguläre Ausdrücke sind leistungsfähige Pattern-Matching-Algorithmen und das Herz und die Seele von Programmiersprachen wie Perl. Normalerweise werden sie benutzt, um in Texten zu suchen, um Telefonnummern und Emailadressen zu finden, aber QScript enthält eine Version, die für das Pattern-Matching in Bar-Charts bestimmt ist. So etwas finden Sie in keiner anderen Programmiersprache. Natürlich, reguläre Ausdrücke sind anfangs ein wenig kryptisch, aber es ist dann ziemlich einfach, sobald Sie verstehen wie es funktioniert. Ihre eigenen, regulären Ausdrücke können Sie nach einer kurzen Lernphase selber programmieren und erfolgreich testen. Ein erfahrener VB-Programmierer würde dies nicht in weniger als einer Woche und ohne eine Flasche Aspirin schaffen.
Die meisten Trader wissen nicht wie man programmiert, und warum sollten sie eine schwere Sprache erlernen, die am Ende sowieso nur Ärger und Kopfschmerzen verursacht? QScript ist eine von den direkten und einfach zu lernenden Programmiersprachen - und ist optimiert für die Erstellung von Trading-Indikatoren. Das heißt, es ist das richtige Werkzeug für diesen Job. Mähen Sie das Gras nicht mit der Schere - benutzen Sie einen Rasenmäher!
Ein anderes, großes Feature in Wave59 ist der QScript-Debugger, mit dem Sie Zeile für Zeile durch Ihren Sourcecode gehen können und dabei genau sehen was an jeder Stelle des Programms passiert. Erinnern Sie sich, daß weiter oben von 12.000 Zeilen für die Erkennung der Schulter-Kopf-Schulter-Formation die Rede war? Stellen Sie sich vor, Sie haben eine Woche mit der Programmierung zu tun gehabt. Jetzt nach all der harten Arbeit, wenn Sie den Indikator anwenden, lehnen Sie sich zurück und....nichts. Das ist richtig - Ihr Indikator funktioniert nicht, weil irgendwo ein Fehler ist!
Was tun Sie jetzt? Wenn Sie ein anderes Programm verwenden, müssen Sie Zeile für Zeile durch Ihren Quellcode gehen und den Fehler aussieben (viel Glück!), oder Sie werden eine Menge Druckanweisungen einfügen und die Werte der verschiedenen, wichtigen Variablen in eine Datei irgendwohin speichern müssen (und die Datei dann später durchsuchen). Auf diesem Wege ist es fast unmöglich ein Programm von solch einer Größe zu durchsuchen, oder wenn doch, ist es sehr harte Arbeit. Mit anderen Worten, es ist unmöglich zu überprüfen , ob Ihr Quellcode das tut was Sie meinen. Am Ende entstehen Werte, aber wie wollen Sie wissen das Sie nicht aus Versehen einen Wert subtrahiert haben obwohl Sie ihn addieren wollten? Ihre große Idee für einen Indikator könnte ein Blindgänger werden, wegen eines Tippfehlers, nicht weil Ihre Idee schlecht war!
Wave59 bietet Ihnen den Debugger, der es Ihnen leicht nacht Ihren Quellcode Zeile für Zeile durchzusehen und die verschiedenen Variablen zu kontrollieren. Dieses ist die Methode, wie auch professionelle Programmierer ihre Fehler finden - und es gibt keinen Grund, Sie dieser leistungsfähigen Möglichkeit zu berauben. Sehen Sie hier einen Screenshot:
Diese Grafik zeigt, wie Sie den RSI-Oszillator überprüfen können. Es gibt Anzeigen für lokale Variable,Variablendetails, Breakpunkte, Funktionsverfolgung und so weiter, also es werden alle Eigenschaften eines vollwertigen Debuggers unterstützt. Sie finden nichts Ähnliches in irgend einer anderen Chartsoftware.
Übersetzen Sie "EasyLanguage" automatisch in "QScript"
Wie ich anfangs erwähnte, ist EasyLanguage für viele Jahre (wird in TradeStation benutzt) für Trader die Sprache der Wahl gewesen. Sie ist so einfach zu erlernen wie jede andere, populäre Programmiersprache, und es ist einfach mit ihr Indikatoren für das Trading zu erstellen. Anstatt Sie zu zwingen, erst einmal QScript zu erlernen um dann Ihre eigenen oder kundenspezifischen EasyLanguage-Programme in Wave59 verwenden zu können, haben wir uns entschieden, ein automatisches Konverterprogramm zu entwickeln.
Kopieren Sie einfach Ihren EasyLanguage-Code in den Konverter, dann starten Sie den Konverter und heraus kommt tadelloses, schriftliches QScript! Indikatoren-, Funktions-, ShowMe-Studien und PaintBars können alle in QScript umgewandelt werden. Nach unserer Erfahrung kommen 80-90% des EasyLanguage-Codes ohne notwendige Änderungen aus und sind sofort einsatzbereit. Die anderen 10-20% erfordern hier und dort einige, kleine Nachbesserungen, aber sehr selten müssen Sie große Änderungen am Quellprogramm vornehmen.
Mechanische Handelssysteme werden in Wave59 noch nicht unterstützt, diese können also nicht konvertiert werden. Ansonsten sollten Sie in der Lage sein, alles andere mit minimalem Aufwand aus TradeStation nach Wave59 zu konvertieren. QScript und EasyLanguage haben eine sehr ähnliche Syntax und es ist nicht schwierig die kleinen Nachbesserungen vorzunehmen, sobald Sie Ihre Programme konvertiert haben.
Teilen Sie Ihre Ideen mit Anderen
Die Möglichkeit eigene Tools zu entwickeln versetzt Sie in die Lage damit eine unglaubliche Menge an Erkenntnissen über die Finanzmärkte zu bekommen. Früher oder später werden Sie das eine oder andere, selbst entwickelte Tool besonders gut finden und oft benutzen. Wenn Sie eigene Tools entworfen haben können Sie diese entweder nur für sich allein benutzen oder Sie können sie auch Freunden zur Verfügung stellen. Sie können Ihre Tools aber auch an andere Leute verkaufen.
Natürlich, wenn Sie vorhaben Ihre Tools anderen Leuten zur Verfügung zu stellen, müssen Sie sicher sein das Ihnen niemand Ihre Idee stiehlt. Das war in der Vergangenheit ein großes Problem für EasyLanguage-Programmierer, die Ihre Indikatoren verkaufen wollten. Hat jemand Einblick in die Programmierung Ihres vielleicht sehr aufwendigen Indikators, so kann er diesen möglicherweise in Newsgroups veröffentlichen oder selber für weit weniger Geld verkaufen. Das ist nicht unbedingt das, was Sie haben wollen, wenn Sie Ihre wertvollen Methoden weggeben!
Wave59 benutzt moderne Kryptographie-Algorithmen, um den Export von QScript zu schützen, keine einfachen Passwort- Systeme. Das bedeutet, das niemand in der Lage ist Ihre Programmierung im Klartext zu sehen um Ihre Idee zu kopieren, so sehr und oft derjenige es auch probiert. Ihre Technologie ist sicher. Sie können aber auch dafür sorgen, das Ihre Programme nur in bestimmten Installationen von Wave59 funktionieren, was es Ihnen erlaubt Ihre Technologie auf ausgewählten PC's zu sperren oder freizugeben.
Die Möglichkeit eigene Indikatoren zu entwickeln ist extrem wichtig für Trader. Wenn Sie es bisher auch noch nicht gebraucht haben, vielleicht brauchen Sie in der Zukunft eine Möglichkeit etwas selber zu programmieren und dann ist es sehr wichtig etwas zuverlässiges zu haben um dies zu tun. Sie brauchen vorher auch keine komplizierte Programmiersprache zu lernen! QScript ist so einfach wie es eine Programmiersprache nur sein kann, aber trotzdem flexibel und mächtig. Geben Sie sich nicht mit weniger zufrieden.
Klicken Sie hier, um einen Account zu eröffnen, oder hier um zur Startseite zu gelangen.