zamanlayıcı - sayfa 2

 
TheXpert :

Bir tane daha... Bir saatliğine kardeş değil misiniz?

Bu var olmadığı anlamına gelmez. Herkesin görevleri farklıdır.

Yelken... Okuyabilir miyiz? Hindiler için nasıl yapıldığını gösterin.


  1. hayır kim olduğunu bilmiyorum :D
  2. Dürüst olmak gerekirse, böyle bir görevle karşılaşmadım, görevlerim için - ne kadar hızlı sayılır - o kadar iyi.
  3. Üzgünüm, baktım)) Hangi akışları - neler olup bittiğini gerçekten araştırmadım. Bu nedenle, göreve bağlıdır, gerçekten sadece türkiye'yi vuracak bazı sol komut dosyası çalıştırırsanız.
Veya bir seçenek olarak - hesaplamaları dll-ku'ya ve her şeyi arka arkaya ve ayrı bir iş parçacığına itmek - ama bu bir sapkınlık gibi görünüyor.
 

Interesting :

... zamanlayıcı işlemi, göreceli olarak, önceki zamanlayıcı işlemi tamamlanana kadar çağrılamaz. Veya daha basit bir şekilde ifade etmek gerekirse, OnTimer() onu işlemesi gereken iş parçacığı meşgul olana kadar yürütme hakkını elde etmeyecektir.

Zamanlayıcıyı ikinci iş parçacığı tarafından işlemeye başlamanın imkansızlığını göstermek için bu örneği kullanabilirsiniz (aptalca ama açıkça):

 int OnInit ()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer ( 1 );
//----------------------------------------------------------------------------//
return ( 0 );
//----------------------------------------------------------------------------//
}

void OnTimer ()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print ( TimeLocal ());
Sleep ( 2000 );
//----------------------------------------------------------------------------//
}
Onlar. Zamanlayıcı olaylarının ortaya çıktığı ortaya çıktı   NewTick olaylarıyla aynı şekilde yoksayılabilir mi? Ve belirli koşullar altında, Expert Advisor'ın etkinlik sırasına konulamayabilirler mi?
 
Yedelkin :
Onlar. Zamanlayıcı olaylarının ortaya çıktığı ortaya çıktı   NewTick olaylarıyla aynı şekilde yoksayılabilir mi? Ve belirli koşullar altında, Expert Advisor'ın etkinlik sırasına konulamayabilirler mi?
NewTick olayı bu durumda bir istisnadır. Diğer olay türleri için kontrol yoktur. Olay işleyicileri, olay kuyruğunun dolmasından daha yavaş çalışırsa, sıra taşar ve bazı olaylar atlanır. Yukarıdaki örnekle ilgili olarak, yalnızca Expert Advisor'ın yalnızca bir yürütme iş parçacığı olduğunu ve olayların işlenmesinin, olayların kuyruğa girme sırasına göre sırayla gerçekleştirildiğini onaylar.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
antt :
NewTick olayı bu durumda bir istisnadır. Diğer olay türleri için kontrol yoktur. Olay işleyicileri, olay kuyruğunun dolmasından daha yavaş çalışırsa, sıra taşar ve bazı olaylar atlanır. Yukarıdaki örnekle ilgili olarak, yalnızca Expert Advisor'ın yalnızca bir yürütme iş parçacığı olduğunu ve olayların işlenmesinin, olayların kuyruğa girme sırasına göre sırayla gerçekleştirildiğini onaylar.

Harika, açıklama için teşekkürler! Mantıklı ve anlaşılır, spekülasyona gerek yok

İlginç , olay işleme çoklu iş parçacığıyla ilgili sorunuz yanıtlandı gibi görünüyor. Ve OnTimer'ı bile tahmin ettim :)

 
Yedelkin :
Onlar. Zamanlayıcı olaylarının ortaya çıktığı ortaya çıktı   NewTick olaylarıyla aynı şekilde yoksayılabilir mi? Ve belirli koşullar altında, Expert Advisor'ın etkinlik sırasına konulamayabilirler mi?

Anladığım kadarıyla şöyle bir şey oluyor:

1. tüm olaylar bir sıraya yerleştirilir. Kuyrukta bir NewTick olayı varsa veya böyle bir olay işleniyorsa, NewTick yok sayılır ve sıraya alınmaz.

2. Programcı hangi olayları ve bunları nasıl işleyeceğini bağımsız olarak seçer. Aynı zamanda, OnTrade, OnTimer ve OnTick işleyicileri başlıcalarıdır ve genellikle Uzman Danışmanlarda kullanılır.

3. Bir olay işlenirken diğerleri işlenemez.

4. Olay yığını taşarsa, eski olaylar işlenmeden kuyruktan kaldırılır.

5. Yukarıdaki üç olay türünden, Ticaret en az sıklıkla ve NewTick en sık oluşturulur (ancak, yukarıda açıklanan tikler kuyruğa dahil edilmeyebilir).

6. Bu açıdan en ilginç işleyici, grafik + kullanıcı olaylarından tüm olayları işleyen OnChartEvent'tir.

Aynı zamanda, olay kuyruğunu kolayca taşabilen bu olayların çok sayıdadır (bu tür çok sayıda olay varsa).

Bence bu durumda kurtaran tek şey OnChartEvent'te işlenen olayların rastgele ve asenkron olarak üretilmesidir.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 

Yedelkin :

İlginç , olay işleme çoklu iş parçacığıyla ilgili sorunuz yanıtlandı gibi görünüyor. Ve OnTimer'ı bile tahmin ettim :)

Evet, prensipte, özellikle EA'nın kendisinde, bir iş parçacığı hakkında hiçbir şüphem yoktu, kod bir iş parçacığında yürütülür.

Ve tarif ettiğim şey, MT'de çoklu iş parçacığının görüneceği (en azından olay akışı bir nedenden dolayı bölünene kadar) gelecekle ilgili bir rüya (örneğin MT6 hakkında) gibidir.

Başlangıçta en azından tüm ChartEvent olaylarını ayrı bir iş parçacığına ayırırdım, ancak geliştiriciler burayı daha iyi bilir ...

 

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.

 
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.

Kesinlikle.
 
TheXpert :
Kesinlikle.
Bir sır değilse (yöntem) nasıl görünüyor?
 
Yedelkin :
Bir sır değilse (yöntem) nasıl görünüyor?

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?