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
Ich habe gerade angefangen, MQL zu studieren, und hier habe ich einen EA geschrieben, der einen iMA zeichnet und eine Tangente (sehr nah) an den Chart im iMA an dem Punkt zeichnet, an dem der Mauszeiger auf der Zeitachse ist.
Problem eins. Der Expert Advisor ist SEHR langsam. Das bedeutet, dass die Tangente für eine lange Zeit neu gezeichnet wird und nicht der Bewegung der Maus folgt...
Sehen Sie sich meine Version an:
Auf meinem Laptop - alles fliegt!
Ich erhalte die Fehlermeldung 5040 (Corrupted parameter of type string), wenn ich zum ersten Mal eine Objekterstellungsfunktion aufrufe
Wenn vor einem Anruf setzen
nTL="";
Fehler 4002 (Ungültiger Parameter bei internem Aufruf der Client-Terminal-Funktion)
Wenn vor dem Anruf festgelegt
nTL="a";
wird das erste Objekt den Namen a tragen.
Ich nenne es folgendermaßen
Können Sie mir sagen, wo ein Fehler vorliegt?
In der alten Version.
hatte nie irgendwelche Ausfälle.
Ist es ein Fehler im Code oder im Terminal?
Können Sie mir sagen, wo der Fehler liegt?
Ich erhalte die Fehlermeldung 5040 (Corrupted parameter of type string), wenn ich das erste Mal die Funktion zur Objekterstellung aufrufe
Wenn vor einem Anruf setzen
Fehler 4002 (Ungültiger Parameter bei internem Aufruf der Client-Terminal-Funktion)
Wenn vor dem Anruf festgelegt
wird das erste Objekt den Namen a tragen.
Ich rufe folgendermaßen an
Können Sie mir sagen, wo der Fehler liegt?
Sind Sie besorgt, weil Get LastError etwas anderes als Null ausgibt? Wenn dies der Fall ist, sollten Sie nur dann einen Fehler anfordern, wenn die Funktion einen Fehler meldet. Und man sollte nicht nach einem Fehler am Ende des Plots fragen, da man sonst einen unsinnigen Wert erhält. So ist es in MT4, vielleicht ist es hier anders.
Pseudocode:
Ich erhalte die Fehlermeldung 5040 (Corrupted parameter of type string), wenn ich das erste Mal die Funktion zur Objekterstellung aufrufe
Wenn vor einem Anruf setzen
Fehler 4002 (Ungültiger Parameter bei internem Aufruf der Client-Terminal-Funktion)
Wenn vor dem Anruf festgelegt
wird das erste Objekt den Namen a tragen.
Ich nenne es folgendermaßen
Können Sie mir sagen, wo der Fehler liegt?
Versuchen Sie, Strings durch StringConcatenate() zu "kleben".
Ich weiß nicht, wo der Fehler liegt, aber die Handhabung von Objektnamen ist gelinde gesagt sehr fragwürdig.
Es ist nicht klar, warum Sie eine Zufallszahl im Objektnamen benötigen, dies könnte zu einem Fehler führen.
Gibt es eine andere Möglichkeit für ein paar hundert Objekte mit eindeutigen Namen?
(Eine Gruppe von Objekten sollte den gleichen Teil der Zeichenkette im Namen haben, um die Gruppe aufzulösen).
Sind Sie besorgt, weil Get Last Errors etwas anderes als Null ausgibt? Wenn dies der Fall ist, sollten Sie nur nach einem Fehler fragen, wenn die Funktion einen Fehler meldet. Und man sollte nicht nach einem Fehler am Ende des Plots fragen, da man sonst einen unsinnigen Wert erhält. So ist es in MT4, vielleicht ist es hier anders.
Sind Sie besorgt, weil Get Last Errors etwas anderes als Null ausgibt?
Nun, logischerweise, wenn die Funktion überhaupt den letzten Fehler setzt, dann sollte bei erfolgreicher Beendigung der Funktion ein Nullfehler oder der in der Dokumentation beschriebene Wert auftreten. Es gibt keinen anderen Weg.
Das heißt, wenn der Aufruf erfolgreich war und der Fehler nicht Null ist, muss dieser Fall in der Dokumentation beschrieben werden.
Auf diese Weise werde ich mir noch eine Woche lang den Kopf zerbrechen. Darf ich Ihnen noch ein paar Details nennen? (Sie dürfen grob sein :))
Normalerweise werden die Namen von Objekten desselben Typs aus einem gemeinsamen Teil gebildet, damit sie leicht zu entfernen sind ("nTL_" in Ihrem Fall) und sich unterscheiden. Ich verwende auch Modulbezeichner, wenn es mehr als eines dieser Module gleichzeitig auf der Karte geben kann.
Die Differenz kann alles Mögliche sein, sogar ein Zähler, den Sie jedes Mal erhöhen, wenn Sie ein Objekt erstellen. Aber es ist besser, logisch zu unterscheiden - Objektzeit, Objektkoordinate, das Ziel ist, garantierte Eindeutigkeit zu erreichen. Der Nebeneffekt ist, dass Sie durch erneutes Konstruieren eines Namens die Eigenschaften eines bereits erstellten Objekts ändern können.
Der Zufallsgenerator bietet diese "garantierte Einzigartigkeit" nicht.