MQL5

تشخیص کندل جدید

تایم‌استمپ باز شدن کندل جاری رو با مقداری که ذخیره کرده مقایسه می‌کنه: یه بار اجرای منطق به ازای هر کندل، فارغ از جریان تیک‌ها. نسخه‌ای که با چند نماد هم سازگاره.

کاربرد

استراتژی‌های «تو کلوز»: سیگنال‌ها یه بار تو هر کندل ارزیابی میشن، نه هزار بار تو هر تیک.

پیش‌نیازها

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
}

نتیجه

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

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده