MQL5

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

Snippets liés

Retour au Data Lab