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
Il suffit d'appeler start() à partir de init () ...et vous serez dans start() même si aucun tick ne vient !
Merci à vous 2
En développant mon lien ci-dessus... J'exécute un EA séparé pour surveiller l'état de la connexion. Il a essentiellement tout le code pour mon test codé à l'intérieur de start avec un sleep à la fin. Start est essentiellement une grande boucle, quand elle se termine, elle retourne au début. Mais plutôt que d'attendre un tick pour déclencher le démarrage, j'appelle start() dans init(). De cette façon, start() continue à boucler avec le sleep et init() ne se termine jamais, donc le code s'exécute en fonction des intervalles de temps du sleep plutôt que d'attendre un tick... le lien ci-dessus montre le principe...
hth
V
Appelez simplement start() à partir de init () ...et vous serez dans start() même si aucun tick n'arrive !
Aucune de ces méthodes ne résout le problème car init() ne démarre pas non plus s'il n'y a pas de connexion.
le seul moyen de faire cela est avec un script ; le problème est qu'il n'y a aucun moyen d'ouvrir le terminal avec un script chargé.
Aucune de ces méthodes ne résout le problème car init() ne démarre pas non plus s'il n'y a pas de connexion.
la seule façon de le faire est avec un script ; le problème est qu'il n'y a aucun moyen d'ouvrir le terminal avec un script Chargé
Jetons un coup d'oeil aux outils de MT4i.com. Je les utilise pour surveiller la connexion et envoyer des alertes par mail ou sms.
http://www.mt4i.com/mtdashboard.aspx
Il suffit d'appeler start() à partir de init () ...et vous serez dans start() même si aucun tick ne vient !
NON ! Ceci n'est pas autorisé. init() est censé revenir après 2 secondes. Init n'est pas autorisé à bloquer ! Toutes sortes de problèmes peuvent (et vont) en découler.
Faites simplement la boucle dans start et attendez que start soit appelé automatiquement au prochain tick disponible après le chargement de l'EA. Il y avait des ticks avant que la connexion ne soit coupée, donc votre boucle sera déjà en cours d'exécution lorsque cet événement se produira.
Si vous avez vraiment besoin de déclencher un start() à partir de init() parce que vous avez besoin qu'il fonctionne le week-end, alors la seule façon correcte est d'utiliser l'astuce PostMessage() pour imposer un tick. Vous postez le message et ensuite vous laissez init revenir! MT4 appellera alors start() de façon normale et init() ne bloquera pas.
Voir le prochain message pour un exemple.
Et ceci est le même que le script ci-dessus mais implémenté comme un EA, démontrant les deux concepts dans un EA.
Dans init(), il mettra en file d'attente le tout premier tick pour déclencher le premier start(), puis dans start(), il produira d'autres ticks dans une boucle infinie, qui seront ensuite repris par tous les indicateurs sur le même graphique.
C'est la seule façon correcte de forcer un start() à partir de init() dans un EA. Vous n'êtes pas autorisé à le faire dans un indicateur puisque le start() sera exécuté dans le thread de l'interface graphique.
Essayez de placer cet EA sur un graphique, fermez le terminal, puis désactivez votre connexion Internet et rallumez votre terminal (pendant que la connexion à Internet est désactivée) et vous verrez que cela ne fonctionne pas.
essayez de mettre cette ea sur un graphique fermez le terminal puis désactivez votre connexion internet & allumez votre terminal (pendant que la connexion internet est désactivée) & vous verrez que cela ne fonctionne pas.
Mais il devrait continuer à fonctionner une fois qu'il a été lancé dans des conditions normales (ce qui devrait être le cas d'utilisation normal). Essayez de vous déconnecter après son démarrage.
Et il sert d'exemple pour éviter un init() bloquant et l'exécuter comme une EA au lieu d'un script.
Mais il devrait continuer à fonctionner une fois qu'il a été lancé dans des conditions normales (ce qui devrait être le cas d'utilisation normal). Essayez de vous déconnecter après qu'il ait été lancé.
Et cela sert d'exemple pour éviter un init() bloquant et l'exécuter comme une EA au lieu d'un script.
Vous avez raison, mais je ne cherche pas une solution à la situation que vous décrivez, je cherche une solution à la situation que je décris, et pour l'instant la seule solution que j'ai trouvé, qui, logiciel externe, va exécuter un script