Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Allgemeine Fragen (http://www.expert-advisor.com/forum/forumdisplay.php?f=103)
-   -   Zero Divide beim Backtest (http://www.expert-advisor.com/forum/showthread.php?t=1749)

lulipot 07.12.11 19:42

Zero Divide beim Backtest
 
Hallo

habe ein Backtest gemacht und er zeigt mir Zero Divide Fehler an.
Weiß jemand was es bedeutet?


mfg
gio

Programmierer 07.12.11 21:45

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.

lulipot 08.12.11 18:47

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

Racki 09.12.11 00:11

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

Crashbulle 09.12.11 10:37

@ lulipot

Man kann fast jedes Prog/EA von einer ex4 zu einem mq4 wandeln. Nur bei Kaufprog's steht das Recht dagegen, man kann es aber auch. Wenn du mir eine Datei schickst, bekommst du zwei Dateien zurück.
Aber bei einem Kaufprg dürfte ein "Div durch null" eigendlich nicht vorkommen.

Programmierer 09.12.11 11:30

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.

Racki 09.12.11 20:43

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

Bohne 30.12.11 01:27

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...

Racki 31.12.11 01:39

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:

"\n Your Risk = ", 100.0 * risk_factor, "% ", "TradingLot = ", Lot(),
einen string zusammenbaust.
Bei Kommentar habe ich erst an
Code:

// Singleline oder /* */ Multiline
gedacht ;)

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

Bohne 31.12.11 06:41

:D
ich habs, Thanks!!
Der satz hat geholfen
HTML-Code:

Verwendest du in der Funktion denn Variablen die auf 0 zeigen könnten?
Lag an Lotsteps, MODE_MAXLOT & MODE_MAXLOT & MODE_LOTSTEP.
Da ich ein blanko Mt4 benutze... :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum