- MT5 Klassen benutzen oder eigene Code
- OnTimer und OnTick
- Metatrader Kommunikation mit Webseite
Etwa mehr Info wäre schon ganz schön!
MT4 oder MT5, Desktop oder Mobil, PC oder VPS?
Screenshot?
Etwa mehr Info wäre schon ganz schön!
MT4 oder MT5, Desktop oder Mobil, PC oder VPS?
Screenshot?
Ich habe ein Bild hochgeladen wo man genauer sehen kann welches problem ich meine. Wenn oben dann steht "reagiert nicht" dann bleibt oft die einzige Moeglichkeit den Metatarder zwagsweise zu schliesen, das ist halt nicht so eine schoene Loesung, ich wuerde viel lieber irgendwie vermeiden das es zu dem Fehler erst kommt. Im Journa steht dann auch nur "shutdown by timeout" aber man weis so auchnciht genau woran hat es gelegen, ich kann nur vermuten das vielleicht Webrequest das problem verursachen, wenn zu viele Webrequest gesendet wurden und der server noch keine antwort gibt. Es gibt halt keine genauen Infos vom Metatrader aus welche Funktionen genau den Fehler produzieren.
Das liegt dann wohl an Indikator(en) oder EA(s), die alles blockieren, vielleicht durch eine Socketverbindung?
Was sagt der TaskManager?
Ja ich kann es auch nur vermuten, den ich habe einige Webrequest Funktionen in Gebrauch und der Metatrader selbst sagt jetzt nicht genau woran es liegt, es waere natuerlich hilfreich wenn der im Journal schreiben wuerde wegen dieser oder jener Funktion gibt es jetzt ein stackoverflow oder shutdown by timeout, aber er sagt es ja nicht genau warum. Glaubst du im Taskmanager wird sowas stehen? Das waere natuerlich Hilfreich fuer die Fehlersuche aber ich habe bisher nicht im Taskmanager geschaut. Es waere halt ganz schoen wenn man solche Shutdown by timeout oder stackoverflow errors vermeiden koennte, jedoch muss man jetzt irgendwie vermuten wodran es liegt, weil es so direkt keine genauen Infos vom Metatrader dazu gibt. ich hatte jetzt die Idee ob man vielleicht irgendetwas einbaut eine Art globale variable welche bei jedem Webrequest auf eine rueckantwort wartet und das man den anderen Webrequest im EA erst eine Freigabe gibt wenn die vorherige schon abgeschlossen ist, aber kann sein das die Webrequest sowieso schon auf diese Weise ablaufen, also nacheinander abgearbeitet werden und nicht asynchron. Und wenn man jetzt auch auf mehreren Charts so ein EA hat der Webrequest macht, weis ich jetzt auch nicht wie man da diese shutdown by timeout und stackoverflow fehler am besten vermeidet. Ich schaetze also auch schon irgendwie das es am meisten an den Webrequest liegen muss, ist aber auch nur meine vermutung.
Also: Warte bis es wieder passiert und schau in den Task-Manager.
Wenn das Terminal nicht mehr reagiert, liegt das mit an Sicherheit grenzender Wahrscheinlichkeit an dem Programm(en), die dort laufen - nicht am Terminal selbst.Die sind wohl schlecht programmiert, also schau, dass Du die weg bekommst.
Ich habe keine Ahnung, mir ist das nicht passiert.
Könnte aber auch an MQL_HANDLES_USED liegen (aus der Referenz):
MQLInfoInteger(): Die aktuelle Anzahl der aktiven Objekt-Handles. Dazu gehören sowohl dynamische (erstellt über new) als auch nicht-dynamische Objekte, globale/lokale Variablen oder Klassenmitglieder. Je mehr Handles ein Programm verwendet, desto mehr Ressourcen verbraucht es.
Aber ich kennen den Code nicht, also kann ich nicht mehr dazu sagen.
Ich habe keine Ahnung, mir ist das nicht passiert.
Könnte aber auch an MQL_HANDLES_USED liegen (aus der Referenz):
Aber ich kennen den Code nicht, also kann ich nicht mehr dazu sagen.
Es wuerde ja nicht viel bringen wenn ich mein ganzen EA Code hier poste und du dich durch den ganzen Code durchlest, aber ich kann es in ein paar Worten beschreiben, von oben nach unten betrachtet habe ich im EA circa 3 Webrequest Aufrufe, einige davon arbeiten jede Sekunde und andere nur ab und zu und auf circa 10 charts laeuft so ein EA, das bedeutet also wir haben die ganze Zeit eine Kommunikation ueber Webrequest mit einem Server von daher kann ich nur vermuten das es damit was zu tun haben muss, die Frage ist aber natuerlich jetzt koennte man da irgendwie etwas optimieren damit es nicht zu diesen shutdown by timeout error kommt. Also welche Moeglichkeiten der Optimierung stehen zur verfuegung, wuerde es etwas bringen wenn man im EA nur ein Webrequest gleichzeittig erlaubt bzw funktioniert die Webrequest Funktion nicht bereits auf diese Weise das alle Requests nacheinander abgearbeitet werden. Wenn du Erfahrung hast mit solchen sachen wuerde mich freuen von dir was zu lernen.
Lernen?
Wenn ein Programm nicht funktioniert (aber compiliert) dann wäre die erste Wahl der Debugger und dann jede Schritt entweder protokollieren, zB. mit __LINE__, damit man genau weiß, was als letztes noch ging.
Oder man schreibt es mit Comment() auf den Chart.
Dazu dies:
https://www.metatrader5.com/de/metaeditor/help/development/debug
Zur Fehlerbehebung von MQL5-Programmen (Debugging) : https://www.mql5.com/de/articles/654
Einführung in MQL5: Schreiben eines einfachen Expert Advisor und benutzerdefinierten Indikators, Siehe Ende: Starten und Debuggen https://www.mql5.com/de/articles/35
Die Fehlerverarbeitung und Protokollierung in MQL5: https://www.mql5.com/de/articles/2041
https://www.mql5.com/de/articles/272
Fehler finden und Protokollierung https://www.mql5.com/de/articles/150
Außerdem schienst Du nicht etwaige Fehler von WebRequest auszuwerfen, vielleicht ist denen Deine Frequenz zu hoch?
- www.metatrader5.com
Lernen?
Wenn ein Programm nicht funktioniert (aber compiliert) dann wäre die erste Wahl der Debugger und dann jede Schritt entweder protokollieren, zB. mit __LINE__, damit man genau weiß, was als letztes noch ging.
Oder man schreibt es mit Comment() auf den Chart.
Dazu dies:
https://www.metatrader5.com/de/metaeditor/help/development/debug
Zur Fehlerbehebung von MQL5-Programmen (Debugging) : https://www.mql5.com/de/articles/654
Einführung in MQL5: Schreiben eines einfachen Expert Advisor und benutzerdefinierten Indikators, Siehe Ende: Starten und Debuggen https://www.mql5.com/de/articles/35
Die Fehlerverarbeitung und Protokollierung in MQL5: https://www.mql5.com/de/articles/2041
https://www.mql5.com/de/articles/272
Fehler finden und Protokollierung https://www.mql5.com/de/articles/150
Außerdem schienst Du nicht etwaige Fehler von WebRequest auszuwerfen, vielleicht ist denen Deine Frequenz zu hoch?
Also ich dachte vielleicht gibt es da einige gute Vorgehensweisen bzw forgeschrittene Techniken wie man die Webrequest Funktion in Metatrader am besten einsetzt. Die Funktion gibt ja normalerweise auch eine Fehlermeldung zurueck wenn etwas nicht geklappt hat, aber dieser Fehler wenn der Metatrader shutdown by timeout erzeugt bei dem Fehler bekomme ich bisher keine genaueren infos woran es lag, aber ich finde du hast schon einige gute Tipps gegeben, wenn ich das naechste mal den EA optimiere probiere ich mal mit etwas mehr Debug Techniken ob ich damit weiter komme und genauere infos zu den Fehler finde. Im Prinzip laeuft alles soweit, aber wenn ich manchmal den PC auf standby habe oder Internetverbindung trenne und dann wieder alles connecte kommt es schon hin und wieder zu diesen overflow, ich schaetze es liegt wohl daran das die ganze Zeit Webrequest gesendet werden und keine Antwort vom Server kam oder sowas in der Art.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.