تشخیص کندل جدید
تایماستمپ باز شدن کندل جاری رو با مقداری که ذخیره کرده مقایسه میکنه: یه بار اجرای منطق به ازای هر کندل، فارغ از جریان تیکها. نسخهای که با چند نماد هم سازگاره.
کاربرد
استراتژیهای «تو کلوز»: سیگنالها یه بار تو هر کندل ارزیابی میشن، نه هزار بار تو هر تیک.
پیشنیازها
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