mh21
Addict-
Posts
41 -
Joined
-
Last visited
Community Informationen
-
Newsletter Abonnement
abonniert
-
Typ Newsletter
alle
Verschiedenes
-
auf die Community aufmerksam geworden durch
-Please Select-
mh21's Achievements
Newbie (1/14)
0
Reputation
-
Der Indikator sollte Dir alle Möglichkeiten geben und die Auswahl, welchen Wert Du nimmst, triffst Du erst im EA. Du programmierst den Indikator also so, daß er den aktuellen Bar mit berechnet und wenn Du in Deiner Strategie lieber nur Indikatorwerte nehmen möchtest, die sich nicht mehr verändern, rufst Du den Indi im EA so auf, daß er den Wert vom letzten Bar nimmt. double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift) Als letzten Parameter schreibst Du dann "1". Nimmst Du den Wert von [0], bist Du (eventuell) eher im Markt, riskierst aber Fehlsignale. Was besser ist, hängt von der Strategie ab. Beim Hammer ist es wohl sinvoll zu warten, bis der Bar (fast) zu Ende ist.
-
Nicht Du. Luisa.A. scheint etwa da zu stehen, wo ich letztes Jahr stand.
-
Oh, habe gerade Deinen Post gesehen Henrik. Werde das Tool gleich mal runterladen. Danke.
-
Das mit dem Interpolieren ist bei höheren Timeframes ungenauer, weil er mehr interpolieren muß. Beispiel: Man hat nur den Wert von jetzt und den Wert von vor einer Stunde. sagen wir von 10 auf 70 gestiegen. Dann kommt beim Interpolieren heraus, daß der Wert vor 30,5 Minuten 39,5 war. Tatsächlich kann aber in dieser ganzen Stunde viel passiert sein und der Wert war vielleicht zwischenzeitlich auf 100. Habe ich aber Minutendaten, dann weiß ich den Wert von vor 30 Minuten und den von vor 31 Minuten. Den Wert vor 30,5 Minuten kann ich also viel genauer interpolieren, da in der einen Minute nicht so viel passiert, wie in einer Stunde. Statistisch gesehen jedenfalls. Tatsächlich kann natürlich auch in einer Minute viel passieren.
-
Du stehst in etwa da, wo ich letztes Jahr war. Mir hat der Thread mql-Einsteiger sehr geholfen. Die höchsten Hochs einer bestimmten Periode zu finden ist nicht so schwer. Ich werde Dir aber jetzt keinen code posten, das haben die richtig Guten hier im Forum mit mir letztes Jahr auch so gemacht und es war richtig so. Was man selbst löst, kann man dann auch richtig. Anregung: Du braucht eine for oder eine while Schleife mit der Du festlegt, wie groß die betrachtete Periode ist und wie groß die Schrittweite (1, weil Du ja jedes Bar untersuchen willst) ist. Die for Schleife wird in dem oben erwähnten Thread erklärt. Dann brauchst Du eine Variable (eine double), die den Wert des ersten Hochs annimmt und die immer, wenn der Wert des nächsten Hochs höher ist, als ihr eigener Wert, den neuen Wert annimmt. Also nochmal eine if Anweisung innerhalb der Schleife. Jetzt kommt Dein Kampf mir der Synthax. Den gewinnst Du, wenn Du häufig F1 im editor drückst. Ich sehe gerade, askerix hat Dir etwas verraten, was direkter ist, aber dadurch lernst Du nicht programmieren. So ne kleine Schleife ist ein gutes Ding zum üben.
-
Ich gehe mit dem EA, der meine historischen Daten hat nicht online um die Backtestqualität bei konstant mind. 90% zu halten. Um den Spread zu beeinflussen (ich bin kein Optimist, wenn es um Spread geht), müsste ich die entsprechende Datei direkt editieren.
-
Shift funktioniert nicht! Beim Einlesen von .hst Dateien ist shift garnicht möglich. Beim Einlesen von .txt Dateien ist es möglich, aber man kann dadurch keine Sonntagskerze produzieren. Außerdem muß man den richtigen Shift eingeben, weil durch das Eingeben eines falschen shift-wertes die Daten nicht mit der eigenen Zeitzone übereinstimmen.
-
Wenn man sich die historischen Daten genau anschaut, stellt man auch fest, daß hier und da mal ein paar Minuten fehlen. Bei meinen jedenfalls. 100 % zu erreichen ist sicher mit ner Menge Aufwand verbunden, wenn es wirklich gehen sollte. Ich habe schon nach Lösungen für den Spread bei Backtest gesucht, aber nicht wirklich was gefunden. Wenn Dir, oder jemand anderem einfällt, wie dieser Thread hieß, wäre das toll. Ich würde nämlich gerne den Spread bearbeiten, aber letzten Sommer hatte dafür noch keiner eine Lösung und ich habs in der Zwischenzeit auch nicht hingekriegt.
-
Wenn Du die Daten, wie von Philipp beschrieben, heruntergeladen hast, mußt Du noch mit dem Script periode_converter die anderen Timeframes erstellen, wenn Du Sie haben willst. Dazu einfach das Script auf den geöffneten 1 M Chart ziehen und die entsprechende Periode 5 für 5M, 60 für Stunden, 1440 für Tage ... eingeben. Da Du mit diesem MetaTrader nicht mehr online gehst, kannst Du ihn umbenennen in z.B. MetaTrader-Strategietest und nutzt diesen Mt für Deine Backtests. Dann installierst Du einen weiteren MT für alles andere außer Backtests.
-
Ich glaube, es ist etwas komplizierter: Montags muß ich sowohl Close[1] und [2], als auch Open[1] und [2] mit + 1 versehen. Dienstags ist Close[1] aber ok und muß nicht geändert werden, alle anderen müssen geändert werden. Mittwochs ist nur open[2] zu ändern, die anderen stimmen. Sonntags ist ne ganz andere Geschichte, das müsste ich noch durchdenken. Das betrifft dann auch noch High[] und Low[]. Das geht natürlich alles, ich wollte mich als Programmieranfänger aber gerne davor drücken. Aber das Problem ist noch tiefgreifender: Indikatoren auf Tagesbasis sind falsch. Ein SMA20 reicht bei 6 Kerzen pro Woche nicht so weit zurück, wie bei 5 Kerzen. Einfach dann SMA24 zu nehmen passt auch nicht, denn je Wochentag sind unterschiedlich viele Sonntage in der Indikatorperiode. Das könnte man auch noch programmieren, aber dann past der Indi immer noch nicht, weil er ja Schlusskurse einberechnet, (die vom Sonntag), die es im historischen Chart garnicht gibt. Jetzt könnte man sagen, die Differenz ist gering. Bei SMA. Was ist aber beim Momentum? Wenn es gerade auf einen Sonntag zielt, kommt ein total falscher Wert heraus. Ich will aber heute Nachmittag mal was probieren: Beim Einlesen der hist. Daten kann man einen Shift einstellen. Möglicherweise kann ich dadurch bei den hist. Charts auch eine Sonntagskerze produzieren. Werde dann berichten, ob es funktioniert.
-
Leider nicht wirklich. Ich habe die Daten vor gut einem halben Jahr bei http://www.alpari.co.uk/ geladen Unten auf der Seite bei Download Metatrader steht als letzte Historical Data. Dort klicken. Wenn Du da jetzt hingehst erscheint Downloading of historical data is temporarily unavailable Und das schon seit einiger Zeit. Ich glaube auch nicht, daß dieser Sevice nochmal aktiviert wird, ist schon zu lange "unavailable". Aber vielleicht fuktioniert ja die Lösung, die die auf der Seite angeben. Hab ich nicht versucht. Ich suche auch permanent nach einer neuen Quelle und bin schon am überlegen mir Daten zu kaufen.
-
Ja, das hab ich auch schon überlegt. Da in meiner Strategie aber sowohl Close[1], als auch Close[2] und auch Open [1] und Open[2] vorkommen, müsste ich für Montags und für Dienstags und für für Sonntags eine Variante programmieren. Und für Mittwoch auch, beim Mittwoch ist open [2] ja eigentlich open[3]. Bleiben nur noch Donnerstag und Freitag für die ungeänderte Strategie. Das bedeutet switch mit 5 Case-Varianten. Das ist ein ganz schöner Aufwand. Ich hatte gehofft das umgehen zu können und es auf eine der drei erwähnten Arten zu lösen. Meinen nächsten EA programmiere ich in einer kleineren Zeitebene.
-
Bevor ich zumeiner Frage komme, möchte ich mich bei allen, die mir letztes Jahr beim Einstieg in die MQL-Programmierung geholfen haben, bedanken. Ich hatte dann nix mehr gepostet, weil ich an einem Punkt angekommen war, wo ich meine MQL-Probleme selbst lösen konnte und wollte keinem auf die Nerven gehen. Mittlerweile hab ich meinen ersten EA fertig und erfolgreich backgetestet und seit kurzem auf einem Demokonto laufen. Danke. Jetzt kommts: Für die Backtests habe ich Daten von Alpari heruntergeladen. Dann ist mir folgendes aufgefallen: Die historischen Daten (Forex) haben beim Tageschart 5 Kerzen pro Woche. Montag bis Freitag. Die realen Daten bei FX-direktbank und auch bei XTB haben 6 Kerzen pro Woche, weil es eine Sonntagskerze gibt. Die fangen nämlich beide Sonntagsabends mit dem Handel an und es entsteht eine Kerze im Tageschart für 1 bzw. 2 Stunden. Das bedeutet, bei jedem EA der Tageskurse verwendet, ist das Backtestergebis falsch. Oder habe ich hier einen Denkfehler? Ich sehe drei mögliche Lösungen: 1. Anderen Broker nutzen, der auch nur 5 Kerzen pro Woche hat. Welcher wäre das? 2. Andere historiche Daten. Wo bekomme ich sowas? Das Aussehen der Sonntagskerze hängt ja davon ab, wie lange vor Mitternacht der Handel anfängt. 3. Die vorhandenen historischen Daten anders aufbereiten. Kann der Metatrader das?
-
Ich würde gerne mit dem Code das MACDSample weitermachen mit folgender Frage: Warum braucht man die dritte if Anweisung. if(OrderSelect... Wenn ticket>0, also eine Order eröffnet und eine ticketnummer zurückgeschickt wurde, wie kann dann bei if(OrderSelect... ein "false" herauskommen und damit die else Anweisung auslösen? Oder kann es sein, daß man eine ticketnummer bekommt, obwohl ein Fehler aufgetreten ist und die Order nicht geklappt hat? Und was macht das return(0)? Ich dachte, es stoppt die gesamte Start Funktion Aber dann wird doch der gesamte Teil mit den Ausstiegen und TrailingStoploss nicht mehr ausgeführt. Will man das, nur weil die Order nicht geklappt hat? Es könnte doch z.B. andere Orders geben, für die man das TrailingSL anpasssen will.
-
WOW, wenn ich versuche, daß zu verstehen, hab ich einiges vor mir. Also: ich hab gerade beschlossen, daß ich nicht alles verstehen muß und daß die bitweise Addition (im Moment) nix für mich ist.