Fehler, Irrtümer, Fragen - Seite 2342
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Sind die Ressourcen auf diese Größe beschränkt?
Umso sinnvoller ist es, die zu übertragenden Daten zu verdichten.
In diesem Sinne war MT4 viel klüger als MT5 - es gab keinen Programmabsturz und man konnte den LastError analysieren.
Erstens: Das Programm nach einem nicht behebbaren kritischen Fehler weiter auszuführen, ist keine Weisheit, sondern Dummheit.
Zweitens: Ich habe PrintError() in MetaTrader 4 765x32 nicht erreicht, nachdem ich es ausgeführt habe
Drittens: Wenn Sie strict entfernen, hat er es erreicht, aber GetLastError() gibt 0 zurück, so dass es unklar ist, was zu analysieren ist
Wie kann der Benutzer über das Beenden des EA informiert werden?
In diesem Sinne war MT4 viel klüger als MT5 - es gab keinen Programmabsturz und man konnte den LastError analysieren.
Und wenn man auf ein Array zugreift, ist es dann nicht logisch, den Zugriffsindex zu überprüfen?
Erstens: Es ist Dummheit, nicht Weisheit, das Programm nach einem nicht behebbaren kritischen Fehler weiter auszuführen.
Zweitens, nachdem Sie dies in MetaTrader 4 765x32 ausgeführt haben, kommt PrintError() nie ins Spiel.
Drittens, wenn Sie strict entfernen, wird es 0 zurückgeben, aber GetLastError(), so ist es nicht klar, was zu analysieren.
Es gab keine Aufgabe, die zeigen sollte, dass MT4 besser ist als MT5. Ich musste ein praktisches Problem lösen.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Bibliotheken: HistoryTicks
fxsaber, 2018.12.10 13:55
Erhalten Sie eine Meldung, dass der EA aufgrund eines Arrays außerhalb des Bereichs gestoppt wurde (nicht die Schuld des EA-Autors). Zum Beispiel aufgrund von Speichermangel oder anderen Störungen. Das bedeutet, dass Sie sofort wissen, dass der EA abnormal gestoppt wurde, und es nicht zufällig erst einige Stunden später bemerken.
Es ist unangenehm, wenn der Expert Advisor angehalten hat, aber es wird nicht gemeldet.
Und wenn man auf ein Array zugreift, wäre es dann nicht logisch, den Zugriffsindex zu überprüfen?
Das ist nicht logisch.
Umso sinnvoller ist es, die zu übertragenden Daten zu verdichten.
Überprüft, 60Mb wird leicht in die Ressourcen geschrieben (MT4/5). Wenn es also eine Grenze gibt, dann ist sie höher.
Ein kleiner Punkt, aber immerhin.
Beim Senden an den Speicher - das erste Panel "Fixing" - funktioniert gut, und die zweite, Bestätigung, in meinem ersten Fall, nicht für die OK-Taste warten, sondern geht sofort aus, und zweitens - es zeigt nicht alle Dateien gesendet. Ich habe es aber überprüft - die Dateien werden normal gesendet.
Geht es nur mir so?
Es scheint korrekt zu sein, wenn nach dem Senden eine Liste der gesendeten Dateien mit einer Bestätigung angezeigt wird, dass alles gut gegangen ist.
Das macht keinen Sinn.
Und warum?
Es scheint mir, dass Sie den Index nicht überprüfen müssen, da es logischerweise keine Möglichkeit gibt, dass ein Index, der über die Grenzen des Arrays hinausgeht, erscheinen kann. Und selbst in diesem Fall sollten Sie vorsichtshalber ASSERT verwenden.
Und an den Stellen, an denen der Index von früheren Aktionen im Zusammenhang mit externen Parametern, Zitaten und Benutzeraktionen abhängt, sollte die Prüfung auf einen Indexbezug obligatorisch sein.
Ist das Ihrer Meinung nach nicht der Fall?
Und warum?
Ich habe den Eindruck, dass es nicht notwendig ist, den Index zu überprüfen, da es aufgrund der Logik des Programms keine Möglichkeit gibt, dass ein Index außerhalb des Arrays erscheint.
Ich stimme zu.
Und selbst in diesem Fall müssen Sie vorsichtshalber ASSERT verwenden.
Ich stimme dem nicht zu, da die Lesbarkeit des Codes stark leiden wird.
Und an den Stellen, an denen der Index von früheren Aktionen in Bezug auf externe Parameter, Zitate und Benutzeraktionen abhängt, muss die Prüfung des Bearbeitungsindex obligatorisch sein.
Ich verstehe nicht, was wir hier mit externen Parametern meinen. Jedes Mal, wenn Sie überprüfen, dass ArrayResize oder ArrayCopy normal abgeschlossen haben und nicht trivial Speicher läuft aus, wird es den Code durch ASSERT aufblähen, und das ist wirklich ein Chaos. Wenn Sie dies nicht überprüfen, wird der Expert Advisor unbemerkt angehalten. Bis jetzt habe ich nur eine Lösung gefunden - ArrayResize und ArrayCopy zu ersetzen.
Wer ist im Weg?
ChartSaveTemplate(chart_id,"\\Files\\MyPreferredTemplates\\cewl.tpl");
Die Funktion erstellt keinen Ordner, sie schreibt nur eine Vorlage, wenn bereits ein Ordner existiert .... Wenn der Ordner nicht existiert, wird der Fehler 4112
Die Ordner müssen also im Vorfeld vorbereitet werden...
Es ist interessant, die Funktion FileOpen kann keinen Ordner im Vorlagenordner erstellen und die Funktion ChartSaveTemplate erstellt keine Verzeichnisse...
Das heißt, wenn Sie Vorlagen in Unterordnern speichern möchten, dann erstellen Sie Ordner manuell....
Speicherplatzmangel
bei der Suche nach GlobalVariablen
entstehen kann?