|
Backtest mit Tick-Daten
|
|
03.04.2010, 11:16
(Dieser Beitrag wurde zuletzt bearbeitet: 04.04.2010 11:20 von adamp.)
Beitrag: #1
|
|||
|
|||
|
Backtest mit Tick-Daten
Inhaltsverzeichnis
Worum geht's? Diejenigen die schon wissen worum es geht, können gleich zu Schritt 1 der Anleitung springen. Für alle anderen eine kurze Erklärung, was wir machen wollen - und wieso: Die kleinstmögliche Zeiteinheit, die uns Metatrader zur Verfügung stellt ist der 1-Minuten Chart. Dies ist für die meisten Trader auch völlig ausreichend. Für Automatische Handelssysteme, die entsprechend große Werte für StopLoss/TakeProfit besitzen, mag der 1-Minuten Chart ausreichend sein... Doch möchte man einen Expert Advisor programmieren, der sehr enge StopLoss und TakeProfit verwendet, dann können ungenaue Kursdaten das Ergebnis sehr stark verfälschen. Dies ist zum Beispiel bei allen EAs der Fall, die ein Scalping System verwenden. Dazu muss man nämlich wissen: Metatrader simuliert Tickdaten nur anhand der kleinsten zur Verfügung stehenden Einheit. Im besten Falle also 1-Minuten Candles. Um dieses Manko zu beheben muss man etwas tricksen*: Dukascopy stellt auf seiner Webseite kostenlose Tickdaten zur Verfügung. Diese Tickdaten können verwendet werden um für Backtests im Strategy-Tester von Metatrader verwendet zu werden. Doch ganz so einfach ist das leider nicht, denn Tickdata von Dukascopy kann nicht so einfach heruntergeladen werden. Die Tickdaten sind aufgeteilt nach Symbol (EURUSD, USDJPY...), Jahr, Monat, Tag und Stunde.Um z.B. die Tickdaten von EURUSD vom 25.02.2010 12:00 - 13:00 herunter zu laden, nimmt man diesen Link: www.dukascopy.com/datafeed/EURUSD/2010/01/25/12h_ticks.bin ![]() Der Prozess lässt sich natürlich auch automatisieren und dafür hat jemand freundlicherweise ein PHP-Skript geschrieben, dass im Anhang zu finden ist (dukascopy_php_scripts_30.12.2009). Dieses Skript lädt alle Tickdaten von Dukascopy herunter (alle!) und setzt die einzelnen Dateien zu einer großen Datei zusammen. Jetzt hat man zwar etliche GigaByte Tickdata, aber damit kann Metatrader immer noch nichts anfangen. Dazu muss es zuersteinmal in ein für den Metatrader Strategy-Tester kompatibles Format konvertiert werden, damit es für Backtests verwendet werden kann. Und dies geht so: Die TickDaten werden von einem weiteren PHP-Skript ins sogenannte CSV-Format gebracht. Dieses Format ist auch für Menschen lesbar und dient nur der Vorbereitung für die weitere Bearbeitung durch ein MQL Skript. Jenes Skript liest die CSV-Datei Tick für Tick ein und erstellt daraus eine .HST und eine .FXT Datei - das Format, das letztlich von Metatrader für die Backtests verwendet werden kann. Allerdings gibt es noch einen Haken: standardmäßig erzeugt Metatrader für jeden Backtest eine neue Tickdatei. Um dies zu verhindern, muss die Metatrader Software umprogrammiert werden. Dafür liegt eine exe Datei zur Verfügung, die ebendies vornimmt. Achtung: Da diese Methode auch von einigen Viren angewandt wird um schadhaften Code einzufügen, erkennen manche Antiviren-Programme diese Datei vielleicht als möglichen Virus. Sie ändert Metatrader im laufenden Betrieb - die original Funktionalität bleibt also erhalten. Dies läuft über einen Loader, der aufgerufen wird und dann Metatrader startet. Für Build Version 225 und 226 gibt es jeweils unterschiedliche Loader. So, und nun kommt die Schritt-für-Schritt Anleitung ![]() * (Quelle: http://eareview.net/tick-data )
|
|||
|
03.04.2010, 21:54
(Dieser Beitrag wurde zuletzt bearbeitet: 03.04.2010 23:25 von adamp.)
Beitrag: #2
|
|||
|
|||
|
RE: Backtests mit Tick-Daten
Schritt 1 - Runterladen der Tickdaten
Das Skript, das die Tickdaten herunterlädt wurde in PHP geschrieben. Um es ausführen zu können, muss eine Webserver-Software installiert werden, die PHP versteht. Für Windows eignet sich dazu am besten XAMPP (.exe Datei runterladen und ausführen)Nach der XAMPP Installation müsst ihr noch das CURL-Modul in PHP freischalten (cURL bei Wiki ), das vom Skript verwendet wird um die Tick-daten vom Dukascopy Server zu laden:Angenommen ihr habt XAMPP in C:\xampp\ installiert, dann editiert dazu die Datei C:\xampp\php\php.ini und sucht folgende Zeile: PHP-Code: ;extension=php_curl.dll Entfernt das Semikolon und speichert die Datei: PHP-Code: extension=php_curl.dll Entpackt die Datei dukascopy_mql_scripts.zip, die ihr als Anhang im ersten Post findet. Darin befinden sich zwei PHP-Skripte, die ihr bitte in folgendes Verzeichnis kopiert: C:\xampp\php\ Das Skript ist so voreingestellt, dass sämtliche Tick-Daten von allen Symbolen heruntergeladen werden. Das dauert ewig! Ich habe nur EURUSD heruntergeladen und das allein hat schon Stunden gedauert! Wenn ihr also nicht alle Symoble herunterladen möchtet, editiert einfach die Datei dukascopy_download_data.php und kommentiert die Symbole aus, die ihr nicht haben wollt. In diesem Beispiel lade ich also nur EURUSD herunter (beachtet, dass ich das Komma dahinter entfernt habe): PHP-Code: $currencies = array(Die Zahl dahinter ist die Zeit ab der die Tickdaten heruntergeladen werden sollen. 1175270475 bedeutet dabei Freitag, 30 März 2007, 16:01:15 GMT und ist der erste Tag von dem Dukascopy Tickdata von EURUSD zur Verfügung stellt. Wenn ihr das Datum ändern wollt, nutzt diesen Konverter www.unixtime.de ![]() Öffnet nun die Kommandozeile. Dazu im Startmenü auf den Befehl Ausführen klicken und cmd eingeben. Wechselt in der Kommandozeile mit dem Befehl cd \xampp\php in das PHP-Verzeichnis und führt folgenden Befehl aus: php dukascopy_download_data.php Damit wird der Download gestartet. Wenn ihr im Explorer in das Verzeichnis C:\xampp\php wechselt, dann solltet ihr dort jetzt ein neues Verzeichnis finden, dass EURUSD heißt. Darunter befinden sich die Jahre, Monate, Tage und letztlich die Stunden-Dateien mit den Tickdaten. Sobald das Skript beendet ist, habt ihr einen ca. 600 MB großen EURUSD Ordner. Schaut auch mal in der error.log nach ob es beim Download Fehler gab. Eventuell wurde eine Datei nicht richtig herunter geladen, dann müsst ihr die manuell herunterladen und in das richtige Verzeichnis kopieren. |
|||
|
03.04.2010, 23:06
(Dieser Beitrag wurde zuletzt bearbeitet: 04.04.2010 09:51 von adamp.)
Beitrag: #3
|
|||
|
|||
|
RE: Backtests mit Tick-Daten
Schritt 2 - Tick-Daten nach CSV konvertieren Als nächstes müssen die Tickdaten in das CSV-Format konvertiert werden. Falls ihr die Kommandozeile schon geschlossen habt, öffnet sie wieder und wechselt erneut ins C:\xampp\php Verzeichnis. Jetzt führt ihr den folgenden Befehl aus: php process_dukascopy_data.php EURUSD 200702 201004 EURUSD.csv Diese Anweisung konvertiert die Dukascopy Tickdaten im EURUSD Ordner in eine CSV Datei. Startdartum ist dabei 02.2007 und das Enddatum 04.2010 - wenn ihr eine andere Zeitspanne verwendet habt, dann ändert es entsprechend. Der letzte Parameter ist die Ausgabedatei, hier also EURUSD.csv Der Download der Tickdaten hat Stunden gedauert. Die Konvertierung in die CSV-Datei dauert nochmal einige Stunden. Wer sich also vorgenommen hat, sämtliche Daten herunterzuladen und zu konvertieren, der sollte den PC - auch wenn es der schnellste High-End-PC ist - einige Tage warten ... Die komplette CSV-Datei bis zum heutigen Datum ist etwa 4.75 GB groß. |
|||
|
04.04.2010, 11:19
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2010 12:48 von adamp.)
Beitrag: #4
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Schritt 3 - CSV-Datei in .FXT und .HST Konvertieren
Entpackt die Datei dukascopy_mql_scripts.zip, die ihr als Anhang im ersten Post findet, in euer Metatrader Verzeichnis. Achtet dabei darauf, dass die Verzeichnisstruktur erhalten bleibt. Es wird ein Script und eine Include-Datei installiert. Jetzt kopiert ihr die CSV Datei mit den Tick-Daten in das Verzeichnis C:\Programme\Metatrader\experts\files - evtl. müsst ihr natürlich den Pfad eurer Installation anpassen. Startet nun Metatrader und kompiliert das soeben installierte MQL Script: Mit F4 startet ihr den MQL Editor. Öffnet die Datei Dukascopy2FXT.mq4 aus dem Script-Ordner und drückt F5 um das Script zu übersetzen. Editor wieder schließen und. Öffnet nun den Chart mit dem Symbol und in dem Zeitfenster, in dem ihr den Backtest machen wollt. Möchtet ihr bspw. den Backtest im H1 Timeframe in EURUSD durchführen, dann öffnet also einen H1 Chart von EURUSD. Startet jetzt das Script Dukascopy2FXT in diesem Chart und stellt im aufpoppenden Fenster die Parameter ein: CreateHst: false/true Möchtet ihr auch History-Files erzeugen, dann stellt diesen Parameter auf true. Spread: 0 Tragt hier den Spread eures Brokers ein oder lasst es auf 0 stehen, dann wird der aktuelle Spread verwendet. StartDate und EndDate Die .fxt Datei darf nicht größer als 2 GB groß werden, deswegen empfiehlt es sich hier etwa 1 Jahr lals Backtest-Datum zu verwenden. Tragt Start und Ende im Format JJJJ.MM.TT ein. UseRealVolume: false/true Sollte nur verwendet werden, falls euer EA auch die Volumen-Daten verwendet. Ansonsten verlängert es nur die Konvertierung. Sobald ihr die Parameter eingestellt habt, beginnt die Konvertierung. Dies kann einige Minuten bis 1/2 Stunde dauern, je nach ausgewählter Testperiode. Das Skript quittiert seinen Dienst mit einem Alert. Ihr findet nun im experts\files Ordner die Datei EURUSD60_0.fxt (falls ihr den H1 Chart von EURUSD verwendet habt). Diese Datei kopiert ihr nach C:\Programme\Metatrader\tester\history. Solltet ihr auch noch die .hst Datein erstellt haben, dann kommen diese nach C:\Programme\Metatrader\history\{SERVER}. {SERVER} müsst ihr durch den von eurem Broker verwendeten Server ersetzen. |
|||
|
04.04.2010, 11:25
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2010 09:46 von adamp.)
Beitrag: #5
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Schritt 4 - Metatrader über den Loader starten und Backtest durchführen
Normalerweise würde die .fxt Datei bei jedem Start eines neuen Backtests neu erzeugt werden. Dabei erstellt Metatrader Zufallsreihen anhand der vorliegenden kleinsten zur Verfügung stehenden Einheit. Aber wir wollen ja, dass unsere Dukascopy Tick-Daten verwendet werden. Dazu muss Metatrader über einen Loader gestartet werden. Für Build Version 225 und 226 von Metatrader findet ihr jeweils einen Loader im ersten Thread-Beitrag als Anhang. Entpackt die jeweilige Datei in euer Metatrader-Hauptverzeichnis und startet den Loader. Er sollte Metatrader automatisch laden. Wechselt nun zum Strategy-Tester und wählt den EA aus, den ihr testen möchtet. Achtet dabei darauf, das Symbol und die Zeiteinheit zu verwenden, für die ihr die Tick-Daten erstellt habt. Außerdem muss die Test-Periode mit dem übereinstimmen, was ihr bei der Konvertierung zur .fxt Datei angegeben habt. Wenn ihr alles richtig gemacht habt, dann solltet ihr einen Backtest mit 99% Genauigkeit erhalten. Im Anhang findet ihr einen Screenshot eines Backtests des Moving Averages EA, der mit Metatrader mitgeliefert wird. Der EA wurde im 5 Min Timeframe für das Jahr 2009 durchgeführt und ist in diesem Setup nicht profitabel. Ich wollte aber nur einmal die Unterschiede deutlich machen zwischen einem Backtest mit 90% und 99% Genauigkeit. Im ersten Fall bleiben $7.000 übrig, mit den Dukascopy Tickdaten ist das Konto bereits nach 11 Monaten bei Null angelangt . |
|||
|
06.04.2010, 09:59
Beitrag: #6
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Danke für die Anleitung Werde es heute Nachmittag mal für EUR/USD, GBP/USD und EUR/YEN durchlaufen lassen.
|
|||
|
06.04.2010, 10:27
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2010 10:29 von adamp.)
Beitrag: #7
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Wenn du jetzt mit dem Download und der Konvertierung anfängst, wirst du es wohl eher morgen testen müssen... dauert wirklich lange
![]() Aber sobald du die Tickdaten einmal runtegeladen hast, geht ein Update relativ schnell. Du musst dann ja nicht mehr bei Null anfangen, sondern fügst nur noch die Daten hinzu, die neu hinzugekommen sind. Ein Tipp: Die Datei, die für den Strategy-Tester erstellt wird, darf maximal 2 GB groß sein. Das reicht für ca. 12 - 18 Monate Tickdaten, je nach Symbol. Ich habe deshalb einzelne Dateien angelegt: EURUSD_2009, EURUSD_2008, etc. Ich hoffe, dass mit Metatrader 5 die Backtests mit echten Tickdaten einfacher möglich sein werden. Aber ich bin schon froh darüber, dass es für Metatrader 4 überhaupt eine Möglichkeit gibt. |
|||
|
26.06.2010, 00:34
Beitrag: #8
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Sag ich auch mal Danke für deine Beschreibung!
Bin grad beim Runterladen, das dauert wirklich... :/ |
|||
|
22.11.2010, 21:38
Beitrag: #9
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
Hallo adamp, Spitzen-Arbeit!!! Vielen Dank. Kleine Anmerkung für andere, die der Anleitung folgen (für den erfahrenen Benutzer wird das wohl ohnehin klar gewesen sein): >>Entpackt die Datei dukascopy_mql_scripts.zip, die ihr als Anhang im ersten Post findet. Darin befinden sich zwei PHP-Skripte, die ihr bitte in folgendes Verzeichnis kopiert: C:\xampp\php\>>: "dukascopy_php_scripts.zip" statt "dukascopy_mql_scripts.zip" Wer keinen PHP-Editor hat, kann den Metaeditor für die Modifikation (Array mit den Währungspaaren) verwenden. >>Öffnet nun die Kommandozeile. Dazu im Startmenü auf den Befehl Ausführen klicken und cmd eingeben. Wechselt in der Kommandozeile mit dem Befehl cd \xampp\php in das PHP-Verzeichnis und führt folgenden Befehl aus: php dukascopy_download_data.php>>: "download_dukascopy_data.php" statt "dukascopy_download_data.php" Bin eben dabei, die Daten runterzuladen. Dieser thread ist von 04/2010, meine Metatrader-Version ist mittlerweile die Build 228. Kann ich den externen Loader für 226 nutzen? Könntest Du andernfalls evtl. einen Loader für 228 zur Verfügung stellen? Würde sicherlich allen helfen, die Deinen (wirklich exzellenten) Anleitungen folgen. Gruß und vielen Dank im Voraus, 037stradale |
|||
|
24.11.2010, 00:04
Beitrag: #10
|
|||
|
|||
|
RE: Backtest mit Tick-Daten
@037stradale: Schön, dass dir die Beschreibungen helfen. Die Idee ist aber nicht von mir, sondern wurde hier veröffentlicht: http://eareview.net/tick-data
(ist auch im 1. Post als Quelle angegeben).Ich habe leider keinen Loader für Build 228. Probier mal aus und wenn du 99% Genauigkeit erhälst, dann funktioniert's ![]() Falls nicht, kann ich mit einem neuen Loader leider auch nicht helfen. Dazu müsste man den Code untersuchen und die Stellen finden, die die Datei mit den Tickdaten überschreiben. Dazu habe ich leider nicht die Zeit. Du kannst ja mal versuchen den Ersteller der Tools zu kontaktieren? |
|||
|
|
| Möglicherweise verwandte Themen... | |||||
| Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
| Backtest für FDAX | Hoschie | 2 | 1.084 |
11.12.2010 10:31 Letzter Beitrag: adamp |
|

Suche
Mitglieder
Kalender
Hilfe





