zamanlayıcı - sayfa 3

 
TheXpert :

Zamanlayıcı Yöneticisini Kullanma Makaleyi kabartmak istedim, sonra bir şekilde kenara çekildim. Makale çekmeyebilir rağmen.

Belirli bir zamanda, kodun ve olay kuyruğunun tek iş parçacıklı olması nedeniyle çalışmayacaktır, ancak bir saniyeden daha kısa bir ortalama hatayla (maksimum, olayın kod tarafından yürütüldüğü maksimum süre ile sınırlıdır) .

Üstelik sadece bir zamanlayıcı var.

Gerekli?

Evet, hata neredeyse algılanamaz. Belki hemen Kod Tabanına koyun? Forumda - kaybolacak ve orada - başka birinin buna ihtiyacı olacak.
 
Yedelkin :
Evet, hata neredeyse algılanamaz. Belki hemen Kod Tabanına koyun? Forumda - kaybolacak ve orada - başka birinin buna ihtiyacı olacak.

Tamamen hazır değil, şimdi 5k için Sınırsız Dosyasıyla meşgul. yakında bitireceğim.

Çip, gerekli olup olmadığı değildir. Bu, birden çok zamanlayıcıyla çalışmanın tek normal ve doğru yoludur.

 
TheXpert :

Tamamen hazır değil, şimdi 5k için Sınırsız Dosyasıyla meşgul. yakında bitireceğim.

Sorun değil, bekle. Şimdilik SD'ye döneceğim, belki ilk Timer etkinliğini belirli bir gecikmeyle başlatmayı mümkün kılarlar.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin :

EA'nın belirli bir zamanda Zamanlayıcı olayları oluşturmasını sağlamanın bir yolu var mı? Örneğin, bir saatin veya günün son dakikasının başında.

Hangi sorunlar? Düzenli bir zamanlayıcı çalıştırın ve zamanı analiz edin. Zaman doğru değil - hemen OnTimer'dan çıkın
 
TheXpert :

Yine, bu hindilerde Uyku işlevinin harika bir alternatifidir ve yine bir saniye biraz fazla.

Konu tartışmaya açılmıştır. Ne düşünüyorsun?

Bir nüans var. Göstergedeki zamanlayıcı, grafiğe eklenmemişse çalışmaz . Bu nedenle, ikinci bir zamanlayıcı bile göstergelerde genellikle işe yaramaz.

Burada bir saniyeden daha az sıklıkta olayları kontrol etmenin bir çözümü var. Belki GetTickCount () ile birlikte bir zamanlayıcı yapabilirsiniz.

 
stringo :
Hangi sorunlar? Düzenli bir zamanlayıcı çalıştırın ve zamanı analiz edin. Zaman doğru değil - hemen OnTimer'dan çıkın

Ve neden olay kuyruğunu her saniye Timer ile bombalayayım, ayrıca OnTimer()'da her saniye kontroller için zaman harcayayım, eğer aslında, OnTimer()'ı günde bir kez (saatte, vb.) kesin zaman?

İki parametreli böyle bir fonksiyonun çok daha akılcı ve zarif olacağını düşünüyorum:

   bool EventSetTimer (
                   int seconds,       // количество секунд для OnTimer
                   int задержка = 0      // количество секунд задержки запуска первого события Timer 
                   );

SD'de önerildiği gibi.

Ekleme: Delay parametresinin değeri, OnInit() içinde kolayca ve bir kez hesaplanabilir.

 
Yedelkin :

Ve neden...

Şey, temelde önerdiğim buydu. Sadece kullanışlı bir pakete sarılmış.

Özellikle gereksiz olayları atlarsanız, saniyede bir korkunç bir küçük.

 
Saniye cinsinden gecikmeyi milisaniyeye çevirmeniz yeterlidir.
 bool EventSetTimer ( 1000); // количество миллисекунд для 1 секунды задержки для OnTimer

ve bu

 int задержка = 0      // количество секунд задержки запуска первого события Timer 

hiç yapma, çünkü bu sadece saçmalık.

 
pusheax :

 int задержка = 0      // количество секунд задержки запуска первого события Timer 

hiç yapma, çünkü bu sadece saçmalık.

Bir bok uzmanı olarak soracağım. Bu gecikmenin fikri nedir ( int delay = 0 ) ve hangi amaçlarla (gecikme) önerildi? Nasıl anladın?

Ve açıklığa kavuşturmak istediğim ikinci soru, "OnTimer için 1 saniye gecikme için milisaniye sayısı " belirtmenin anlamı nedir? Hangi hedefe ulaşmaya çalışıyorsun? Örneğin, OnTimer'da her saniye üç milisaniye için gecikme?

 
TheXpert :

Şey, temelde önerdiğim buydu. Sadece kullanışlı bir pakete sarılmış.

Özellikle gereksiz olayları atlarsanız, saniyede bir korkunç bir küçük.

Anladığınız gibi, bu durumda bir sloganım var: "Onlar olmadan yapabilirsen, küçücük bir şey yok." Kullanıcı tarafından seçilen bir süre için ilk Zamanlayıcı olayının oluşturulmasında bir gecikmeye izin vermek için yalnızca terminal düzeyinde gereklidir. Aynı zamanda, özellikle görmediğim için kodunuzun önemi için yalvarmıyorum.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5