Fehler, Irrtümer, Fragen - Seite 849

 
Heroix:

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.

 
OrderLots() und iClose als möglich in MQL 5???
 

Hochgestuft auf bild 695. Beim Kompilieren von Object.mqh ist ein Fehler aufgetreten.


 
denkir:

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).

 
An die Entwickler

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?

 
papaklass: Die Daten stimmen nicht überein, sollten es aber, denn der zweite und der dritte Fall sind separate Teile der ersten Bedingung. Ich verstehe nicht, wo das Problem liegt.

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.

 
papaklass:

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

 
papaklass: Logischerweise sollte der Ausdruck eins + zwei == tri richtig sein, aber bei mir funktioniert er nicht.

Schauen Sie genauer hin: Genau dieser Vergleich (eins + zwei == tri) wird für jede der Optionen durchgeführt.

papaklass: In der ersten Bedingung ist man=148, in der zweiten 172.

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.

 
papaklass:

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;

Korrektes Ergebnis bei Änderung des Datensatzes, da der Raum mn<STP ausgeschlossen wurde.

if( /*mn < STP || */ mn >= STP ){
 
papaklass: In meinen Beispielen mache ich nur Stichproben:

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.

Die Werte von Raum2 und Raum3 sollten konstant sein, da die Bedingungen für die Erlangung dieser Räume in allen drei Beispielen, die ich in den vorherigen Beiträgen genannt habe, gleich sind.

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.

Grund der Beschwerde: