Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Im Gegensatz zu MT4 protokolliert MT5 die Eingabeparameter von Expert Advisors nicht, wenn sie gestartet oder geändert werden. Daher ist es unmöglich, anhand des Protokolls festzustellen, was im Terminal gestartet wurde.
Eine ähnliche Funktion kann diese Situation korrigieren.
Anwendung
Ergebnis
Bei Skripten funktioniert es leider nicht. MT4 gibt Eingabeparameter von Skripten von sich aus aus, MT5 nicht.
Ich kann einen EA, der DLLs verwendet, nicht mit dieser Bibliothek ausführen. In den Protokollen wird das Laden von DLLs nicht erlaubt. Gibt es etwas, das dagegen getan werden kann?
Es klappt.
Etwas, das mich stört, ist das Prinzip der Verwendung einer Konstante als Name einer temporären Vorlage in einer Zeichenfolge:
Es enthält einen möglichen Fehler im Zusammenhang mit Multithreading. Wenn ein und dasselbe Programm, das auf verschiedenen Charts läuft, versucht, die Bibliothek zu verwenden, kann es zu einer Kollision mit der Vorlagendatei kommen - entweder ein Zugriffsfehler oder zwei identische Kopien der Vorlage werden stillschweigend gestartet, obwohl unterschiedliche verwendet wurden.
Sie sollten einen temporären Namen generieren, vorzugsweise in der Form (es war __FILE__, "strike" funktioniert hier nicht in html) MQL-Programmname + Zeitstempel + Zufall.
Es ist auch wünschenswert, ehemalige Dateien bei jedem nächsten Aufruf, z.B. in 1 Tag, automatisch per Timeout zu löschen (durch Auswertung eines Teils des Zeitstempels), damit sie nicht die Ordner vermüllen.
PS. Der Fall ist sogar noch schlimmer, denn __FILE__ ist eine Quelldatei und ist immer gleich Expert.mqh - in allen Programmen, die sie verwenden! Der Satz mit dem Namen wurde korrigiert.Dies geschah ganz bewusst unter Abwägung aller Vor- und Nachteile.
Es ist sinnvoll, eine Vorlage sofort nach ihrer Erstellung zu löschen und nicht nur einmal am Tag. Allerdings ist es praktisch, immer die zuletzt gespeicherte Vorlage zur Hand zu haben, um besser analysieren zu können, was passiert.
Dies geschah mit Bedacht und unter Abwägung der Vor- und Nachteile.
Es ist sinnvoll, eine Vorlage sofort nach ihrer Erstellung zu löschen und nicht einmal am Tag. Allerdings ist es praktisch, immer die zuletzt gespeicherte Vorlage zu haben, um besser analysieren zu können, was passiert.
Ich kann keine Vorteile für die derzeitige Methode nennen. IMHO habe ich eine korrektere Methode vorgeschlagen.
Es ist sinnvoll, sofort zu löschen, wenn Sync = true ist (was die Standardeinstellung ist), aber so ist es jetzt nicht implementiert - die Datei bleibt erhalten.
Ich kann mir kein einziges "Pro" für die derzeitige Methode vorstellen. IMHO, eine korrektere Methode vorgeschlagen.
Die Pros sind die praktische Anwendung. Ich habe Terminal mit zuvor gestarteten Expert Advisors gestartet, die beim Start sofort in ihre Vorlagen gingen. Sie funktionierten perfekt. Ich bin sicher, dass es möglich ist, die theoretische Kollision zu reproduzieren. Aber in meinem Fall ist es weit von der Praxis entfernt. Wenn Sie sich entscheiden, eine universelle Lösung zu schaffen, teilen Sie sie hier. Ich werde die Bibel aktualisieren. Ich bin nicht bereit, es selbst zu tun.
Es macht Sinn, auf einmal zu löschen, wenn Sync = true (was der Standard ist), aber es ist jetzt nicht so implementiert - die Datei bleibt.
Ja, ich lösche sie nicht mit Absicht.
Für - dies ist eine praktische Anwendung. Ich startete Terminal mit zuvor gestarteten Expert Advisors, die beim Start sofort in ihre Vorlagen gingen. Sie funktionierten perfekt. Ich bin sicher, dass es möglich ist, die theoretische Kollision zu reproduzieren. Aber das ist in meinem Fall weit von der Praxis entfernt. Wenn Sie sich entscheiden, eine universelle Lösung zu schaffen, teilen Sie sie hier. Ich werde die Bibel aktualisieren. Ich bin nicht bereit, es selbst zu tun.
Ja, ich lösche es nicht mit Absicht.
Ich verstehe immer noch nicht, warum der konstante Name Expert.mqh.tpl "praktischer" (praktischer?) ist als Vorlagen, die nach dem Programm benannt sind, das sie erzeugt? Nehmen wir an, es gibt ein Programm A.mq5 und B.mq5, die bibla verwenden. Wenn sie Vorlagen mit ihren eigenen Namen generieren würden, wäre es erstens praktischer, den letzten "Fingerabdruck" der Aktionen von _jedem_ Programm zu haben, anstatt eines durch das andere zu überschreiben. Zweitens könnte man anhand des Namens sofort erkennen, wer der Generator ist (besonders nützlich, wenn es sich um ausländische Programme handelt). Jetzt kann man das in der Datei Expert.mqh.tpl erst erkennen, wenn man hinein geht. Die universelle Lösung, die ich angegeben habe, besteht darin, den Namen des MQL-Programms+Zeitstempel+Zufall zu nehmen. Und ich sehe nicht die Notwendigkeit, die Datei auf sync=true zu belassen. Ich denke, dass alles schon vor langer Zeit getestet und getestet wurde. Für den Fall, dass Fehler auftreten und eine Fehlersuche erforderlich ist, gibt es die Option sync=false. Dann sollte die Datei belassen werden. Ich denke, alles ist logisch. Und die Bearbeitungen sind einfach.
Ich stimme zu, dass die Kollision in der Praxis selten vorkommt, es sei denn, jemand benutzt die Biblio parallel in mehreren Programmen. Ich habe sie nicht, aber ich habe gerade einen kurzen Blick in den Code geworfen, und dabei ist mir die Datei Expert.mqh.tpl im Ordner Files ins Auge gefallen. Alles ist rein imho.