Detección de nueva vela
Compara el timestamp de apertura de la vela actual con el memorizado: la lógica se ejecuta una sola vez por vela, sea cual sea el flujo de ticks. Versión compatible con multi-símbolo.
Requisitos
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
}Resultado
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