Expert Advisors

Expert Advisor Programmierung für den MetaTrader in MQL4

Automatisierter Handel durch Expert Advisors Profitables Trading basiert in der Regel auf einer Strategie, welche Kriterien vorgibt, die ein Markt erfüllen muss, damit Sie einen Trade öffnen oder schließen. Völlig egal, wie diese Strategie nun aussieht, ob Sie komplex oder einfach gestrickt ist, es kostet immer Zeit sie umzusetzen. Wäre es nicht ungemein praktisch, wenn ein Programm diese Aufgabe übernehmen würde? Programmierung in MQL4 Der MetaQuotes Language Editor bietet dem Trader die Möglichkeit, so ziemlich jeden beliebigen Indikator oder Expert Advisor selbst zu erstellen, gewisse Programmierkenntnisse vorausgesetzt. Der Editor befindet sich im MetaTrader unter „Extras -> MetaQuotes Language Editor“ (Shortcut: F4). In gewohnter Manier kann man bequem über „Datei -> Neu“ eine Schablone auswählen. Wir beschränken uns in diesem Artikel auf Expert Advisor und Indikatoren. Wo liegt der Unterschied? Abgesehen von einigen Kleinigkeiten, im Grunde nur darin, dass der Expert Advisor Positionen managen darf, während der Indikator nur als Informationsquelle dient. Bevor wir anfangen, ein Wort der Warnung: Ein Expert Advisor hat volle Kontrolle über Ihr Handelskonto, nutzen Sie den erstellen EA deshalb niemals auf einem Echtgeldkonto, bevor Sie ihn nicht ausgiebig getestet haben. Aller Anfang ist schwer Erfahrungsgemäß programmiert es sich wesentlich angenehmer, wenn man ein Konzept parat hat. Nehmen Sie sich zunächst Stift und Papier und erstellen Sie einen Plan, wie der Expert Advisor arbeiten soll: Welche Parameter sollen veränderbar sein? Welche Kriterien soll der EA überwachen? Wann soll er aktiv sein? Wie viele Positionen soll er eröffnen? Sollen Positionen im Nachhinein modifiziert werden und wenn ja, wann und wie? Diese Liste können Sie beliebig fortsetzen, je mehr Details Sie planen, desto zielstrebiger ist das Programmieren. Programmieren mit Struktur Je größer oder umfangreicher das Programm wird, desto unübersichtlicher wird der Code. Daher ist es wichtig bereits zu Beginn einer festen Struktur zu folgen. Das nachfolgende Beispiel soll verdeutlichen, wie ein Code aufgebaut werden kann. Wir wählen die Schablone „Expert Advisor“, belassen die Einstellungen bei Standard und füllen Name, Autor und Website nach Belieben aus. Das fertige Produkt gleicht in etwa diesem hier: Zeilen und Sätze die mit „//“ beginnen, sind Kommentare und werden bei der Ausführung des Codes ignoriert. Nutzen Sie dies unbedingt aus, um sich Hinweise und Notizen zu hinterlegen. Wenn Sie in drei Monaten auf Ihren Code schauen, wissen Sie eventuell nicht mehr was Sie sich damals dabei gedacht haben. Hier sind Kommentare sehr hilfreich, um schnell wieder einsteigen zu können. Die vorhandenen drei Funktionen OnInit(), OnDenit() und OnTick() sind bereits definiert, jedoch ohne Inhalt. Zur Erläuterung: OnInit() -> On Initialization -> Beim Laden des EA im Chart Der hier eingefügte Code wird dann ausgeführt, wenn Sie den Expert Advisor auf ein Chart anwenden. Im Normalfall setzt man hier einige Startwerte fest, die sich zur Laufzeit ändern können. OnDeinit() -> On Deinitialization -> Beim Entfernen des EA vom Chart Hierbei handelt es sich um das Gegenstück zur eben erwähnten Funktion. Alles was Sie hier reinschreiben, wird dann ausgeführt, wenn Sie den Expert Advisor wieder entfernen. Hier können Sie ihre Plattform aufräumen, indem Sie zum Beispiel alle Objekte vom Chart löschen, die vom EA eingefügt wurden. OnTick() -> Pro Tick Hier liegt die Hauptfunktionsweise des EAs. Pro Tick ist wohl mit die schnellste Variante. Bei jedem Tick werden die Berechnungen neu durchgeführt. Dies kann interessant sein, wenn ihr EA beispielsweise im Minuten Chart reagieren soll. Wer seine Kriterien aber eher im 4H-chart oder auf Tagesbasis macht, kann auch andere Events auswählen. Denkbar sind z. B. „Bei neuem Bar“, „Zeitgesteuert mit Timer (z. B. alle 30 Minuten) oder zu bestimmten Uhrzeiten. Für unser Beispiel bleiben wir jedoch bei OnTick. Grundlagen der MQL-Programmierung Wer schon Erfahrungen im Programmieren gesammelt hat, kann diesen Absatz getrost überspringen. Für alle Neueinsteiger gibt es hier kurz und knapp ein paar Tipps, die Sie im Hinterkopf behalten sollten. Variablen: Variablen können fast beliebig definiert werden und Werte beinhalten. Diese Variablen können im Code anstelle des Wertes verwendet werden. Sie kennen das sicher aus dem Mathematikunterricht. „Lösen Sie x + 3 = 5 -> x = 2“ x ist hierbei unsere Variable, die den Wert 2 angenommen hat. Variablen sind immer dann sinnvoll, wenn Sie den entsprechenden Wert an mehreren Stellen verwenden wollen, jedoch von Zeit zu Zeit auch verändern. Stellen Sie sich 2000 Zeilen an Code vor, in denen die Zahl 5 rund 20 Mal genutzt wird. Am Ende stellen Sie fest, dass 5 nun doch besser eine 7 seien sollte. Anstatt nun alle Zeilen zu durchsuchen und den Wert von 5 auf 7 zu ändern, können Sie bequem ihr x als 7 definieren und sind fertig. Variablentypen: Variablen erhalten bei der Erstellung eine Definition ihres Typs, welcher festlegt, um was es sich bei der Variable handelt. Dies kann zum Beispiel sein: Int = Ganzzahl (Integer) (1 | 2 | 3) Double = Gleitkommazahl (0.05 | 1.33 | 3.1415) Bool = Wahrheitswert (Boolean) (True oder False) String = Zeichenkette („EA läuft im Währungspaar EUR/USD“) Die Dateitypen sind nicht immer bindend, sollten aber sinnvoll gewählt sein. Ein Parameter für die maximale Anzahl an Positionen sollte vom Typ Integer sein, ergo die Werte 0,1,2,3, … annehmen können. Der Typ Double würde in dem Fall keinen Sinn ergeben, da man eben nicht 1.5 Positionen offenen haben kann. Im Gegenzug, wer die maximal genutzte Margin in Prozent angeben möchte, sollte auf den Typ Double setzen und die Angabe praktischerweise sofort in Dezimalschreibweise machen, also beispielsweise 0.05 für 5 %. Code Aufbau Mit einigen Ausnahmen, läuft ein Code immer von oben nach unten durch. Denken Sie bei Berechnungen daran, dass die Reihenfolge eine Rolle spielt. Beispiel: int x, y, z; z = x * y; y = 3; x = 2; Wir haben die Variablen als Integer deklariert (Variable erstellt vom Typ X), jedoch noch nicht initialisiert (Der Variable einen Wert zuweisen). Der Code würde also nicht 2*3 rechnen, sondern einen Fehler melden, da x und y keinen Wert haben. int x = 2; int y = 3; int z = x * y; Diesmal initialisieren wir die Variable direkt beim Deklarieren. Dadurch kann z nun berechnet werden. Das mag jetzt einfach klingen, aber suchen Sie…

Read more

Expert Advisors – die Zukunft des Börsenhandels

Die Handelsplattform MetaTrader wartet mit einer interessanten Zusatzfunktion auf. Zum Funktionsumfang der Software aus dem Hause MetaQuotes gehören nicht nur diverse Chart-Features und Standard-Indikatoren, sondern auch ein vielseitig anwendbares Programmier-Tool, das über die Schaltfläche MetaEditor aufgerufen werden kann. Das leistungsstarke Tool ist wohl einer der Hauptgründe, weshalb der MetaTrader zu den beliebtesten Handelsplattformen für private Anleger zählt. Dieses Tool erlaubt unter anderem die Erstellung und Bearbeitung der sogenannten Expert Advisors, kurz EA’s genannt. EA’s bieten dem Trader die Möglichkeit, automatisiert zu handeln.   Wesentliche Vorteile von Expert Advisors Der Umgang mit der menschlichen Psyche zählt mitunter zu den schwierigsten Herausforderungen beim Trading. Diverse Situationen, wie zum Beispiel ein plötzlicher Anstieg der Volatilität, können nicht nur die Nerven belasten, sondern auch dazu führen, dass in der Hektik völlig irrationale Entscheidungen getroffen werden – das sorgfältig geplante Einstiegs- und Ausstiegsregelwerk wird kurzer Hand außer Acht gelassen und dem Risiko- und Moneymanagement kommt keinerlei Bedeutung mehr zu. Einzelne Trades können so für einen erheblichen Drawdown sorgen und unter Umständen das gesamte Trading-Kapital gefährden. Die Vorteile von automatisierten Handelsprogrammen, wie den Expert Advisors für den MetaTrader, liegen auf der Hand. Sie machen es zum Beispiel möglich, dass sich der Trader strikt an sein Regelwerk hält – auf diese Weise kann der Risikofaktor Emotionen wirkungsvoll ausgeschaltet werden. Ein weiterer wesentlicher Vorteil ist die Reaktionsfähigkeit eines automatischen Handelssystems. Trading ist oftmals mit stundenlangem Warten verbunden. In vielen Märkten ist es eher die Regel als die Ausnahme, dass stundenlang auf ein Einstiegs- oder Ausstiegssignal gewartet werden muss. Oftmals ist es so, dass ein Trader im entscheidenden Augenblick nicht aufmerksam ist – weil er entweder schon viel zu lange vor dem Computer sitzt oder schlichtweg abgelenkt ist. Ein automatisiertes Handelssystem kann im Grunde genommen immer mit der gleichen Geschwindigkeit reagieren. Konzentrationsschwächen und Ermüdungserscheinungen, wie sie beim menschlichen Trader im Laufe der Zeit zwangsweise vorkommen, gibt es hier nicht. Des Weiteren können automatisierte Handelssysteme den Trader sowohl in psychischer als auch in physischer Hinsicht deutlich entlasten. Zum einen kann Stress vermieden werden, zum anderen muss der Händler zur Beobachtung der Märkte nicht ständig am Rechner sein und kann anderen Tätigkeiten nachgehen. Zu guter Letzt besteht mit einem automatisierten Handelssystem die Option, mehrere Märkte gleichzeitig zu beobachten und zu traden – auch in dieser Hinsicht sind der menschlichen Konzentration und Handlungsfähigkeit Grenzen gesetzt. Auf diese Weise kann die Arbeitseffizienz merklich erhöht werden.   Die Entwicklung von Programmen mit dem MetaEditor Um den MetaEditor vollumfänglich nutzen zu können, sind Programmierkenntnisse notwendig. Ein einfaches Zusammenstellen der Programme über grafische Benutzeroberflächen via Drag & Drop ist beim MetaEditor nicht möglich. Dafür besteht für den Entwickler die Möglichkeit, sehr flexibel zu arbeiten. Die Programme, die mit dem MetaEditor geschrieben werden können, können grundsätzlich verschiedene Ausprägungen und Komplexitäten aufweisen. Möglich sind sowohl einfache Skripte, wie zum Beispiel Ordertools, als auch anspruchsvolle Indikatoren und komplexe Experts Adivisors. Die Sprache, in der die Programme für die Handelssoftware geschrieben werden, findet bei der Variante MetaTrader 4 als MQL4 und bei der Variante MetaTrader 5 als MQL5 Bezeichnung.   Die zentralen Elemente eines Expert Advisors Um automatisiert handeln zu können, müssen sämtliche Parameter, die im Zusammenhang mit des Positionseröffnung und der Positionsschließung im Zusammenhang stehen, definiert werden. Festgelegt wird zum Beispiel nicht nur die Positionsgröße, sondern auch die Art und Weise, wie eine Position automatisch eröffnet werden soll. Beim MetaTrader 4 kann die Position zum Beispiel via Marktausführung oder via Pending-Order eröffnet werden. Der zentrale Teil eines Expert Advisors stellt die Handelsstrategie dar. Unter der Handelsstrategie werden in aller Regel die Kriterien, nach denen Positionen eröffnet und geschlossen werden, verstanden. Eine beliebtes Konzept ist zum Beispiel die Generierung von Handelsignalen mittels Indikatoren oder auf Basis von Gleitenden Durchschnitten. In die Expert Advisors können sowohl die bereits installierten Standardindikatoren, wie zum Beispiel der CCI, der MACD oder der RCI, als auch eigens erstellte Indikatoren integriert werden. Natürlich ist auch eine Kombination aus mehren Indikatoren möglich. Auf diese Weise können sehr komplexe Signalketten erstellt werden – eine ausgesprochen differenzierte Betrachtung der Märkte ist so ohne Probleme zu bewerkstelligen. Die Ausstiegsstrategie, also das Regelwerk, das den Ausstieg aus einer Position beschreibt, kann durch Festlegung eines Stop-Loss- oder Take-Profit-Levels sowie ebenfalls auf Basis eines Indikatorsignals erfolgen. Expert Advisors für den MetaTrader können auf den Zeitperioden M1, M5, M15, M30, H1, H4, D1, W1 und MN zur Anwendung kommen. So ist sowohl ein automatisiertes Trading im Rahmen von kurzfristigen als auch im Rahmen von mittel- und langfristigen Zeithorizonten möglich.   Welche Märkte können via Expert Advisor gehandelt werden? Im Grunde genommen können die Expert Advisors beim MetaTrader für die unterschiedlichsten Märkte programmiert werden. Oftmals ist sogar ein flexibler Einsatz der EA’s auf verschiedene Märkte möglich. Es sind natürlich diverse Anpassungen notwendig, da die Märkte in aller Regel unterschiedliche Volatilitäten aufweisen. Das Angebot an handelbaren Märkten hängt selbstverständlich vom Broker ab. Die Broker, die den Handel auf dem MetaTrader möglich machen, sind in aller Regel den Segmenten CFD- und Forex-Broker zuzuordnen. Zu den typischen Märkten zählen diverse Major- und Minor-Währungspaare, CFDs auf umsatzstarke Indizes und Rohstoffe wie Gold, Silber, Öl und Gas. Das Angebot an CFDs auf Einzelaktien ist bei den meisten Anbietern auf wenige umsatzstarke und bekannte Werte beschränkt.   Die Einbindung von fremden EA’s Natürlich besteht auch die Möglichkeit, fremde Expert Advisors für den eigenen Handel zu nutzen. Rund um das Thema MetaTrader ist in der Zwischenzeit eine große Community entstanden. Diverse Expert Advisors können heruntergeladen und in die eigene Handelsumgebung integriert werden. So können auch Trader, die über keinerlei Programmierkenntnisse verfügen, von den Vorteilen der EA’s profitieren. Darüber hinaus gibt es diverse Unternehmen, die sich auf die Programmierung von Skripten, Indikatoren und Expert Advisors für den MetaTrader spezialisiert haben und ihre Produkte kommerziell anbieten. Dennoch sollte der Trader bei fremden Expert Advisors die zugrundeliegende Strategie zumindest ansatzweise nachvollziehen können. Nur so kann herausgefunden werden, ob das System zu den persönlichen Risikopräferenzen passt. Ein großer Teil der angebotenen Systeme setzt auf bestimmte Handelsstrategieschwerpunkte. So sind zum Beispiel sowohl Systeme, die dem Trend folgen, als auch Handelssysteme, die sich auf das Gap- oder Range-Trading…

Read more

MetaTrader – die innovativste Handelsplattform der Welt

MetaTrader ist eigentlich der Oberbegriff für eine Software- Suite des Herstellers MetaQuotes. Die Software-Suite bietet alle nötigen Programme, um einen Brokerbetrieb aufzubauen. Im Folgenden wird jedoch nur auf das Client Terminal eingegangen, das Frontend für Trader. MetaTrader Client Terminal ist eine Trading Software, die in erster Linie auf die Entwicklung und den Betrieb automatischer Handelssysteme ausgelegt ist. Sie besteht aus zwei Komponenten: dem MetaTrader Terminal und dem MetaEditor. Das MetaTrader Terminal bietet dem Anwender eine grafische Oberfläche mit Charts und Indikatoren, wie man es auch von anderen Programmen kennt. Die Anwendung sticht dadurch hervor, dass im Terminal selbsterstellte Indikatoren, Skripte und sogenannte „Expert-Advisors“ eingesetzt werden können. Expert Advisors (EAs) stehen in der MetaTrader-Terminologie für automatische Handelssysteme. MetaEditor ist die Entwicklungsumgebung, in der Indikatoren, Skripte und EAs programmiert werden können. Die eingesetzte Programmiersprache heißt MQL und ist ein C-Derivat. Das Besondere an MetaTrader ist – und das erklärt vermutlich auch die starke Verbreitung der Software –, dass sie für den Anwender kostenlos ist; sogar die historischen Daten, mit denen gearbeitet werden kann. Die Software kann von der Hersteller-Webseite oder direkt bei einem der zahlreichen Broker heruntergeladen werden. Bisher ist noch kein anderer Software-Hersteller auf diesen Zug aufgesprungen. Die rasante Verbreitung der Software wurde zudem durch die Verbreitung kommerzieller EAs angekurbelt. Mittlerweile ist eine unüberschaubare Menge von EAs, sprich von vollautomatischen Handelssystemen, für jedermann für ein paar hundert Dollar ohne laufende Kosten zu haben – klar, dass das zu einem Selbstläufer wurde. Es gibt mittlerweile mehrere Versionen der Handelsplattform. Das ürsprüngliche und am weitesten verbreitete Programm ist Version 4. Andere Versionen wurden von verschiedenen Brokern speziell erweitert, wie etwa „MetaTrader 4 Pro“ oder „MetaTrader 4 Supreme“. Dazu kommt die aktuelle Version 5, die mit den beiden anderen Versionen nicht kompatibel ist. Sie wurde weitgehend neu programmiert und ist für den Handel mit Optionen und Futures vorbereitet. Allerdings wird diese Erweiterung kaum von den Brokern genutzt. Als Hauptarbeitswerkzeug wird die Technische Analyse vom Monatschart bis hinunter zur Analyse im Minutentakt eingesetzt. Alle Fenster lassen sich ausblenden, die komplette Arbeitsoberfläche lässt sich als sogenanntes „Profil“ abspeichern. So kann man mit einem Mausklick auf verschiedene Profile zugreifen. Über den Charts befindet sich eine Arbeitsleiste, mittels derer man zwischen drei verschiedenen Darstellungsarten (Linien-, Kerzen-, Balkenchart) auf verschiedenen Zeitrahmen umschalten kann. Das mag für viele Trader zu wenig sein. Die Programmiersprache lässt jedoch alle Möglichkeiten offen, weitere Chartarten zu programmieren. Im Internet findet man bereits fertige Indikatoren, die Point&Figure-Charts und Zig-Zag-Darstellungen generieren. Übliche Arbeitswerkzeuge wie Linien, Kanäle, Gann- Techniken, Fibbonacci, und Zyklen sowie Indikatoren, unterteilt in Trends, Oszillatoren und Volumen, sind über das Dropdown-Menü anwählbar. Eingefügte Indikatoren in den Chartfenstern lassen sich als Schablonen – sogenannte „Templates“ – abspeichern und stehen dann für andere Währungspaare zu Verfügung. So kann man ein Währungspaar in verschiedenen Zeitrahmen mit verschiedenen Indikatoren anlegen, diese dann als Profil speichern und sich so die Grundlage für das tägliche Arbeiten schaffen. Mittels eines sogenannten „MQL5-Wizard“ wird man durch eine ausgefeilte Menüführung komfortabel bei der Entwicklung von Handelssystemen unterstützt, um diese dann nach ausgiebigen Tests im realen Handel auf eines oder mehrere Instrumente einzusetzen. Neue Indikatoren und Handelssysteme stellt MetaQuotes nach Prüfung in der Datenbank „Code Base“ zur Verfügung, die man ebenfalls direkt aus dem Programm anwählen kann. In den letzten zwölf Jahren gab es viele Softwareprodukte, die für den Online-Handel entwickelt wurden. Keines davon hat so eingeschlagen wie das von der russischen Schmiede MetaQuotes entwickelte Programm MetaTrader. Mittlerweile in Version 5 erhältlich, ist sein Siegeszug um die Welt noch lange nicht zu Ende. Alles begann im Jahr 2000, als der Zugang zum Internet für jeden erschwinglich wurde und eine DSL-Leitung das Trading auch von zu Hause ermöglichte. Plötzlich kam der Handel von Währungen, vor diesem Zeitpunkt nur institutionellen Händlern vorbehalten, in Mode. Aus einer anfänglichen Nischenbranche entwickelte sich mit der Zeit eine komplette Industrie, die mittlerweile weltweit Millionen von Privatleuten den Traum vom schnellen Reichtum träumen lässt. Das russische Unternehmen MetaQuotes war maßgeblich an der Erfüllung dieser Träume beteiligt, indem es dem Trader zunächst die Handelsplattform FX Charts kostenlos zu Verfügung stellte. Später wurde daraus MetaQuotes. Die Umbenennung ermöglichte es der Kundschaft zusätzlich, nicht nur Währungspaare, sondern auch CFDs zu handeln. Ein Jahr später setzte man Verbesserungsvorschläge der Anwender um und entwickelte MetaTrader. Die Handelsplattform legte noch einmal an Funktionsvielfalt zu, zeigte eine verbesserte Performance und beinhaltete zudem die erste Version von MQL, MetaQuotes-Language. Fortan war der Trader in der Lage, buchstäblich alles, was in Formeln zu fassen ist, zu programmieren und grafisch darzustellen. Mittels Ein- und Ausstiegsregeln war es zudem ohne weitere Kosten möglich, Handelssysteme zu programmieren und diese mittels Realtime-Kursen des Forex-Marktes auf kostenlosen Demokonten zu testen. Diese Maßnahmen sorgten für eine derartige Verbreitung, wie man sie bis zu diesem Zeitpunkt von keiner anderen Handelssoftware gekannt hatte. Vor MetaTrader musste der angehende Handelssystementwickler für Programme mit entsprechender Programmieroberfläche teilweise mehrere tausend Euro zahlen – Realtime-Kursversorgung nicht eingerechnet. Je kürzer die Zeiteinheit, desto teurer wurde es. Mit den Möglichkeiten, die MetaTrader bot, wurden neue Anlegergruppen erschlossen, die sonst nicht einen Intraday Trade gemacht hätten. Die 2003 programmierten mobilen Applikationen entwickelten sich zu den meistgenutzten weltweit. Mit der im Jahr 2005 fertiggestellten Version 4 kam es zum sprunghaften Anstieg der Nachfrage von Brokerseite, die bis heute anhält. Die Programmiersprache wurde abermals verbessert und war ein weiterer Schritt in Richtung Marktführerschaft. Nicht zuletzt ist MetaTrader so erfolgreich, weil er neben einer stabilen Handelsplattform eine komplette Chart- und Analysefunktion sowie eine eigene Programmiersprache zum Entwickeln und Testen von automatisierten Handelsstrategien bietet. Anleger können MetaTrader selbst durch Programme erweitern und damit auf ihre Bedürfnisse abstimmen. Je mehr Broker die Software einsetzten, desto mehr Indikatoren und Ideen zum automatischen Handel wurden von gewieften Software-Ingenieuren umgesetzt. Automatisch handeln per sogenanntem „Expert- Advisor“ (kurz EA) ist seitdem ein Renner. Nahezu alle Broker bieten ein Demokonto mit virtuellem Spielgeld an, das man zu Beginn seiner Trading-Laufbahn rege nutzen sollte, da man auch dort immer die original gehandelten Forex-Kurse geliefert bekommt. Dies ist auch das Haupteinsatzgebiet von MetaTrader. Unterschied zwischen MetaTrader 4 und MetaTrader 5 Die Veröffentlichung der Version 5 des MetaTrader…

Read more