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
Salut oneillj,
Je pensais avoir déjà répondu, mais il semble qu'il ait disparu dans l'éther d'Internet.
Le fragment de code que vous avez fourni est à peu près celui dont je me plaignais en premier lieu. Pourquoi une telle complexité ? Je me suis dit qu'il devait y avoir un moyen plus simple. J'ai trouvé celle-ci, qui semble fonctionner. Veuillez me corriger si je me trompe. (J'ai aussi essayé d'utiliser BarsCalculated, mais il était toujours égal à Bars, donc le test était toujours évalué à false).
static int LastBarCount = 0 ;
;-) Ianif (Bars(_Symbol, _Period) > LastBarCount)
LastBarCount = Bars(_Symbol, _Period) ;
sinon
retour ;
Je suis tout à fait d'accord pour dire que nous avons besoin de quelque chose d'aussi simple que possible.
Malheureusement, ce code ne semble pas fonctionner pour moi dans MQL5.
Malheureusement, cela ne semble pas fonctionner dans MQL5.
Les barres seraient de toute façon un mauvais moyen de détecter une nouvelle barre.
La seule façon fiable de vérifier une nouvelle barre est d'utiliser le temps. Pas le volume, pas les prix, pas les barres.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Les barres seraient de toute façon un mauvais moyen de détecter une nouvelle barre.
La seule façon fiable de vérifier une nouvelle barre est d'utiliser le temps. Pas le volume, pas les prix, pas les barres.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Les barres seraient de toute façon un mauvais moyen de détecter une nouvelle barre.
La seule façon fiable de vérifier une nouvelle barre est d'utiliser le temps. Pas le volume, pas les prix, pas les barres.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Juste pour information, j'ai la note suivante dans mes références :
//-- Parfois, SeriesInfoInteger avec SERIES_LASTBAR_DATE renvoie une erreur,
C'était il y a longtemps et je n'ai pas utilisé/testé cette fonction depuis des années, donc peut-être que ce n'est plus le cas. Mais si vous voulez l'utiliser pour détecter une nouvelle barre, c'est probablement mieux de le vérifier ;-)
Juste pour information, j'ai la note suivante dans mes références :
//-- Parfois, SeriesInfoInteger avec SERIES_LASTBAR_DATE renvoie une erreur,
C'était il y a longtemps et je n'ai pas utilisé/testé cette fonction depuis des années, donc peut-être que ce n'est plus le cas. Mais si vous voulez l'utiliser pour détecter une nouvelle barre, c'est probablement mieux de le vérifier ;-)
C'est très énigmatique Alain ! Quel type d'erreurs ?
Dans ce cas, pour les ceintures et les accolades, il faut vérifier SeriesInfoInteger >0 et/ou ResetLastError avant l'appel puis vérifier _LastError après l'appel.
Ou bien récupérez la source de temps à un autre endroit, par exemple time[] si dans OnCalculate, ou CopyTime etc etc.
Pourquoi ne pas simplement utiliser quelque chose comme ceci :
datetime lastTime[1];
if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
{
prevTime=lastTime[0];
// ...
}
C'est très énigmatique Alain ! Quel type d'erreurs ?
Dans ce cas, pour les ceintures et les accolades, vérifiez SeriesInfoInteger >0 et/ou ResetLastError avant l'appel puis vérifiez _LastError après l'appel.
Ou bien récupérez la source de temps à un autre endroit, par exemple time[] si dans OnCalculate, ou CopyTime etc etc.
Je dis simplement que lorsque je l'ai utilisé il y a des années, SeriesInfoInteger() n'était pas vraiment fiable. A vous de voir ce que vous faites de cette information :-D
Pas grand-chose, je n'ai pas besoin de détecter une nouvelle barre dans MT5. Mais merci d'avoir partagé ces informations, je les garderai à l'esprit pour l'avenir.
J'essayais simplement de simplifier quelque chose que les gens semblaient rendre excessivement compliqué.
Néanmoins, le principe demeure : utilisez le temps. Attention : choisissez votre méthode d'obtention du temps à vos risques et périls en tenant compte des notes historiques incomplètes d'Alain (au fait, comment se porte le Service Pack 1 de XP ?).
Pas grand-chose, je n'ai pas besoin de détecter une nouvelle barre dans MT5. Mais merci d'avoir partagé cette information, je la garderai à l'esprit pour l'avenir.
J'essayais simplement de simplifier quelque chose que les gens semblaient rendre excessivement compliqué.
Néanmoins, le principe demeure : utilisez le temps. Attention : choisissez votre méthode d'obtention du temps à vos risques et périls en tenant compte des notes historiques incomplètes d'Alain (au fait, comment se porte le Service Pack 1 de XP ?).