![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
Dies sind 2 Terminals auf 1 Computer. Auf alle Vorschläge des Terminals zur Aktualisierung antworte ich mit "Ja".
Die Datei wurde von einem anderen Computer als .mql5 auf Flash übertragen, von verschiedenen Editoren auf zwei Terminals geöffnet und kompiliert.
Wie auch immer, so wie ich es verstanden habe, muss ich MT aktualisieren...
Wenn Sie ein manuelles Upgrade durchführen, müssen Sie auch den Ordner /MQL5 übertragen, da er eine große Anzahl von Standardbibliotheken enthält, die Sie verwenden.
Da Sie nur die ausführbaren Dateien und Ihren Quellcode als mq5-Datei übertragen haben, haben Sie einen Fehler gemacht.
Hochgestuft auf bild 695. Beim Kompilieren von Object.mqh ist ein Fehler aufgetreten.
Hochgestuft auf bild 695. Beim Kompilieren von Object.mqh trat ein Fehler auf.
Wurde die Aktualisierung automatisch durchgeführt oder haben Sie die Dateien nur verschoben?
Wenn Sie es automatisch gemacht haben, wenn Sie Dateien in UserData speichern, kopieren Sie das Verzeichnis /MQL5 vom Programmstamm in das Datenverzeichnis (Sie können es über das Menü Datei öffnen).
Was ist aus dem Wirtschaftskalender geworden, gibt es ihn überhaupt?
Zusatzfrage: Auf welchen Daten basiert sie und wie kann sie an die DC "angeschlossen" werden?
Dies ist die Bedingung
if( mn < STP || mn >= STP )
- Aus welchem Grund ist er so formuliert? So wie er steht, funktioniert er für jeden mn und STP. Warum müssen wir sie überhaupt einführen? Und die nächsten beiden Optionen - es gibt einen spezifischen Ausschluss bestimmter Situationen.
Aber alles scheint logisch zu sein: eins + zwei == tri (ohne auf die Einzelheiten der Berechnungen eins, zwei und drei einzugehen) in allen drei Varianten.
Das ist es, wovon ich spreche. Ich möchte den gemeinsamen Raum (Fall 1) in zwei Gruppen (Fälle 2 und 3) unterteilen. Logischerweise müsste der Ausdruck eins + zwei == tri wahr sein, ist es aber nicht. In der ersten Bedingung ist man=148, in der zweiten 172. Auch kein Spiel für zwei und für drei. Ich weiß nicht, was das Problem ist.
Liegt das Problem vielleicht in einem gemeinsamen Zustand? Hängt dieser Code von etwas anderem ab?
Nur ein triviales Beispiel:
Bedingung (a): Öffnen, wenn der Balken auf H1 nach oben geht. TP=SL=100
Bedingung (b): Öffnen, wenn der Balken auf H1 sinkt. TP=SL=100
Zusätzliche Bedingung: Wir prüfen die Bedingungen nicht zum zweiten Mal, wenn wir bereits eine Position haben.
Wenn wir dann (a) plus (b) aktivieren, werden wir jedes Mal öffnen, wenn TP/SL ausgelöst wird.
Wenn wir (a) einbeziehen, werden wir alle ersten Male öffnen, plus (!!!!) ein paar weitere Male, wenn wir nicht geöffnet haben, weil wir vorher mit Bedingung (b) geöffnet haben
und nur die Bedingung (b) einzubeziehen, ähnlich wie
Schauen Sie genauer hin: Genau dieser Vergleich (eins + zwei == tri) wird für jede der Optionen durchgeführt.
Nun, das ist eine andere Frage, nämlich die, warum der Wert von eins in der ersten Variante nicht gleich dem Wert von eins in der zweiten und dritten Variante ist.
In der zweiten und dritten Variante führen Sie eine einschränkende Bedingung im Vergleich zur ersten Variante ein. Überlegen Sie, warum zum Beispiel bei der zweiten Variante der Wert von eins im Vergleich zur ersten Variante steigt. Aus dem zitierten Teil des Codes geht dies bisher nicht hervor.
Zum vorherigen Beitrag.
Im dritten Fall: eins=0, zwei=124, tri=124.
Die Daten stimmen nicht überein, sollten aber übereinstimmen, da der zweite und der dritte Fall separate Teile der ersten Bedingung sind. Ich verstehe nicht, wo das Problem liegt.
PS: Eingabe int STP=200;
1. Ich wähle sowohl Raum2 (eins) als auch Raum3 (zwei); 230 = 148 + 82, d. h. Raum2 (eins) = 148 und Raum3 (zwei)=82.
2. ... Sollte 148 bleiben, und wurde 172.
3. ... Sollte 82 bleiben, und wird 124.
Das ist es, was ich meine: Die Frage, die sich Ihnen stellt, ist,warum der Wert von einem aus der ersten Option nicht dem Wert von einem aus der zweiten und dritten Option entspricht.
Um einen Fehler in dieser logischen Annahme zu finden, schlage ich vor, ganz einfach zu tun: Drucken Sie jeden Fall der Erhöhung "spacesX" in allen drei Varianten, vergleichen Sie die Ergebnisse und analysieren Sie, aus welchem Grund "Werte von spaces2 und spaces3" nicht gleich sind.
Nachtrag. ilunga hat bereits angedeutet, dass einige Transaktionen beim Wechsel von einer Variante zur anderen verloren gehen können. Sie haben eine Killerfunktion/Methode OpenPosition() in den Körper des if()-Operators eingebettet. Je nach der vom if()-Operator überprüften Bedingung funktioniert es zu unterschiedlichen Zeiten.