Caractéristiques du langage mql5, subtilités et techniques - page 100
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Un tel glissement peut prendre des dizaines de millisecondes.
Un tel glissement peut durer des dizaines de millisecondes.
Qu'est-ce que cela signifie ?
Je me souviens qu'il y a longtemps, Sleep() était mentionné dans les processus de mise en parallèle.
Qu'est-ce que ça veut dire ?
Exactement ce qu'il a dit.
Un tel glissement peut durer des dizaines de millisecondes.
Pas des dizaines, mais 15,625 millisecondes.
J'utilise cette construction depuis longtemps :
Pas des dizaines, mais 15,625 millisecondes.
J'utilise ce modèle depuis longtemps :
Résultat
Résultat
Calculez le temps moyen.
Accumulez SleepTime et divisez-le ensuite par le nombre d'itérations après la fin de la boucle.
Sinon, le résultat que vous venez de présenter semble effrayant pour les esprits immatures. Indiquez également le temps minimum en même temps.
PS. La fonction Sleep() de MQL5 n'est pas une redirection vers la fonction win api ::Sleep(). Ou plutôt, si la valeur est inférieure à 100, il s'agit d'une redirection. Mais au-delà de 100, il s'agit d'une boucle dans laquelle se glisse win api, de sorte qu'elle peut être interrompue par IsStopped.
Il y a un point plus subtil. Si les millisecondes <=0, nous ajoutons 1. C'est-à-dire que nous n'appelons jamais ::Sleep(0).
PPS importe la fonction Sleep de kernel32.dll et fait la même expérience avec elle
Calculez le temps moyen.
Accumulez SleepTime, et divisez par le nombre d'itérations après la fin du cycle.
Je ne parlais pas du temps moyen mais de la possibilité de pics. Je les ai rencontrés en attendant que l'historique des transactions soit synchronisé avec le résultat d'OrderSend. J'attendais en utilisant Sleep(0). Il s'est avéré que c'était impossible.
PS. La fonction Sleep( ) de MQL5 n'est pas une redirection vers la fonction win api ::Sleep(). Si la valeur est inférieure à 100, il s'agit d'une redirection. Mais au-delà de 100, il s'agit d'une boucle dans laquelle se glisse win api, de sorte qu'elle peut être interrompue par IsStopped.
Il y a un point plus subtil. Si les millisecondes <=0, nous ajoutons 1. C'est-à-dire que nous n'appelons jamais ::Sleep(0).
Merci pour les détails. Je ne savais pas que Sleep(5000) pouvait être interrompu par IsStopped().
Il ne s'agissait pas du temps moyen, mais de la possibilité de pics. Je les ai rencontrés en attendant la synchronisation de l'historique des transactions avec le résultat d'OrderSend. J'attendais en utilisant Sleep(0). Il s'est avéré que cela ne peut pas être fait de cette façon.
fxsaber:
Merci pour les détails. Je ne savais pas que Sleep(5000) pouvait être interrompu par IsStopped().
https://www.mql5.com/ru/docs/common/sleep
La fonction comporte une vérification intégrée du statut du drapeau d'arrêt de l'EA toutes les 0,1 secondes.
Le système d'exploitation Windows n'a donc jamais été un système en temps réel.
Honnêtement, je ne sais même pas ce que cela signifie ni où dans MQL5 vous pouvez le rencontrer.