Détection de nouvelle bougie
Compare le timestamp d'ouverture de la bougie courante à celui mémorisé : un seul passage de logique par bougie, quel que soit le flux de ticks. Version multi-symbole compatible.
Cas d'usage
Stratégies « à la clôture » : signaux évalués une fois par bougie, pas mille fois par tick.
Prérequis
MetaTrader 5, MQL5
MQL5
bool IsNewBar(string symbol, ENUM_TIMEFRAMES tf)
{
static datetime lastBarTime = 0;
datetime barTime = iTime(symbol, tf, 0); // ouverture de la bougie courante
if(barTime == 0)
return false; // données pas encore synchronisées
if(barTime != lastBarTime)
{
lastBarTime = barTime;
return true;
}
return false;
}
void OnTick()
{
if(!IsNewBar(_Symbol, PERIOD_CURRENT))
return; // gestion intra-bougie éventuelle ici (trailing...)
EvaluateSignals(); // logique lourde : 1 fois par bougie seulement
}Résultat
2026.06.10 14:00:00.018 BarGate (EURUSD,M15) Nouvelle bougie 14:00 -> EvaluateSignals() 2026.06.10 14:00:00.532 BarGate (EURUSD,M15) Tick suivant, même bougie : logique lourde sautée 2026.06.10 14:15:00.011 BarGate (EURUSD,M15) Nouvelle bougie 14:15 -> EvaluateSignals() 2026.06.10 14:15:00.012 BarGate (EURUSD,M15) 412 ticks filtrés sur la bougie précédente, 1 seule évaluation
New BarOnTickiTimePattern