Uzman Danışmanlar: New Candle or Bar formation. - sayfa 2

 
Maxim Kuznetsov # :

1. previous_time'ın yanlış başlatılması, kod başlangıcından hemen sonra yanlış alarmlara neden oluyor.

2. Her tikte iTime'a pahalı erişim.

3. Tüm keneler bir çubuk oluşturmaz (nadir durumlarda, bir kene kapalı bir günde meydana gelebilir ve bir işlem değil, sadece bazı dahili sunucu prosedürüdür).

Kodun çalışması, yalnızca bir Ontick veya OnTimer işlevinin içine yazılabilen yeni mum oluşumunu tespit etmektir
 

Bir mumun ne zaman kapandığını bilemezsiniz. Yalnızca yeni bir çubuğu başlatan yeni bir tik geldiğinde eski çubuk kapanır ve bu tik neredeyse bir çubuğun süresinin sonunda gelebilir.

Yeni bir çubuk testi için, Çubuklar güvenilmezdir (bir yenileme / yeniden bağlanma grafikteki çubuk sayısını değiştirebilir), hacim güvenilmezdir (keneleri kaçırır), Fiyat güvenilmezdir (yinelenen fiyatlar ve == işleci - MQL4 programlama forumu.) Her zaman zamanı kullanın.
MT4: Yeni mum - MQL4 programlama forumu #3 (2014)
MT5: Değişkenlere erişim - MQL4 programlama forumu #3 (2022)

Yeni bir çubuk işlevi oluşturmaya katılmıyorum, çünkü her tik için yalnızca bir kez çağrılabilir (ikinci çağrı false döndürür). Bir değişken birden çok kez test edilebilir.
EA'yı her çubuğun başında bir kez çalıştırma - MQL4 programming forum (2011)

 static datetime curDT=0; datetime preDT=curDT; curDT=iTime(_Symbol,_Period,0);
 if(curDT != preDT){ … }
 
William Roeder #:

Yeni bir çubuk işlevi oluşturmaya katılmıyorum, çünkü her tik için yalnızca bir kez çağrılabilir (ikinci çağrı false döndürür). Bir değişken birkaç kez kontrol edilebilir.

Farklı sembol ve zaman dilimi kombinasyonları için tek bir EA içinde doğru şekilde çalışan ve bir kene işlenirken birden çok kez çağrılabilen, ikinci seferde (ve sonraki seferlerde ) ilk seferle aynı şeyi döndüren genel bir IsNewBar(sembol, zaman dilimi ) işlevi oluşturmayı başardım.