Die Sprache MQL5 von Grund auf selbst erlernen - Seite 65

 
MrBrooklin:

Hallo, Valery! Vielen Dank, Ihre Version "...wenn Positionen mit unserer Magie und an unserem Symbol gleich Null sind, prüfen wir die Zeit und eröffnen eine Position..." hat sich als die einfachste und effektivste herausgestellt. Ich habe es zur Bedingung der Überprüfung der Zeit && PositionTotal()==0 hinzugefügt und nur eine Position mit dem benötigten Betrag wird geöffnet!

Mit freundlichen Grüßen, Vladimir.


Leider gibt es in MKL keinen Befehl, der die Anzahl der Positionen auf dem Symbol angibt. TotalPosition gibt alle Positionen des Kontos für alle Symbole zurück. Um die Positionen des Symbols zu ermitteln, müssen Sie daher alle Positionen durchsuchen und die Position des Symbols mit unserer vergleichen.

Auch. Die Logik in der ersten Zeit, öffnen Sie es und überprüfen Sie das Vorhandensein von unserer Position, Trilling ist nicht immer optimal. Manchmal ist es besser, zuerst zu prüfen, ob die Position mit unserem Assistenten geöffnet ist, und wenn das der Fall ist, prüfen wir die Schließungszeit, oder wir suchen sie ab, oder wir prüfen die Öffnungszeit.

Ziel ist es, die Zahl der EA-Aktionen zu verringern.

 
Valeriy Yastremskiy:

Leider gibt es in MKL keinen Befehl, der die Anzahl der Positionen eines Symbols angibt. TotalPositions gibt alle Positionen auf allen Symbolen zurück. Um die Positionen eines Symbols zu ermitteln, müssen Sie daher alle Positionen durchsuchen und die Position des Symbols mit unserer vergleichen.

Auch. Die Logik in der ersten Zeit, öffnen Sie es und überprüfen Sie das Vorhandensein von unserer Position, Trilling ist nicht immer optimal. Manchmal ist es besser, zuerst zu prüfen, ob die Position mit unserem Assistenten geöffnet ist, und wenn das der Fall ist, prüfen wir die Schließungszeit, oder wir suchen sie ab, oder wir prüfen die Öffnungszeit.

Ziel ist es, die Zahl der EA-Aktionen zu verringern.

Alles ist klar, Valery! Ich werde versuchen, Ihre Tipps umzusetzen.

Mit freundlichen Grüßen, Vladimir.

 
Valeriy Yastremskiy:

Wenn die Positionen mit unserem Magik und auf unserem Symbol Null sind, prüfen wir die Zeit und eröffnen eine Position, wenn sie 1 ist, eröffnen wir keine Position, wir prüfen die Schlusszeit und schleichen, wenn sie mehr als 1 ist, alarmieren wir und arbeiten nicht. Wir können Schriftrollen verwenden oder prüfen, obf.

Hallo, Valery! Ich habe versucht, den Code ohne die Aufzählung der Positionen zu schreiben. Ich habe es geschrieben, überprüft und es funktioniert.

   if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
   && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
      OpenBUY();
Mit freundlichen Grüßen, Vladimir.
 
MrBrooklin:

Hallo Valery! Ich habe versucht, den Code ohne die Aufzählung der Positionen zu schreiben. Ich habe es geschrieben, überprüft und es funktioniert.

Mit freundlichen Grüßen, Vladimir.

Für den Anfang ist das in Ordnung, aber nur für den Anfang. Die Bedingungen sind zu streng. Wenn es keine Positionen auf unserem Symbol und keine Positionen mit unserer Magie auf allen Instrumenten gibt, dann scheint das normal zu sein. Im wirklichen Leben können Sie 2 Fenster auf einem Symbol geöffnet haben und ein anderes kann eine Position haben. Sie können einfach Magik verwenden, um zum Beispiel wie trishkin, die ersten 3 Ziffern - Symbol-Code und die nächsten 2 Ziffern - Skript/Berater-Code. Und der erste Schritt besteht darin, manuell zu kodieren oder Magie zu erzeugen, indem man Zeichenketten in Abhängigkeit vom Fenstersymbol und Skriptcode hinzufügt und dann die Zeichenkette in eine Zahl umwandelt.

Der klassische Weg ist die Suche nach allen Aufträgen oder Positionen.

Aber das ist zu viel für den Anfang.

Deshalb ist es für den Anfang in Ordnung.

 
Valeriy Yastremskiy:

Es ist in Ordnung, damit anzufangen, aber eben nur damit anzufangen. Die Bedingungen sind zu streng. Wenn es keine Positionen auf unserem Symbol und keine Positionen mit unserer Magie auf allen Instrumenten gibt, dann scheint das normal zu sein. Im wirklichen Leben können Sie 2 Fenster auf einem Symbol geöffnet haben, und ein anderes kann eine Position haben. Sie können einfach Magik verwenden, um zum Beispiel wie trishkin, die ersten 3 Ziffern - Symbol-Code und die nächsten 2 - Skript / Advisor-Code. Und der erste Schritt besteht darin, manuell zu kodieren oder Magie zu erzeugen, indem man Zeilen in Abhängigkeit vom Fenstersymbol und Skriptcode hinzufügt und dann die Zeile in eine Zahl umwandelt.

Der klassische Weg ist die Suche nach allen Aufträgen oder Positionen.

Aber das ist zu viel für den Anfang.

Deshalb ist es für den Anfang in Ordnung.

Vielen Dank, Valeriy! Das Durchsuchen aller Stellen ist einer der nächsten Schritte im Selbststudium, die ich sicherlich durchführen werde.

Mit freundlichen Grüßen, Vladimir.

 
Valeriy Yastremskiy:

Aus irgendeinem Grund werden alle Aufträge oder Positionen als klassische Überschreitung betrachtet.

Leider ist dies eine Tradition in der MQL-Gemeinschaft, alle EAs werden unter Berücksichtigung eines plötzlichen Verbindungsverlustes und/oder Stromausfalls eines PCs entwickelt.

Auf der einen Seite ist dies eine gute Methode, aber auf der anderen Seite führt dies zu großen Einschränkungen beim Schreiben des EA-Codes - der EA arbeitet nur mit Auftragsstämmen. Wenn Sie z. B. einen Martingal schreiben wollen, sucht der EA in der Historie nach dem letzten Auftrag mit seinen Stämmen, betrachtet den Gewinn/Verlust und entscheidet, ob das neue Lot erhöht werden soll oder nicht

... Im Allgemeinen warten seit der Gründung von MT alle darauf, dass das Internet verschwindet, und die Strategie selbst ist nicht mehr so wichtig ))

 
Igor Makanu:

Leider ist dies eine Tradition in der MQL-Gemeinschaft, alle EAs werden mit Blick auf einen plötzlichen Verbindungsverlust und/oder PC-Stromausfall entwickelt.

Auf der einen Seite ist dies eine gute Methode, aber auf der anderen Seite schränkt es den Stil des EA-Codes stark ein - EA arbeitet nur mit Auftragsstämmen. Wenn Sie z.B. einen Martingal schreiben wollen, wird EA die Historie nach dem letzten Auftrag mit seinen Stämmen durchsuchen und den Gewinn/Verlust betrachten und entscheiden, ob das neue Lot erhöht werden soll oder nicht

... im Allgemeinen seit der Gründung von MT - jeder wartet darauf, dass das Internet verschwindet, und die Strategie selbst ist nicht mehr so wichtig ))

Hallo Igor, vielen Dank für diese sehr nützlichen Informationen.

Mit freundlichen Grüßen, Vladimir.

 
Igor Makanu:

Leider ist dies eine Tradition in der MQL-Gemeinschaft, alle EAs werden mit Blick auf einen plötzlichen Verbindungsverlust und/oder PC-Stromausfall entwickelt.

Auf der einen Seite ist dies eine gute Methode, aber auf der anderen Seite schränkt es den Stil des EA-Codes stark ein - EA arbeitet nur mit Auftragsstämmen. Wenn Sie z.B. einen Martingal schreiben wollen, wird EA die Historie nach dem letzten Auftrag mit seinen Stämmen durchsuchen und den Gewinn/Verlust betrachten und entscheiden, ob das neue Lot erhöht werden soll oder nicht

... Im Allgemeinen wartet seit der Gründung von MT jeder darauf, dass das Internet verschwindet, und die Strategie selbst ist nicht mehr so wichtig ))

Schutz gegen Feuer, Überschwemmungen und Dummheit sollte immer sein!) Normalerweise beschränke ich mich auf Anschläge für den Fall, dass die Verbindung zur Deutschen Telekom unterbrochen wird.

 

Guten Tag und gute Laune an alle!

Ich lerne weiterhin die Programmiersprache MQL5. Ich habe mit einer detaillierten Untersuchung des for-Schleifenoperators begonnen, der laut der MQL5-Referenz, ich zitiere:

Der for-Schleifenoperator

Führt den Operator aus, bis der zu prüfende Ausdruck falsch wird. Der Ausdruck wird vor jeder Iteration überprüft


Ich gehe zur Beschreibung des for-Schleifenoperators und lese dort, dass:

Оператор for состоит из трех выражений и выполняемого оператора:

for(выражение1; выражение2; выражение3) 
   оператор;

Выражение1 описывает инициализацию цикла. Выражение2 - проверка условия завершения цикла.
Если оно истинно, то выполняется оператор тела цикла for. Все повторяется, пока выражение2 не станет ложным. 
Если оно ложно, цикл заканчивается и управление передается следующему оператору. 
ВыражениеЗ вычисляется после каждой итерации.

Operator führt einen Operator aus? GUT. Ich nehme den for-Schleifenoperator und führe ihn aus, um alle offenen Positionen auszuprobieren, und gebe dann die if-Anweisung mit den erforderlichen Bedingungen ein:

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
         && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
         OpenBUY();
     }

und dann passiert nichts. Die Kaufposition wird nicht eröffnet. Wie soll ich das verstehen? Ich muss etwas falsch machen, oder verstehe ich den Begriff der for-Anweisung überhaupt nicht richtig?

Lieber Experte! Bitte beraten Sie mich, aber nicht in Worten, nicht in einem korrigierten Code, sonst werde ich nie lernen, die MQL5 Programmiersprache.

Mit freundlichen Grüßen, Vladimir.
 
MrBrooklin:

Guten Tag und gute Laune an alle!

Ich lerne weiterhin die Programmiersprache MQL5. Ich habe mit einer detaillierten Untersuchung des for-Schleifenoperators begonnen, der laut der MQL5-Referenz, ich zitiere:

Der for-Schleifenoperator

Führt den Operator aus, bis der zu prüfende Ausdruck falsch wird. Der Ausdruck wird vor jeder Iteration überprüft


Ich gehe zur Beschreibung des for-Schleifenoperators und lese dort, dass:

Operator führt einen Operator aus? GUT. Ich nehme den for-Schleifenoperator und führe ihn aus, um alle offenen Positionen auszuprobieren, und gebe dann die if-Anweisung mit den erforderlichen Bedingungen ein:

und nichts passiert. Die Kaufposition wird nicht eröffnet. Wie soll ich das verstehen? Ich muss etwas falsch machen oder ich verstehe den Zweck des for-Schleifenoperators überhaupt nicht richtig?

Liebe Fachleute! Ich bitte Sie, mir ein Feedback zu geben, aber nicht in Worten, sonst werde ich die Programmiersprache MQL5 nie lernen.

Mit freundlichen Grüßen, Vladimir.

Der Schleifenoperator und die Operatoren im Schleifenkörper. Es handelt sich nicht um eine klassische russische Sprache.

Alles ist natürlich gut, aber wo ist der Iterator i im Schleifenkörper? Und um das Positionszeichen und sein magisches Symbol zu erhalten, muss es zuerst ausgewählt werden. Die Positionsbeschreibung ist eine Struktur (in MQL5 ist alles eine Struktur, Aufträge, Zeit und Geschäfte), und sie wird durch Auswahl ausgefüllt, durch den Iterator, der kein Positionsticket ist, sondern eine Positionsnummer. Und wir sollten daran denken, dass die Struktur der Positionsbeschreibung immer die letzte Wahl ist.

Grund der Beschwerde: