Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 100
![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
Ein solcher Ausrutscher kann Dutzende von Millisekunden in Anspruch nehmen.
Ein solcher Ausrutscher kann Dutzende von Millisekunden dauern.
Was bedeutet das?
Ich erinnere mich, dass vor langer Zeit Sleep() bei der Parallelisierung von Prozessen erwähnt wurde
Was soll das bedeuten?
Genau das hat er gesagt.
Ein solcher Ausrutscher kann Dutzende von Millisekunden dauern.
Nicht zehn, sondern 15,625 Millisekunden.
Ich benutze die Konstruktion schon seit langem:
Nicht zehn, sondern 15,625 Millisekunden.
Ich verwende das Design schon seit langem:
Ergebnis
Ergebnis
Berechnen Sie die durchschnittliche Zeit.
Akkumulieren Sie SleepTime und teilen Sie es dann durch die Anzahl der Iterationen nach dem Ende der Schleife.
Andernfalls sieht das Ergebnis, das Sie gerade präsentiert haben, für unreife Gemüter erschreckend aus. Gleichzeitig wird auch die Mindestzeit angezeigt.
PS. Die Funktion Sleep() in MQL5 ist keine Umleitung auf die Win-Api-Funktion ::Sleep(). Oder besser gesagt, wenn der Wert unter 100 liegt, handelt es sich um eine Weiterleitung. Aber über 100 ist es eine Schleife mit win api slip darin, so dass sie durch IsStopped unterbrochen werden kann.
Es gibt noch einen weiteren subtilen Punkt. Wenn Millisekunden <=0, wird 1 vorangestellt. Das heißt, wir rufen niemals ::Sleep(0) auf.
PPS importieren Sie die Sleep-Funktion aus kernel32.dll und führen Sie das gleiche Experiment mit ihr durch
Berechnen Sie die durchschnittliche Zeit.
Addieren Sie SleepTime und teilen Sie es durch die Anzahl der Iterationen, nachdem der Zyklus abgeschlossen ist.
Ich habe nicht von der Durchschnittszeit gesprochen, sondern von möglichen Spitzenwerten. Ich bin darauf gestoßen, als ich darauf wartete, dass der Handelsverlauf mit dem OrderSend-Ergebnis synchronisiert wird. Ich habe mit Sleep(0) gewartet. Dies erwies sich als unmöglich.
PS. Die Funktion Sleep() in MQL5 ist keine Umleitung auf die Win-Api-Funktion ::Sleep(). Nun, wenn der Wert unter 100 liegt, handelt es sich um eine Weiterleitung. Aber über 100 ist es eine Schleife mit win api slip darin, so dass sie durch IsStopped unterbrochen werden kann.
Es gibt noch einen weiteren subtilen Punkt. Wenn Millisekunden <=0, wird 1 vorangestellt. Das heißt, wir rufen niemals ::Sleep(0) auf.
Ich danke Ihnen für die Einzelheiten. Ich wusste nicht, dass Sleep(5000) durch IsStopped() abgebrochen werden kann.
Es ging nicht um die Durchschnittszeit, sondern um die Möglichkeit von Spitzenwerten. Ich bin auf sie gestoßen, als ich auf die Synchronisierung der Handelshistorie mit dem OrderSend-Ergebnis wartete. Ich habe mit Sleep(0) gewartet. Es stellte sich heraus, dass dies so nicht möglich ist.
fxsaber:
Danke für die Details. Ich wusste nicht, dass Sleep(5000) über IsStopped() beendet werden kann.
https://www.mql5.com/ru/docs/common/sleep
Die Funktion prüft alle 0,1 Sekunden den Status des Stop-Flags des EA.
Das Windows-Betriebssystem war also noch nie ein Echtzeitsystem.
Ehrlich gesagt, weiß ich nicht einmal, was es bedeutet oder wo man es in MQL5 finden kann.