|
Allgemeine Fragen Allgemeine Fragen und Probleme rund um Metatrader 4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Zero Divide beim Backtest
Hallo
habe ein Backtest gemacht und er zeigt mir Zero Divide Fehler an. Weiß jemand was es bedeutet? mfg gio |
|
|||
der zero-divide-Fehler bedeutet, dass du irgendwo durch null teilst. Meist führt irgendeine interne Berechnung zum Ergebnis null. Dieses Ergebnis wird dann weiterverarbeitet und später für eine Division benutzt.
Meistens weiß man ja nicht, in welcher Code-Zeile das genau passiert. Entweder du suchst nach Berechnungen mit Division und versuchst so die Stelle zu finden oder du grenzt das Problem Schritt für Schritt ein - d.h. du deaktivierst große Teil des Codes (indem du Teile auskommentierst oder du setzt in der Art return-Befehle, dass nur ein kleiner Teil der jeweiligen Funktion ausgeführt wird). Wenn der Fehler dann weg ist, kannst du Stück für Stück mehr Code aktivieren und so die Zeile finden, wo der Fehler steckt. Wenn du den Fehler nicht alleine findest, poste ihn doch ruhig hier. Ich helfe dir gerne bei der Suche. |
|
|||
Zero Divide
Hallo
den Code kann ich nicht ändern. Ich habe ein Exper Advisor und wollte nur mal ein Backtest machen. Im Journal steht oft Zero Divide. Er hat mir aber den Report angezeigt. Ist der Report aussagekräftig? mfg gio |
|
|||
Wenn du keinen Quelltext hast, wird es sehr schwierig.
Eigentlich kann man jetzt nur Vermuten bei welchen Berechnungen der Fehler auftritt. Sind evtl. Eingabevariablen, die bei der fehlererzeugenden Berechnung berücksichtigt werden fälschlicher Weise auf null gesetzt? Oder, aber das schliesse ich jetzt mal aus, dass dein Kontostand durch irgendwas geteilt wird und der Kontostand auf 0 steht. Wenn du eine MQ4-Datei dazu hättest, lässt sich dir da schon eher helfen. s.l. Racki |
|
|||
hm..naja, wenn du keine MQ4-Datei hast, dann wirds schwierig. Man kann den Code zwar knacken, wie mein Vorredner sagte. Das ist aber erstens m. E. nicht vertretbar, schließlich hat der Autor schon seine Gründe, warum er kein MQ4 veröffentlich. Außerdem ist der geknackte Code ziemlich unleserlich, die Variablen namen sind nicht mehr "lots" oder "sl", sondern var12 und var13 etc. Da wirds schwieriger den Fehler zu finden.
Es ist auch kein gutes Zeichen, wenn es ZeroDivide-Fehler gibt. Dann ist der EA nicht ordentlich programmiert. Wahrscheinlich sind auch sonst noch Fehler drin, für den Live-Einsatz taugt sowas auf jeden Fall nicht. Demo kannst du damit natürlich machen. Wenn du den Autor des EAs erreichen kannst (oft steht der ja im Copyright), frag ihn doch mal, der hat bestimmt ne aktuellere Version, wos den Fehler nicht gibt oder kann dir die MQ4 geben. |
|
|||
Also was die Sache mit dem Dekompilieren angeht, mit der aktuallisierten Version von MT4 kann ich meine ex4-Dateien nicht dekompilieren.
Ich habe mich diesbezüglich damit beschäftigt, meinen eigenen Code zu schützen. Aber das ist auch ein anderes Thema. Das beste ist wie schon mal erwähnt den Autor zu fragen. Vll freut er sich über Feedback und mag bei der Fehlerbeseitigung behilflich sein. s.l. Racki |
|
|||
Das glaich problem jetzt auch bei mir. Mit dem Zero...
Das komische ist, es funkelt bei jeden backtest, ohne Probleme. Nur bei einer bestimmten build (Mt4 version) haut er mir den Fehler raus... Hab die zeile gefunden, komisch ist da drann das es von einem kommentar kommt!?! "\n Your Risk = ", 100.0 * risk_factor, "% ", "TradingLot = ", Lot(), (Lot() --> Funktion Rückgabe wert) Kann mir das einer erklären??? Wenn ich die zeilen von der Funktion ausschließe läuft es. Aber warum läuft das auf jeder anderen version... |
|
|||
Hallo,
wie weit bist du mit dem Errortracking gekommen? Wenn der Fehler im Aufruf der Funktion Lot() liegt, dann teilst du womöglich hier durch 0. Ich schätze das du dir hier Zitat:
Bei Kommentar habe ich erst an Code:
// Singleline oder /* */ Multiline Verwendest du in der Funktion denn Variablen die auf 0 zeigen könnten? Bei dynamischer Lotberechnung vll. die AccounFreeMargin oder ähnliches? Zur Sicherheit kannst du diese ja in einer If-Bedingung ausfiltern. if (a==a && variableDieNullSeinKann != 0) s.l. Racki |
Lesezeichen |
Stichworte |
backtest, backtest fehler, backtesting, metatrader backtest, zero divide |
|
|