Actuellement, mon EA ouvre plusieurs ordres sur la même bougie. Je pense que le contenu de cet article pourrait m'aider.
Comment puis-je l'implémenter ?
Vous pouvez retirer la logique d'entrée de l'événement OnTick() et la placer dans la fonction OnNewBar(). De cette façon, elle ne sera exécutée que lorsqu'il y a une nouvelle barre, plus besoin d'entrer plusieurs fois sur la même bougie, car une fois qu'elle a été exécutée, elle ne s'exécutera à nouveau que sur la bougie suivante.
J'espérais une fonction des bibliothèques MQL5 mais il semble qu'il n'y en ait pas ? J'ai une librairie de trading modulaire et j'ai rencontré le problème suivant : le module de signal définissait son drapeau IsNewBar et remplaçait le prevCandleTime et lorsque le module TrailingSL devait évaluer la même fonction, il renvoyait un faux car le prevCandleTime était le même que le courant.
Oui, je peux stocker le résultat dans un indicateur central et l'utiliser pour tous les modules et je ne rencontrerai pas ce problème MAIS les modules peuvent fonctionner sur des périodes différentes, c'est pourquoi cette solution est si parfaite, merci.
À mon avis, nous compliquons parfois inutilement les choses. Pour des raisons pratiques, rien, même en termes de performances, ne peut battre l'heure du système (l'heure des fenêtres). Au début de la minute suivante, ou pour être sûr, après quelques secondes, nous pouvons supposer qu'il y aura une nouvelle barre pour chaque symbole. Disons une minute... cinq minutes... quinze minutes, ou n'importe quel autre délai. Pour être sûr, vous pouvez vérifier si l'heure de la barre et l'heure du système sont les mêmes.
Mais il n'est pas nécessaire de créer plusieurs instances de cette classe, juste pour vérifier s'il y a une nouvelle barre, alors que nous savons tous quand une nouvelle barre sera peinte.
double Old_open, New_open;
bool NewBar = false;
intOnInit()
{
//----------
Old_open = iOpen(Symbol(),PERIOD_CURRENT,0);
//---------- return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---
New_open = iOpen(Symbol(),PERIOD_CURRENT,0);
if (New_open != Old_open)
{
Print("Il y a un nouveau bar qui arrive., TimeCurrent());
NewBar = true;
Old_open = New_open;
}
else NewBar = false;
}
Bonjour, je suppose que dès que la cotation Open() est arrivée, cela signifie qu'une nouvelle barre est arrivée. Je pense que c'est plus simple ou est-ce que j'ai raté quelque chose ?
Max Go nouvelle barre est arrivée. Je pense que c'est plus facile ou est-ce que j'ai raté quelque chose ?
Imaginez une situation où le prix d'ouverture d'une nouvelle barre est égal au prix d'ouverture de la barre précédente.... Il y a une forte probabilité d'attraper une telle situation sur des petits TFs.
Je n'ai pas de méthode plus simple que celle-ci. suit l'heure d'ouverture de la barre actuelle et les compare à chaque tic-tac.
// Je n'ai pas de méthode plus simple que celle-ci.// Suit l'heure d'ouverture de la barre actuelle et les compare à chaque tic-tac.double lastTime = 0;
voidOnTick() {
if(isNewBar()){
Print("New Bar");
}
}
bool isNewBar() {
double thisTime= NormalizeDouble(iTime(_Symbol, PERIOD_CURRENT, 0), _Digits);
if(lastTime != thisTime) {
lastTime = thisTime;
returntrue;
}
returnfalse;
}
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Actuellement, mon EA ouvre plusieurs ordres sur la même bougie. Je pense que le contenu de cet article pourrait m'aider.
Comment puis-je l'implémenter ?
Vous pouvez retirer la logique d'entrée de l'événement OnTick() et la placer dans la fonction OnNewBar(). De cette façon, elle ne sera exécutée que lorsqu'il y a une nouvelle barre, plus besoin d'entrer plusieurs fois sur la même bougie, car une fois qu'elle a été exécutée, elle ne s'exécutera à nouveau que sur la bougie suivante.
Bon article.
Merci de votre attention.
Très bien, merci,
J'espérais une fonction des bibliothèques MQL5 mais il semble qu'il n'y en ait pas ? J'ai une librairie de trading modulaire et j'ai rencontré le problème suivant : le module de signal définissait son drapeau IsNewBar et remplaçait le prevCandleTime et lorsque le module TrailingSL devait évaluer la même fonction, il renvoyait un faux car le prevCandleTime était le même que le courant.
Oui, je peux stocker le résultat dans un indicateur central et l'utiliser pour tous les modules et je ne rencontrerai pas ce problème MAIS les modules peuvent fonctionner sur des périodes différentes, c'est pourquoi cette solution est si parfaite, merci.
Bonjour, je suppose que dès que la cotation Open() est arrivée, cela signifie qu'une nouvelle barre est arrivée. Je pense que c'est plus simple ou est-ce que j'ai raté quelque chose ?
Imaginez une situation où le prix d'ouverture d'une nouvelle barre est égal au prix d'ouverture de la barre précédente.... Il y a une forte probabilité d'attraper une telle situation sur des petits TFs.
Je n'ai pas de méthode plus simple que celle-ci.
suit l'heure d'ouverture de la barre actuelle et les compare à chaque tic-tac.