Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 26
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
Une fois que vous aurez nettoyé votre code, il sera plus lisible pour vous, sans parler des autres personnes qui doivent comprendre votre logique. C'est là que l'on verra tous les bugs.
Maintenant, enlevez les crochets appariés supplémentaires et disposez le reste normalement dans des blocs, et vous verrez où votre logique est défectueuse.
Lesquelles sont redondantes ?
Vous avez beaucoup d'accolades inutiles dans votre code - traitez le code avec un stylet, et vous verrez immédiatement les accolades vides supplémentaires.
Terminé
Fabriqué par
Meilleure méthode : if(count<=20) count++ ; - pourquoi compter davantage si vous n'avez besoin que de 21 ?
2.{
if(Bars<801 || (IsTradeAllowed()==false)) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
Print("Нет достаточного количества баров или торговля на текущем инструменте запрещена");
return;
}
Et voici le wigwam. Cela ne vérifiera le nombre de barres et n'imprimera que sile compte >20, le reste du code fonctionnera si lecompte<=20.
3.
if(OrderSymbol()==Symbol() && OrderType()<2)
continue;
Si vous n'avez besoin de prendre en compte que les marchés (et c'est ce que vous attendez de la suite du code), vous n'avez pas besoin decontinuer du tout.
4.
{
dummy=(OrderClose(OrderTicket(),OrderLots(),Bid,0,White));
{
if((dummy==true) && ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))==false))
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
dummy=false;
ExpertRemove();
}
}
Il ferme une commande et s'élimine lui-même ? Et s'il y en a d'autres ? Et nous avons une minute entière pour dormir.
Je n'ai pas regardé le code ci-dessus, il n'y a pas encore d'endroit pour le tester.
1 ok, je vais le corriger
2 ce n'est pas ok, les blocs suivants ne devraient pas fonctionner àcount<20
3 OK, je vais le corriger
4 Oui, c'est une minute mais elle ne doit être lancée que s'il n'y a plus d'ordres de marché pour le symbole en cours. J'ai essayé de l'implémenter par le biais d'un résultat négatif de la sélection de l'ordre, c'est pourquoi nous devrions définir le retour quelque part, mais le retour dans void OnTick() ne semble pas très bon. Et encore une fois, OrdersTotal() donnera un résultat erroné si nous avons beaucoup d'ordres pour tous les symboles.
2 n'est pas OK, les blocs suivants ne devraient pas fonctionner lorsquecount<20
Ensuite, nous devons ajouter else return après le bloc ;
4 Oui, c'est une minute mais elle ne doit être lancée que s'il n'y a plus d'ordres de marché pour le symbole en cours. J'ai essayé de l'implémenter à travers un résultat négatif de la sélection des ordres, c'est pourquoi nous devrions définir le retour quelque part, alors que le retour dans void OnTick() ne semble pas très bon. Et encore une fois, OrdersTotal() donnera un résultat erroné si nous avons beaucoup d'ordres sur tous les symboles.
Pourquoi avons-nous besoin de trois sons ?
Eh bien, nous pouvons tout faire en deux étapes : dans la première boucle, vous fermez les ordres et dans la suivante, vous recalculez tous les ordres au marché pour vérifier s'il en reste, et s'il n'y en a pas, les fanfares jouent.
Mais je ne comprends toujours pas quel est le truc avec la musique après la clôture des commandes. Bon, vous pouvez imprimer un journal, envoyer un message par courrier ou une notification sur votre smartphone, mais pourquoi transformer un EA en boîte à musique ?Ensuite, vous devez ajouter un retour après le bloc else return;
Pourquoi avons-nous besoin de trois fois plus de son ?
Mais vous pouvez tout faire en deux étapes : dans la première boucle, vous fermez les ordres, et dans la suivante, vous recalculez tous les ordres au marché pour vérifier s'il y en a qui ne sont pas fermés, et s'il n'y en a pas, la fanfare joue.
Je ne comprends toujours pas quel est le truc avec la musique lorsque les commandes ont été clôturées. Bien, nous pouvons l'imprimer sur le journal, envoyer un message par courrier ou le notifier sur le smartphone, mais pourquoi devrions-nous transformer notre EA en boîte à musique ?Comment séparez-vous les cycles ?
Comment lier le son au dernier ordre clôturé ? Parce que s'il n'y a pas d'ordre, le conseiller expert ne déclenchera pas de son.
Et une dernière chose : je suis content de la musique pour l'instant.
Comment séparer les cycles ?
Comment lier le son au dernier ordre fermé ? car s'il n'y a pas d'ordre, l'Expert Advisor ne fonctionnera pas.
Et enfin, je suis content de la musique pour l'instant.
Que voulez-vous dire par "séparé" ? Nous n'avons pas besoin de séparer quoi que ce soit. Nous avons juste besoin de deux boucles (elles sont presque les mêmes) mais l'une a OrderClose() et l'autre a un compteur d'ordres. Le critère de sélection des commandes est le même. Si le compteur est=0, toutes les commandes ont été fermées et nous pouvons jouer de la musique.
J'ai également remarqué que la condition
{
if((Bid>=ma1-X*Point && Bid<ma1) || (Bid<=ma1+X*Point && Bid>ma1))
{
{y=true;}
}
}
Il ne semble pas être lié à un certain ordre, alors à quoi sert-il dans la boucle ?
Je le vérifierais avant la boucle de fermeture.