Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1374
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
Jemand hat dich schlecht unterrichtet. Die Variable _LastError speichert den Wert, bis der nächste Fehler auftritt.
Nun, sehen Sie, am Anfang des Hauptcodes tritt folgender Fehler auf
ERR_INVALID_DATETIME
4010
Falscher Datums- und/oder Zeitwert
Und dann wird ein Objekt durch den Code erstellt und _LastError wird umgeschrieben in
ERR_OBJECT_NOT_FOUND
4202
Grafikobjekt nicht gefunden
Wenn die _LastError-Prüfung am Ende des Codes steht, wie ich es normalerweise tue, erhalte ich 4202 und ignoriere es einfach. Das heißt, der Fehler 4010 bleibt unbemerkt. Wo liege ich falsch?
Es ist eine Voraussetzung des Marktplatzes, dass keine Ausführungsfehler vom Server des Brokers empfangen werden.
Danke, das wusste ich nicht, ich dachte, alle Fehler seien verboten.
Am Anfang des Hauptcodes tritt zum Beispiel folgender Fehler auf:
ERR_INVALID_DATETIME
4010
Falscher Datums- und/oder Zeitwert
Und dann wird ein Objekt durch den Code erstellt und _LastError wird umgeschrieben in
ERR_OBJECT_NOT_FOUND
4202
Grafikobjekt nicht gefunden
Wenn die _LastError-Prüfung am Ende des Codes steht, wie ich es normalerweise tue, erhalte ich 4202 und ignoriere es einfach. Das heißt, der Fehler 4010 bleibt unbemerkt. Was mache ich falsch?
Danke, das wusste ich nicht, ich dachte, alle Fehler sind verboten.
Ganz genau. Sie haben nicht unrecht...
Hallo, kann mir jemand einen Tipp geben.
Ich schreibe die Zeitwerte jedes Balkens speziell in ein Array. Die Anzahl der Balken im Diagramm ist auf 3000 begrenzt.
Die Aufgabe:
- Um das Wertefeld bei jedem neuen Takt zu verschieben.
Ich kann es nicht so einstellen, dass es richtig funktioniert.
Ist es richtig, dass ich das Array bei einem neuen Takt verschiebe, wenn (this.m_rt-this.m_pc)=1?
Hallo, kann mir jemand einen Tipp geben.
Ich schreibe die Zeitwerte jedes Balkens speziell in ein Array. Die Anzahl der Balken im Diagramm ist auf 3000 begrenzt.
Die Aufgabe:
- Um das Wertefeld bei jedem neuen Takt zu verschieben.
Ich kann es nicht so einstellen, dass es richtig funktioniert.
Ist es richtig, das Array bei einem neuen Takt zu verschieben, wenn (this.m_rt-this.m_pc)=1?
D.h. die Größe des Arrays muss genau 3000 sein und bei Bildung eines neuen Taktes soll zuerst der Nullindex überschrieben werden ......... und am Ende ein neuer Wert geschrieben werden?
Wenn ich es richtig verstanden habe, was ist der Sinn der Schleife? Kopieren Sie einfach das Array selbst in den Null-Index, beginnend mit dem ersten, und schreiben Sie dann den neuen Wert in den letzten Index.
Wenn kein Objekt gefunden wird, ist dies der Objektsuchfehler...
ERR_OBJECT_NOT_FOUND
4202
Grafikobjekt nicht gefunden
Kein Grund für eine Warnung...
Ich habe ein paar Tests gemacht... Mir schwebt Folgendes vor. In MQL5 ist es nicht notwendig, ObjectFind() beim Erstellen von Objekten zu verwenden.
Das Objekt kann ohne vorherige Überprüfung seiner Existenz erstellt werden (nur mit ObjectCreate). Selbst innerhalb von OnTick verursacht ein solcher Code keine _LastError-Fehler.
Ich weiß nicht, wie es in den Tiefen des MQL5-Systemcodes implementiert ist, vielleicht gibt es eine Prüfung bereits dort hochgeladen, dass das Objekt nur erstellt wird, wenn es noch nicht vorhanden ist. Aber es stellt sich heraus, dass zumindest beim Erstellen eines Objekts innerhalb von MQL5, ObjectFind() nicht benötigt wird. Und alle seine Eigenschaften werden bei jedem Tick aktualisiert.
Das kann man von MQL4 nicht behaupten. Die Erstellung eines Objekts über ein bereits vorhandenes Objekt führt zu einem Fehler 4200 ("Das Objekt existiert bereits"). Das bedeutet, dass die Verwendung vonObjectFind() für seine Erstellungobligatorisch ist. Dies lässt mich mit einer einfachen Möglichkeit, seine Eigenschaften von konstanten Updates zu schließen, ohne _LastError Fehler zu erzeugen.
Bitte bestätigen Sie meine Schlussfolgerungen.
D.h. die Größe des Arrays sollte genau 3000 betragen und wenn ein neuer Balken gebildet wird, sollte der Null-Index zuerst überschrieben werden ......... und der neue Wert sollte am Ende hinzugefügt werden?
Wenn ich es richtig verstanden habe, warum brauche ich eine Schleife? Einfach, das Array selbst sollte in den Null-Index kopiert werden, beginnend mit dem ersten, und dann sollte der neue Wert zum letzten Index hinzugefügt werden.
Nun, ja, es ist klar, aber wenn es eine Pause gibt, zum Beispiel eine Verzögerung, zwei Takte erschienen, schreibe ich sie auf.
Vielen Dank, ich verstehe, ich werde es über CopyTime versuchen.
Ich habe ein paar Tests gemacht... Das geschieht folgendermaßen. In MQL5 ist es nicht notwendig, ObjectFind() beim Erstellen von Objekten zu verwenden.
Das Objekt kann ohne vorherige Überprüfung seiner Existenz erstellt werden (nur mit ObjectCreate). Selbst innerhalb des OnTick-Codes verursacht dieser Code keine _LastError-Fehler.
Ich weiß nicht, wie es in den Tiefen des MQL5-Systemcodes implementiert ist, vielleicht gibt es eine Prüfung bereits dort hochgeladen, dass das Objekt nur erstellt wird, wenn es noch nicht vorhanden ist. Aber es stellt sich heraus, dass zumindest bei der Erstellung eines Objekts innerhalb von MQL5, ObjectFind() nicht benötigt wird. Und alle seine Eigenschaften werden bei jedem Tick aktualisiert.
Das kann man von MQL4 nicht behaupten. Die Erstellung eines Objekts über ein bereits vorhandenes Objekt führt zu einem Fehler 4200 ("Das Objekt existiert bereits"). Das bedeutet, dass die Verwendung vonObjectFind() für seine Erstellungobligatorisch ist. Dies lässt mich mit einer einfachen Möglichkeit, seine Eigenschaften von konstanten Updates zu schließen, ohne _LastError Fehler zu erzeugen.
Bitte bestätigen Sie meine Schlussfolgerungen.
Nun ja, es scheint klar zu sein, aber wenn es eine Unterbrechung gibt, z.B. eine Verzögerung, zwei Takte erschienen, schreibe ich sie auf.
Danke, ich verstehe, ich werde es über CopyTime versuchen.
Wenn Sie das über CopyTime machen, ist das überhaupt kein Problem. Kopieren Sie einfach die aktuellen 3000 Balken und das war's.
Wie stelle ich die Höhe des regulären Trailing-Stops im Programmcode ein, wenn ich eine schwebende Order erteile oder eine Position vom Markt aus eröffne?
Wie dies manuell geschieht, ist klar. Programme für nicht standardmäßige Trailing Stops sind uninteressant.
Ich danke Ihnen im Voraus.
Warum funktioniert ein solcher Entwurf nicht? Wo liegt der Fehler... (das Protokoll ist leer)
Und der Yen, ebenfalls leer.