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
compteur ?
Je programme des indicateurs depuis tellement de mois que je suis un peu déficient en experts mais j'ai l'intention de résoudre ce problème. En cours de route, j'ai besoin d'un peu d'aide. Dans mon expert, je dois vérifier à la clôture de la barre s'il y a une condition qui justifierait la clôture de la transaction.
Je commence par une variable globale,
datetime PreviousBar; // record candle/bar time[/CODE]
and set one bool in init()
{
do_this = true;
}
[/CODE]
blah blah boring stuff.... etc, etc
then in the main loop I have:
[CODE]
if(do_this == true)
{
PreviousBar = Time[0];
do_this= false; // so it does this only once only
}
if(NewBar() == true)
{
if(TotalOpenOrders() == blah blah close my order you crazy monkey)
}
and outside the main loop I have:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}OK, donc c'est configuré pour faire une fois par barre. Ce que je veux faire, c'est avoir une fonction qui incrémente 90 secondes ou 60 secondes ou autre, puis met un bool à true après avoir incrémenté ce temps. En fait, je veux vérifier les indicateurs toutes les 60, 90, 120 secondes ou autre au lieu de le faire à la clôture de la barre. Comment puis-je faire cela ?
Merci pour toute aide,
- Nittany1
Je programme des indicateurs depuis tellement de mois que je suis un peu déficient en experts mais j'ai l'intention de résoudre ce problème. En cours de route, j'ai besoin d'un peu d'aide. Dans l'expert que j'ai créé, je fais vérifier à la clôture de la barre si une condition justifie la clôture de la transaction.
Je commence par une variable globale,
datetime PreviousBar; // record candle/bar time[/CODE]
and set one bool in init()
{
do_this = true;
}
[/CODE]
blah blah boring stuff.... etc, etc
then in the main loop I have:
[CODE]
if(do_this == true)
{
PreviousBar = Time[0];
do_this= false; // so it does this only once only
}
if(NewBar() == true)
{
if(TotalOpenOrders() == blah blah close my order you crazy monkey)
}
and outside the main loop I have:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}OK, donc c'est configuré pour faire une fois par barre. Ce que je veux faire, c'est avoir une fonction qui incrémente 90 secondes ou 60 secondes ou autre, puis met un bool à true après avoir incrémenté ce temps. En fait, je veux vérifier les indicateurs toutes les 60, 90, 120 secondes ou autre au lieu de le faire à la clôture de la barre. Comment puis-je faire cela ?
Merci pour toute aide,
- nittany1Ceci devrait faire l'affaire. Rappelez-vous que MT utilise une exécution basée sur les ticks, donc la précision à la seconde près n'est pas possible (à moins que vous ne boucliez tout dans le sous-programme Init()).
if (CallIndicatorsCheck())
{
// votre code ici
}
bool CallIndicatorsCheck()
{
static datetime Oldtime ;
int Secs = 90 ;
bool Drapeau ;
if (CurrTime() >= Oldtime) {
Oldtime = CurrTime() + Secs ;
Drapeau = vrai ; }
return(Drapeau) ;
}
Placement des commentaires
Quelqu'un pourrait-il me montrer le code permettant de placer un commentaire dans lecoin SUPÉRIEURDROIT de l'écran, plutôt que dans le coin supérieur gauche par défaut ?
Merci !
Quelqu'un pourrait-il me montrer le code pour placer un commentaire dans lecoin SUPERIEURDROIT de l'écran, plutôt que dans le coin supérieur gauche par défaut ? Merci !
Vous ne pouvez pas. Extrait du manuel MQL4 :
Si vous avez besoin par décès, vous pourriez créer des objets.
Quelqu'un pourrait-il me montrer le code permettant de placer un commentaire dans lecoin SUPÉRIEURDROIT de l'écran, au lieu du coin supérieur gauche par défaut ? Merci !
LinusGuy a raison ; il n'y a pas de moyen direct. La solution de contournement la plus simple est d'ajouter des espaces à votre commentaire...
Comment(" hello world !") ;
décalera le texte vers la droite.
Vous pouvez également insérer des retours à la ligne pour faire descendre la page.
Comment("\n\n\n\n\n\n\n\n\N\N\N\N\N\N\N\N votre texte") ;
ou combiner les sauts de ligne et les espaces pour imprimer dans le coin inférieur droit de l'écran.
mog
LinusGuy a raison ; il n'y a pas de moyen direct. La solution de contournement la plus simple consiste à garnir votre commentaire d'espaces --
Comment(" hello world !") ;
décalera le texte vers la droite.
Vous pouvez également mettre des flux de lignes pour faire descendre la page.
Comment("\n\n\n\n\n\n\N\N\N\N\N\N\N\N\N\N\N votre texte") ;
ou combiner les sauts de ligne et les espaces pour imprimer dans le coin inférieur droit de l'écran.
mogMerci de votre aide. Je vais essayer !
Pas de nouveau trade pendant X barres après un trade perdant
Bonjour, j'espère que quelqu'un pourra m'aider...
comment faire pour qu'un nouveau trade ne commence pas avant 10 barres si le dernier trade était une perte ?
merci
La fonction ci-dessous renvoie true si l'historique du compte contient une transaction à perte qui a été clôturée à ou après l'ouverture de la 10ème barre passée (la barre actuelle est 0),
et renvoie false sinon.
{
datetime since = Time[ bar+10 ];
for ( int i = OrdersHistoryTotal() - 1; i >= 0; i-- ) {
if ( ! OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )
continue;
if ( OrderProfit() = since )
return( true );
}
return( false );
}
[/PHP]
If you add that function to your EA, then include a statement like the following in the start() function, then Bob's your uncle.
[PHP]if ( postMortem() ) return( 0 );Merci beaucoup pour cela - je vais essayer.
salutations
Les gars, avez-vous le même problème ?
J'ai codé un expert. Je veux ouvrir une position lorsque le prix est le même que celui d'un indicateur. Pour ce faire, j'utilise la phrase suivante :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]indicateurnow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL() ;
mais avec ce satatement, l'expert ouvre des positions non seulement quand le prix traverse l'indicateur, il ouvre des positions au dessus de l'indicateur aussi. Je veux que l'expert ouvre une position UNIQUEMENT quand le prix traverse l'indicateur, donc j'ai essayé cela :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL() ;
Mais cette instruction ne fonctionne pas.
Savez-vous ce qui se passe ? Parce que je pense qu'il n'y a pas d'erreurs dans l'instruction.
Salutations.