Inhalte aufrufen

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

2 EA's auf dem gleichen Chart/Symbol

- - - - -

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

  #1
OFFLINE   Elatos

Hallo,

 

ich stehe mal wieder vor einem kleineren bis mittelschweren Rätsel.

 

Und zwar lasse ich das Symbol() (EURJPY) auf zwei Charts laufen. Auf beiden Charts läuft jeweils ein EA und beide EA's sind mit einander verknüpft (über GlobaleVariablen).

 

Nun ist schon ein paar mal ein Fehler entstanden, den ich mir bisher noch nicht recht erklären konnte. Er taucht auch nicht ständig auf sondern nur selten. Auch in den Print()-Ausschriften habe ich nichts gefunden, bin aber kontinuierlich bemüht, mögliche Fehlerquellen in die Anzeige aufzunehmen.

Der Fehler äußerte sich nun beim letzten Mal so, dass einer der EA's scheinbar einfach aufhörte zu laufen. Also, als wenn er in einer Schleife hängengeblieben wäre (solche habe ich aber eigentlich nicht drinne) und die Globalen Variablen nicht mehr abgearbeitet hat. Besonders fraglich und hinweisend ist für mich, warum der EA beim Entfernen von dem betreffenden Chart die Funktion int deinit() nicht abgearbeitet hat. Ich bin zwar bisher noch nicht dazu gekommen, die Print()-Ausgaben genauer zu analysieren, aber die deinit()-Anweisungen wurden definitiv nicht durchlaufen und das obwohl der EA noch als arbeitend angezeigt wurde (Smiley in der Ecke hat gelacht) und in der Ausschrift auch die Meldung "uninit reason..." erschien.

 

Könnte es sein, das ich bei EA's, die mit dem gleichen Symbol arbeiten auf irgendwelche Besonderheiten achten muss? Etwa, dass Variablenbezeichnungen nicht gleich sein dürfen (bei GlobalenVariablen ist das klar) oder...???

 

Herzlichen dank, wie immer, für alle Antworten und Anregungen von euch.



  #2
OFFLINE   CashDigger

Wo es hängen bleibt müsste man eingrenzen können indem man noch viel mehr Print()-Ausgaben macht an unterschiedlichsten Stellen. Kann man zB nummerieren und wenn zB bei hängen bleiben die letzte Ausgabe 27 ist, dann weiß man, dass der Fehler im Code zwischen Ausgabe 27 und 28 liegen muss. Sollte es in einer Schleife hängen könnte man auch mal die CPU Auslastung checken. Ein mql-Programm hat normal kein Threading daher wäre dann ein CPU-Thread ausgelastet. Bei einem 8Thread-CPU wäre dann die CPU Auslastung immer 13%, bei einem 4Thread-CPU 25%. C$D

  #3
ONLINE   traderdoc

Man könnte selbst ein und denselben EA mit haargenau denselben Variablenwerten auf demselben WP und TF mehrfach laufen lassen.

Ob das jetzt sinnvoll ist, spielt erst einmal keine Rolle.

Ich habe noch nie gesehen, dass ein EA vom Chart genommen wurde, ohne die OnDeinit()-Funktion zu durchlaufen.

 

In Deinem Text steckt aber auch Widersprüchliches drin:

 

"...warum der EA beim Entfernen von dem betreffenden Chart die Funktion int deinit() nicht abgearbeitet hat. Ich bin zwar bisher noch nicht dazu gekommen, die Print()-Ausgaben genauer zu analysieren, aber die deinit()-Anweisungen wurden definitiv nicht durchlaufen und das obwohl der EA noch als arbeitend angezeigt wurde (Smiley in der Ecke hat gelacht) und in der Ausschrift auch die Meldung "uninit reason..." erschien..."

 

Wenn der Smiley rechts oben noch grinst, dann wurde der EA auch nicht vom Chart entfernt.

Das die Meldung "uninit reason ..." erscheint, muss ja nicht zwangsläufig mit dem Entfernen vom Chart zusammenhängen. Je nachdem, welche Zahl dahinter erscheint,

kann auch ein Recompilieren, TF-Wechsel, Symbolwechsel, Änderung der Eingabeparameter, Accountwechsel oder neues Template zu dieser Meldung führen.

Wenn allerdings "uninit reason 1" erscheint, dann wurde der EA tatsächlich vom Chart entfernt.

 

traderdoc


  • Katakuja gefällt das
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #4
OFFLINE   Elatos

Danke euch beiden für eure Antwort.

 

Ich habe die Ursache/n gefunden:

 

 

0 15:13:06.648 46.4.1 EURJPY.m,M1: ---->Close - SystemVerwalterSchließung_System - KleinstMindAbst
2 15:13:11.877 46.4.1 EURJPY.m,M1: close #196606170 sell 0.01 EURJPY.m at 129.241 at price 129.373
2 15:13:19.817 46.4.1 EURJPY.m,M1: close #196604044 buy 0.01 EURJPY.m at 129.237 at price 129.353
0 15:13:19.817 46.4.1 EURJPY.m,M1: ***Ticket(196604044.0)
2 15:13:21.644 46.4.1 EURJPY.m,M1: open #196607117 sell 0.01 EURJPY.m at 129.347 ok
0 15:13:21.644 46.4.1 EURJPY.m,M1: ***Open GlobalTauschTrade - Sell mit MagNum(2222) - Speicherung an Stelle des ehemaligen Trades folgt
0 15:13:21.644 46.4.1 EURJPY.m,M1:  
0 15:13:21.644 46.4.1 EURJPY.m,M1: ***ArrayDaten (Normal_Array - auch VermittlerTrades) VOR Umlegung - TicketAlt(196606170):
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#17: 196606961.0, SchNr: -11.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#16: 196606937.0, SchNr: 11.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#15: 196604839.0, SchNr: 10.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#14: 196601288.0, SchNr: 8.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#13: 196576471.0, SchNr: 6.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#12: 196520090.0, SchNr: -2.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#11: 196469277.0, SchNr: -6.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#10: 196429648.0, SchNr: 7.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#9: 196601451.0, SchNr: -7.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#8: 196443291.0, SchNr: 9.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#7: 196598554.0, SchNr: -9.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#6: 196539056.0, SchNr: 2.0, MagNum: 1313.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#5: 196569578.0, SchNr: -5.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#4: 196229480.0, SchNr: -3.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#3: 196502167.0, SchNr: 3.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#2: 196226714.0, SchNr: -1.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#1: 196469460.0, SchNr: 1.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
0 15:13:21.644 46.4.1 EURJPY.m,M1:Ticket#0: 196448316.0, SchNr: 5.0, MagNum: 2222.0), SchlERl(0.0), Geschlossen?(0.0)
1 15:13:21.647 46.4.1 EURJPY.m,M1: array out of range in '46.4.1.mq4' (4325,22)
2 15:13:29.231 46.4.1 EURJPY.m,M1: close #196546053 buy 0.01 EURCHF.m at 1.15853 at price 1.15936
0 15:13:29.231 46.4.1 EURJPY.m,M1: ***Ticket(196546053.0)
2 15:13:37.706 46.4.1 EURJPY.m,M1: close #196604025 sell 0.01 EURAUD.m at 1.57911 at price 1.57914
0 15:13:37.706 46.4.1 EURJPY.m,M1: ***Ticket(196604025.0)
 
 
Beim Testen mit dem Strategietester tritt dieser Fehler niemals auf, aber da ist es ja auch nicht möglich, mehrere Charts einzubeziehen. Das macht ihn so lästig. Und außerdem gibt es da keine ServerUnterbrechungen u.ä.
 
Wenn dieser Fehler allerdings doch im Strategietester auftritt, dann wird das Programm sofort abgebrochen und zwar in jedem Fall OHNE die deinit()-Funktion zu durchlaufen.
Könnte es doch so sein, dass das in diesem Fall auch beim Life-Betrieb so geschieht und dennoch das schöne Smiley sein Lächeln behält? Da ich allerdings gar nicht mit diesem Fehlerhergang gerechnet habe, könnte es sein, dass das Smiley auch nen Flunsch gezogen hat und ich habe es beim Entfernen gar nicht gemerkt.
 
 
Wenn ich noch etwas weiter zurück schaue, finde ich:
 
0 15:04:06.443 46.4.1 EURAUD.m,M1: ***o - Error: 128)
0 15:04:18.685 46.4.1 EURJPY.m,M1: GetLastError()(6), Ticket(196552084)
0 15:04:18.685 46.4.1 EURJPY.m,M1: ***Ticket(196552084.0)
0 15:04:18.685 46.4.1 EURAUD.m,M1: ***o - Error: 6)
0 15:04:18.690 46.4.1 EURJPY.m,M1: ***o - Error: 6)
0 15:04:18.690 46.4.1 EURCHF.m,M1: ***p - Error: 6)
2 15:04:21.621 46.4.1 EURJPY.m,M1: close #196606170 sell 0.01 EURJPY.m at 129.24100 at price 129.25500
0 15:04:21.622 46.4.1 EURJPY.m,M1: ***Ticket(196546053.0)
 
Daran könnte es liegen oder es ist ein zufällig entdeckter neuer Fehler. Das kommt vor :)
 
Falls also gerade kein Trade geöffnet/geschlossen werden kann, dann gibt es Schwierigkeiten mit dem zugehörigen Array. Dann wird der Eintrag dort falsch geändert und später wirkt sich das aus. Das muss ich nun zurecht biegen.
Error Nr. 6 leuchtet mir ein - No connection with TradeServer
aber Error Nr.128 - Trade timeout - nicht. Bedeutet das, dass die Anforderung für den neu zu öffnenden/schließenden Trade zu lange warten musste und deshalb verworfen wird? Wartet das Programm an einer solchen Stelle eigentlich, bis der Trade geöffnet/geschlossen ist, bevor es weiter fortfährt? Bzw. fährt es fort, wenn der Fehler Nr. 128 kommt...?

Bearbeitet von Elatos, 05 July 2018 - 12:40 Uhr,


  #5
ONLINE   traderdoc

Dann fasse ich mal zusammen:
Die OnDeinit()-Funktion wurde deshalb nicht durchlaufen, weil prinzipiell ein Array-Fehler (wie auch ein Zero Devide)
zu einem harten Abbruch der EA-Funktion führt.
Es bleibt aber dabei, dass nach dem "harten" und willentlichen Entfernen! eines EAs von Chart die OnDeinit()-Funktion sehr wohl
durchlaufen wird.

D.h. hier ist kommunikativ so einiges durcheinander geraten, was die Fehlersuche halt immer schwierig gestaltet.
Deshalb gibt es ja die Log-Dateien und wem die nicht ausreichen, der sollte so viele Print-Zeilen einfügen wie nötig, um an die
entscheidende Stelle des Fehlers zu gelangen. Fehlersuche kann so einfach sein, wenn man weiß, wonach man sucht und mit
welchen Mitteln man wo sucht.

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



Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer