Inhalte aufrufen

  • Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Backtest und Compiller differenzen

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
14 Antworten zu diesem Thema

  #1
OFFLINE   White_Deere

Hallo Zusammen,

Heute viel mir etwas erschreckendes auf. Ich hatte gestern den Quelltext (Code und alle Variablen) von einem bestehenden EA in einen neuen EA kopiert und einen neuen Namen gegeben. Das original lief auf dem Compiller fehlerfrei. Die Kopie hatte 4 fehlerquellen drin, obwohl nach mehrfachem kontrollieren alles identisch ist. Es waren meiner Meinung nach kleine ergänzungen die aber im Backtest verherende auswirkungen hatten. Die differenz zwischen original und kopie reicht von 725% Gewinn im Original, zu 100% Verlust in der Kopie. Wie kann es sein, dass ein und der selbe Quelltext im einen Compiller fehler beinhaltet während der andere Fehlerfrei läuft?



  #2
ONLINE   alexf82

so ganz versteh ich jetzt nicht, worauf du hinaus willst!?

 

zum einen schreibst du, sie sind identisch, aber dann gibt es doch kleine Änderungen!?

Wenn es Änderungen gibt, kann es natürlich massive Unterschiede im Ergebnis geben.

 

Dann schreibst du, dass du 4 Komplierfehler hast. Da stellt sich mir die Frage, wie startest du den Tester, mit nicht kompiliertem EA!?

 

Zudem ist hinlänglich bekannt, dass der MT4 Tester nicht unbedingt der beste ist. Ich hatte sogar schon bei komplett gleichen Einstellungen im Backtest unterschiedliche Ergebnisse (wenn auch nicht so gravierend)....



  #3
OFFLINE   White_Deere

Also... Das Original hatte keine Compillerfehler, worauf ich die Kopie machte. Dann, beim kompilieren der Kopie tratten plötzlich fehlermeldungen auf. Diese waren deklarationsfehler die mit dem Code oder der Datenbearbeitung nichts zu tun haben. Dennoch funktioniert ein Backtest mit fehlremeldungen nicht. Diese Fehler behoben... ergab der Backtest weitaus schlechtere Ergebnisse.

 

Fehlermeldungen waren:

nicht deklarierte "res"

nicht deklarierte "i"

 

Diese waren aber auch im Original nicht mehr oder weniger deklariert als in der kopie. Ich glaube kaum dass diese deklarationen einen massgeblichen Beitrag am Ergnis stellen.

Dass ein Backtest etwas abweichungen haben kann selbst wenn die gleichen daten durchlaufen ist mir klar. Aber so massive... das ist ja das komplette Gegenteil.

 

Das fragwürdige ist... Warum funktioniert ein und der selbe Code mal und mal nicht?



  #4
OFFLINE   traderdoc

Ja, verstehe ich auch nicht ganz. Wenn kleine Veränderungen vorgenommen wurden, dann kann der Code
nicht mehr identisch sein, und nun kommt es auf die Art und Weise der Veränderungen an, ob die zu diesem
Ergebnis geführt hatten.
Im einfachsten Falle entfernst Du diese kleinen Änderungen und compilierst neu. Und wenn Du ganz sicher bist,
dass der Code dann wirklich 100% identisch ist, dann kann da auch kein Fehler plötzlich auftauchen.
Dafür kenne ich die 0 und 1 inzwischen zu gut?
Und wie @alexf82 bereits richtig bemerkte, kann ein EA nicht im Tester und auch nicht im Chart benutzt werden,
wenn der Compiler Fehler! ausgibt und ich rede hier von Fehlern und nicht von Warnungen. Mit denen würde der
EA allerdings laufen.

War in beiden Versionen die Compilerdirektive #property strict gesetzt oder in beiden nicht?

traderdoc

Bearbeitet von traderdoc, 09 March 2018 - 17:39 Uhr,

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #5
OFFLINE   White_Deere

Ja genau den hab ich übersehen. Einer mit und der andere ohne. Hab jetzt was über #property strict gelesen. Strict bezieht sich ja mehr auf die aufteilung der deklarationen der Variablen. Aber nur an der deklaration der Variable kann sich ein ergenis doch nicht so sehr verändern. Habs geändert und es ist tatsächlich dieses Sch.... #property strict gewesen. Mir erschliesst sich der grund nicht. Zumal ich die deklarationen innerhalb des jeweiligen befehlsblocks vorgenommen habe. Also sollte sich doch, rein von der abfolge und rechenbarkeit, nichts verändern. Warum denn so gewaltige Unterschiede im Ergebnis? Soll ich mit oder ohne strict in den handel?



  #6
OFFLINE   traderdoc

Es ist immer besser, das

#property strict

zu setzen, weil damit auch Fehler gefunden werden, die ohnen dieses Setzens nicht gefunden worden wären.

Ganz krass bei Array-Funktionen. Ohne #property strict wird z.B. bei einem "Array out of range" kein critical error

ausgegeben, das Programm läuft weiter - fatal!!

Mit #property strict würde bei einem "Array out of range" das Programm sofort abgebrochen!!

 

Lies am Besten mal unter F1 des MetaEditors unter #property strict -> im Link "Updated MQL4" nach!!

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #7
OFFLINE   White_Deere

Ok, mach ich. Bin zwar beim ersten mal nicht ganz schlau draus worden aber setz mich da nochmal hin bis ichs kappier. Also dann mit #property strict... leider das mit 100% Verlust! Egal, übung macht den Meister! Und schon wieder was gelernt.

 

Besten Dank



  #8
OFFLINE   traderdoc

Na!, 100% Verlust werden es schon nicht sein.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #9
OFFLINE   White_Deere

Doch Totalverlust! Das ist ja das was mich so erstaunt dass #property strict so einen massiven Einfluss hat. Obwohl meine Compilerfehler "nur" deklarationen waren. Bei "Array out of range" was du erklärt hast, kann ich den einfluss verstehen durch #property strict, aber in meinem Fall sehe ich die Logik nicht in diesem Ausmass. Das wäre ja so, als würde ein komplett neues programm laufen das alles umdreht.



  #10
OFFLINE   White_Deere

ich musste lediglich "bool res;" und "for(int i=OrdersTotal()-1;i>=0;i--)" ergänzen, jedoch ohne klammern zu setzen oder Parameter verstellen oder sonst was. Ich glaube nicht dass diese zwei zeilen ein Handelssystem derart aufmischen kann.
 



  #11
OFFLINE   traderdoc

Nun gut, das ist jetzt müßig, ohne den gesamten Code zu sehen, darüber zu philosophieren, wo
der Performancekiller sitzt. Das müsste man sich dann mal im Detail anschauen.

traderdoc
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #12
OFFLINE   White_Deere

Also... ich hatte gut zeit um mich damit genauer zu befassen. Damit der Code mit #property strict richtig funktioniert muss man die Gliederung der Befehlsblöcke ändern. War ganz schön knifflig aber der aufwand hat sich gelohnt. Habe wieder die ganze Performance drin. #property strict wird vom compiler etwas anders gelesen als der normal Modus. Die gliederung der Befehlsblöcke ist absolut relevant und kann eben zu komplett anderen ergebnissen führen. Der EA würde auch die Signale wie sie in der Befehlsblockabfolge gelistet ist, ausführen.



  #13
OFFLINE   kamü

Hallo zusammen,

ich habe beim Aufräumen meiner Festplatte einen EA gefunden, der beim Backtesten gute Ergebnisse zeigt. ( Bild anbei)

- Leider handelt er nicht. ( Smile lacht, Autotrading ist aktiviert.)

 

Vielleicht kann einer der Programmierer mal den EA anschauen was da faul ist.

Spende ans Forum oder Bezahle nach Aufwand.

 

Viele Grüße

 

 

 

 

 

Dateianhang



  #14
OFFLINE   €urix

Der EA funktioniert, ich habe nur die Slipage erhöht, da beim DAX die Kommastellen anders berechnet werden.

 

Please Login or Register to see this Hidden Content

 

Please Login or Register to see this Hidden Content

  336.23K   0 Anzahl Downloads

 

Schon mal ein Danke im Voraus für die Spende ;D


  • Bölldar gefällt das

KLICK MICH und MICH und wenns leicht geht MICH AUCH NOCH :Whistle:


Da will man Putzen, stolpert aber so ungünstig, dass man plötzlich zugedeckt im Bett liegt. Da kann man echt nichts machen


  #15
OFFLINE   kamü

€urix vielen Dank.

Werde den ersten Gewinn Spenden.





Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer