![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
megamixx,
Si vous êtes toujours là, je peux vous suggérer quelques modifications de code qui feront ce que vous recherchez. Faites-moi savoir si vous êtes toujours intéressé.
Puis recompilez pour vous assurer que c'est sans erreur. Faites-moi savoir quand vous l'aurez et je collerai la prochaine modification.Je l'ai eu et compilé avec succès, merci sn.
Je l'ai eu et compilé avec succès grâce à Sn.
ok, bien.
Ensuite, il y a un bloc de code comme celui-ci
copier le bloc entier, le coller juste après et le renommer en OpenTradesOnThisCandle
Ensuite, recompilez pour vous assurer qu'il n'y a pas d'erreur.
Je pars au travail maintenant, donc vous n'aurez pas de nouvelles de moi avant plus tard. Postez les changements si vous êtes bloqué.
J'ai copié ce bloc et l'ai renommé, maintenant il ressemble à ceci :
int OpenTradesOnThisCandle( )
{ int op =0 ;
for(int i=OrdersTotal()-1;i>=0;i--) // analyse tous les ordres et positions...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;
if (OrderMagicNumber() != MagicNumber) continue ;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++ ;
if ( OrderType() == OP_SELL ) op++ ;
}
}
return(op) ;
}
J'espère que je l'ai bien fait. J'ai compilé et je n'ai pas eu d'erreur mais un avertissement :
Lafonction "OpenTradesOnThisCandle" n'est pas référencée et sera supprimée du fichier exp
0 erreur(s), 1 avertissement(s)
Bien. Le message n'est qu'un avertissement et disparaîtra bientôt.
Maintenant, changez la ligne où vous voyez MODE_TRADES pour MODE_HISTORY dans la nouvelle sous-routine que vous avez créée.
Maintenant, remplacez les deux instructions if par OrderType() par ceci
Lorsque vous aurez obtenu ce résultat (et vous obtiendrez le même avertissement), compilez-le pour vous assurer qu'il ne contient aucune erreur.
Voici à quoi ressemble le bloc maintenant :
int OpenTradesOnThisCandle( )
{ int op =0 ;
for(int i=OrdersTotal()-1;i>=0;i--) // analyse tous les ordres et positions...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ;
if (OrderMagicNumber() != MagicNumber) continue ;
si ( OrderSymbol()==Symbol() )
{
si (OrderOpenTime() > Time[0]) op++ ;
si (OrderOpenTime() > Time[0]) op++ ;
}
}
return(op) ;
}
Compilé, 0 erreur, 1 avertissement
Salut megamix,
Je ne lis pas le fil de discussion depuis le début, mais ...
1. Utilisez le bouton SRC lorsque vous postez du code
2. Le retour de OrderSelect() est soit vrai soit faux, donc c'est la façon correcte d'écrire OrderSelect(),
:D
Salut megamix,
Je ne lis pas le fil de discussion depuis le début, mais...
1. Utilisez le bouton SRC lorsque vous postez du code
2. Le retour de OrderSelect() est soit vrai soit faux, donc c'est la façon correcte d'écrire OrderSelect(),
:D
Merci pour le conseil sur l'affichage du code. C'est logique. Pour ce qui est du point 2, je m'en remets à Sn, car il me guide à travers les étapes et je ne veux pas perturber son processus. Merci beaucoup !
Merci pour le conseil sur l'affichage du code. C'est logique. Pour ce qui est du point 2, je m'en remets à Sn, car il me guide à travers les étapes et je ne veux pas perturber son processus. Merci beaucoup !
Nous allons rester simples pour l'instant. onewithzacky a raison, vérifier les codes de retour est une bonne habitude.
if (OrderOpenTime() > Time[0]) op++ ; <<== ceci ne doit être là qu'une fois. Donc enlevez-en un.
La prochaine chose à faire est de trouver ce code et de le dupliquer juste en dessous.
Puis changez
(TradesInThisSymbol > 0)
en
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Puis compilez - l'erreur devrait disparaître.
Nous allons rester simples pour le moment. onewithzacky a raison, vérifier les codes de retour est une bonne habitude.
if (OrderOpenTime() > Time[0]) op++ ; <<== ceci ne doit être là qu'une fois. Alors enlevez-en un.
La prochaine chose à faire est de trouver ce code et de le dupliquer juste en dessous.
Puis changez
(TradesInThisSymbol > 0)
en
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Puis compilez - l'erreur devrait disparaître.
C'est fait.
Suppression du doublon if (OrderOpenTime() > Time[0]) op++ ;
et trouvé et modifié
(TradesInThisSymbol > 0)
en
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Merci beaucoup pour votre aide précieuse à ce sujet.