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
... en disant l'évidence, si vous vouliez faire ce qui précède dans une EA plutôt que dans un script [...].
Version révisée qui peut être utilisée pour créer un EA plutôt qu'un script simplement en décommentant le #define COMPILE_AS_EA. Le code a alors OnTimer (et OnTick) au lieu de OnStart.
Le seul autre changement est que le code met maintenant les sockets en mode non-bloquant. Il interroge toujours la disponibilité de nouveaux événements de socket en utilisant select(), mais il évite maintenant le danger d'entrer dans un état bloquant si select() est erroné.
Version révisée qui [...]
Je suis sûr que tout le monde est impatient d'avoir une mise à jour sur ce sujet....
Dans le contexte d'une EA - qui est maintenant la valeur par défaut dans le code - il s'avère qu'il est possible d'utiliser WSAAsyncSelect() pour faire de la gestion événementielle de l'activité socket. Cela peut souvent faire passer la latence entre l'envoi et la réception du message sous le niveau de la milliseconde. La vitesse exacte varie en fonction de ce que MT4 fait d'autre, mais elle est en moyenne beaucoup plus rapide, et jamais pire, que la simple utilisation du timer.
Il n'est pas possible de faire en sorte que WSAAsyncSelect() déclenche OnTimer() ou OnTick() dans l'EA. Par exemple, on peut demander à WSAAsyncSelect() d'envoyer des messages WM_TIMER, mais MT4 les ignore car l'ID du timer wparam de WSAAsyncSelect() ne correspond pas à l'ID du timer qu'il attend de EventSetMillisecondTimer().
Cependant, dire à WSAAsyncSelect() d'envoyer WM_KEYDOWN déclenche avec succès OnChartEvent() dans l'EA. Voir les commentaires dans le code pour plus de détails sur le fonctionnement de cet ajout.
Pour s'amuser un peu...
Lol. Incroyable. Félicitations. Je ne pensais pas qu'il était possible de coder ces fonctionnalités sur MQL.
Lol. Incroyable. Félicitations. Je ne pensais pas qu'il était possible de coder ces fonctionnalités sur MQL.
Mon instinct est toujours de faire des sockets de serveur en utilisant le multi-threading, mais je ne peux pas penser à une raison pour laquelle ce code ne serait pas viable et sûr pour une utilisation dans la vie réelle.
Il y a une chose dans la version la plus récente, ci-dessus, qui n'est pas idéale. Plutôt que de poster un autre gros bloc de code, je vais le décrire à la place :
Il s'agit d'une petite modification du code, mais je ne veux pas poster un autre gros bloc dans ce forum alors que vous seul êtes intéressé.
Plutôt que de poster un autre gros bloc de code [...]
Après réflexion...
Encore une autre version, avec les modifications suivantes :
Au lieu de poster des contributions SRC aussi longues, envisagez de simplement joindre le fichier lui-même à la place. Je vous suggère de MODIFIER vos longs messages en supprimant les sections SRC et en joignant simplement le fichier source.
Au lieu de poster des contributions SRC aussi longues, envisagez de simplement joindre le fichier lui-même à la place. Je vous suggère de MODIFIER vos longs messages en supprimant les sections SRC et en joignant simplement le fichier source à la place.
Merci beaucoup pour votre contribution.
Mais, parmi les nombreuses raisons pour lesquelles je ne vais pas le faire, il y a le fait que le code ci-dessus fonctionne à la fois sur MT4 et MT5. Si je le téléchargeais en tant que pièce jointe, il devrait être marqué de manière trompeuse comme étant soit .mq4, soit .mq5, alors qu'en fait il fonctionne sur les deux.
Mais, parmi les nombreuses raisons [...]
Une autre des principales raisons est le scénario suivant, qui aurait pu s'appliquer au PO :
Pour autant que je sache, ni les moteurs de recherche ni la recherche sur ce site ne peuvent regarder à l'intérieur des pièces jointes. Donc, le fait de poster le code en pièce jointe le rendrait invisible à une recherche telle que "mql4 bind listen htons".
Vous dites régulièrement aux gens qu'ils auraient dû faire une recherche ou consulter la documentation ; c'est exactement ce que j'essaie de faire.
(Il se trouve que "mql4 bind listen htons" ne trouve pas ce sujet parce que Google n'a pas exploré la page depuis le 14 septembre. Mais elle devrait commencer à apparaître sur Google prochainement).
Merci beaucoup pour votre contribution.
Mais, parmi les nombreuses raisons pour lesquelles je ne vais pas le faire, il y a le fait que le code ci-dessus fonctionne à la fois sur MT4 et MT5. Si je le téléchargeais en tant que pièce jointe, il devrait être marqué de manière trompeuse comme étant soit .mq4, soit .mq5, alors qu'en fait il fonctionne sur les deux.
En y réfléchissant bien...
Encore une autre version, avec les changements suivants :
MERCI encore jjc,
Pour l'instant je suis pressé et je n'ai pas le temps de le tester, mais je le ferai la semaine prochaine et je vous en parlerai. Je pense que je n'aurai aucun problème à le faire fonctionner, mais je vous poserai peut-être quelques questions. BTW : S'il vous plaît, ne modifiez aucun message ; ils sont tous parfaits tels quels (je me sens comme dans StackOverflow =)).