zamanlayıcı

 

Aslında bir soru - zamanlayıcı neden saniye cinsinden ölçülür?

Dürüst olmak gerekirse, yerel bir zamanlayıcı olacağını duyduğumda, atomik zaman biriminin bir milisaniye değil, bir saniye olacağı düşüncesi bile yoktu ...

Son zamanlarda kullanmak istediğimde pek de hoş olmayan (kendim için) bir keşif yaptım.


Ön koşullar çok basittir - zamanlayıcı genellikle senkronizasyon (veri hesaplamasını beklemek) veya gözlem (bir zamanlayıcı tarafından döngüye alınan bir uzman, IMHO, çok daha yeterli olacaktır) için kullanılır. Ve bu durumda ve bu durumda, bir saniye biraz fazla, yine IMHO, ama gerçekten zamanlayıcıda milisaniye görmek istiyorum.

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

Umarım geliştiriciler isteği gözetimsiz bırakmazlar. Gerekirse, servis masasına bir talepte bulunacağım.

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

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert :

Aslında bir soru - zamanlayıcı neden saniye cinsinden ölçülür?

Dürüst olmak gerekirse, yerel bir zamanlayıcı olacağını duyduğumda, atomik zaman biriminin bir milisaniye değil, bir saniye olacağı düşüncesi bile yoktu ...

Son zamanlarda kullanmak istediğimde pek de hoş olmayan (kendim için) bir keşif yaptım.


Ön koşullar çok basittir - zamanlayıcı genellikle senkronizasyon (veri hesaplamasını beklemek) veya gözlem (bir zamanlayıcı tarafından döngüye alınan bir uzman, IMHO, çok daha yeterli olacaktır) için kullanılır. Ve bu durumda ve bu durumda, bir saniye biraz fazla, yine IMHO, ama gerçekten zamanlayıcıda milisaniye görmek istiyorum.

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

Umarım geliştiriciler isteği gözetimsiz bırakmazlar. Gerekirse, servis masasına bir talepte bulunacağım.

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

Sözümü alın, ticaret terminalinin mevcut uygulaması ve içinde MQ saniye kullanan akışlarla çalışma algoritması için oldukça uygun bir çözüm.

Ayrıca, test cihazındaki zaman (anladığım kadarıyla) bir dakika çizelgesi temelinde oluşturulur ve bu nedenle daha küçük bir zaman ölçeği orada çalışmayacaktır.

not

Tabii ki, geliştiriciler daha ayrıntılı bir cevap verebilir, ancak bu, bir Uzman Danışman için tek bir zamanlayıcı (ve bir sınıf için ayrı bir zamanlayıcı değil) ve çalışmak için mevcut algoritma olup olmadığını anlamak için yeterlidir. Expert Advisor'da ve terminalin kendisinde ileti dizileri varsa, zaman aralığı bir saniyeden az veya hiç mümkün değil veya basitçe uzmanın çalışmasında tutarsızlığa neden oluyor.

Böyle bir kararın sonuçlarını hayal etmek için, zamanlayıcısı her 500 milisaniyede bir çağrılırsa, örneğin zamanlayıcı işlemesi bir dakika sürerse Expert Advisor'a ne olacağını anlamanız gerekir....

 

Interesting :

Ayrıca, test cihazındaki zaman (anladığım kadarıyla) bir dakika çizelgesi temelinde oluşturulur ve bu nedenle daha küçük bir zaman ölçeği orada çalışmayacaktır.

Test cihazının nesi var?

... bir saniyeden daha kısa bir zaman aralığı ya hiç mümkün değildir ya da Uzman Danışmanın çalışmasında tutarsızlığa neden olur.

Nasıl? Neden mümkün değil?

Böyle bir kararın sonuçlarını hayal etmek için, zamanlayıcısı her 500 milisaniyede bir çağrılırsa, örneğin zamanlayıcı işlemesi bir dakika sürerse Expert Advisor'a ne olacağını anlamanız gerekir....

Ve ne olacak? Ve zamanlayıcı 1s ise ne kadar kötü?

Yorum yazarken kafanız karışıyor mu?
 
TheXpert :

Aslında bir soru - zamanlayıcı neden saniye cinsinden ölçülür?

Dürüst olmak gerekirse, yerel bir zamanlayıcı olacağını duyduğumda, atomik zaman biriminin bir milisaniye değil, bir saniye olacağı düşüncesi bile yoktu ...

Son zamanlarda kullanmak istediğimde pek de hoş olmayan (kendim için) bir keşif yaptım.


Ön koşullar çok basittir - zamanlayıcı genellikle senkronizasyon (veri hesaplamasını beklemek) veya gözlem (bir zamanlayıcı tarafından döngüye alınan bir uzman, IMHO, çok daha yeterli olacaktır) için kullanılır. Ve bu durumda ve bu durumda, bir saniye biraz fazla, yine IMHO, ama gerçekten zamanlayıcıda milisaniye görmek istiyorum.

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

Umarım geliştiriciler isteği gözetimsiz bırakmazlar. Gerekirse, servis masasına bir talepte bulunacağım.

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

Saniye cinsinden zamanlayıcı bilinçli kararımızdır. Zamanlayıcı, öncelikle Uzman Danışmanların keneler olmadığında çalışmasını sağlamak için sağlanmıştır.

Senkronizasyon istiyorsanız, birbirine özel mesajlar gönderen farklı araçlarda birkaç Uzman Danışman kullanın.

Veya beklenen olaylar meydana geldiğinde ana uzmanınıza mesaj gönderen, örneğin 50 milisaniyelik bir fişe döngülü bir tür bekçi köpeği yazın. Bu durumda, mesajların teslim edilmesi garanti edilecektir (tabii ki sıra taşmadıkça).

 
stringo :

Saniye cinsinden zamanlayıcı bilinçli kararımızdır. Zamanlayıcı, öncelikle uzmanların kenelerin yokluğunda çalışabilmesi için sağlanır.

Bu bir zamanlayıcı olmadan yapılabilir ve bu arada, hemoroid olmadan bile - kendinize bir olay göndermeniz yeterlidir. Öyleyse neden işlevselliği genişletmiyorsunuz?

Senkronizasyon istiyorsanız, birbirine özel mesajlar gönderen farklı araçlarda birkaç Uzman Danışman kullanın.

Senkronizasyon verilerle olabilir. Örneğin, yerleşik bir gösterge. Göstergede böyle bir senkronizasyon nasıl çözülür? Danışmanları sormuyorum, orada her şey sorunsuz bir şekilde çözüldü. Ve Uyku göstergesinde, bu, tüm iş parçacığının ve dolayısıyla diğer tüm göstergelerin boşta kalma süresidir. Bu da senkronizasyon sırasında hemoroid anlamına gelir.

Veya beklenen olaylar meydana geldiğinde ana uzmanınıza mesaj gönderen, örneğin 50 milisaniyelik bir fişe döngülü bir tür bekçi köpeği yazın. Bu durumda, mesajların teslim edilmesi garanti edilecektir (tabii ki sıra taşmadıkça).

bir şey değişmezse yaparım...
 
TheXpert :

Test cihazının nesi var?

Nasıl? Neden mümkün değil?

Ve ne olacak? Ve zamanlayıcı 1s ise ne kadar kötü?

Yorum yazarken kafanız karışıyor mu?

Atomik zaman birimleri hakkında bilginiz varsa, muhtemelen işletim sisteminde ve yazılımın geri kalanında süreçlerin ve iş parçacıklarının nasıl düzenlendiğini de biliyorsunuzdur.

Ama size hatırlatmama izin verin (her ihtimale karşı, bilmeyenler olabilir) ana şeyler - Sistemde olan her şey süreçlere ve iş parçacıklarına bölünmüştür, her işlem bir iş parçacığından birkaçına kadar olabilir. Kabaca söylemek gerekirse, sistemde çalışan her yürütülebilir dosya bir SÜREÇ'tir. Her işlemin kendi önceliği vardır ve bu işlemdeki her iş parçacığının da kendi önceliği vardır.

Bu önceliklere bağlı olarak sistem, CPU zamanını her işleme (veya belirli bir işlemin iş parçacığına) tahsis eder.

Bu nedenle, istemci terminalinin mimarisi öyledir ki (bildiğiniz gibi) her çizelgede yalnızca bir Uzman Danışman ve birkaç gösterge çalıştırabilirsiniz. Bu durumda, uzmana bir ileti dizisi atanır, ancak her gösterge uzmandan kendi (tamamen bağımsız) ileti dizisini alır.

Her şey yoluna girecek, ancak uzmanın kendisi veya gösterge yalnızca kendi ipliğinde kesilebilir, yani. kod satırlarından herhangi biri tüm iş parçacığını kaplar ve bu iş parçacığındaki diğer eylemler mümkün değildir (tabii ki kene işleme konusunda şüpheler vardır, ancak büyük olasılıkla büyük resmin altındadır).

Aynı zamanda, her bir çizelge için, sistem tarafından sırayla işlenen kendi olay akışı oluşturulur.

Bu nedenle, zamanlayıcı işleme, göreceli olarak, zamanlayıcının önde gelen işlemesi 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 );
//----------------------------------------------------------------------------//
}

not

Strateji test ediciye gelince - Ve oradaki zamanı nasıl oluşturmayı öneriyorsunuz?

 

Interesting :

Bu nedenle, istemci terminalinin mimarisi öyledir ki (bildiğiniz gibi) her çizelgede yalnızca bir Uzman Danışman ve birkaç gösterge çalıştırabilirsiniz. Bu durumda, uzmana bir ileti dizisi atanır, ancak her gösterge uzmandan kendi (tamamen bağımsız) ileti dizisini alır.

Ne zamandan beri? Komut dosyaları ve danışmanlarla ilgili herhangi bir sorun görmüyorum, çünkü her biri kendi iş parçacığında çalışır.

Ve göstergelerin HEPSİ BİR iş parçacığında çalışır, bilinmesine izin verin ve bu, herhangi bir türkiye'de bir zamanlayıcı düzenleme görevini büyük ölçüde karmaşıklaştırıyor. Ve bazen gerçekten istersin.

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):

Çalışma örneği. Aptalca ve net bir şekilde düşünce seviyenizi gösterir, özellikle de bir önceki gönderi bağlamında.

Lütfen bir daha gönderilerime cevap vermeyin yoksa susmayacağım, size kötü söz söyleyip ban yerim.

Ancak, isterseniz, yazın, programlama ile ilgili herhangi bir konuda, cehenneme, bir yasakla postebatsya yapmaktan mutluluk duyarım.

Strateji test ediciye gelince - Ve oradaki zamanı nasıl oluşturmayı öneriyorsunuz?
Olmaz, şimdiye kadar memnunum.
 
TheXpert :

Ne zamandan beri? Komut dosyaları ve danışmanlarla ilgili herhangi bir sorun görmüyorum, çünkü her biri kendi iş parçacığında çalışır.

Ve göstergelerin HEPSİ BİR iş parçacığında çalışır, bilinmesine izin verin ve bu, herhangi bir türkiye'de bir zamanlayıcı düzenleme görevini büyük ölçüde karmaşıklaştırıyor. Ve bazen gerçekten istersin.


Cevap vermek istemedim ama dayanamadı

Komut dosyaları bu konuda beni ilgilendirmiyor, ancak danışmanların ayrı iş parçacıklarında (her biri kendi içinde) çalışmadığını söylediğimi anlamıyorum. Beni metinde tam tersini belirttiğim yere yönlendirin ....

Onlarla çok çalışmadığım için göstergeler hakkında emin değilim (bu sorun muhtemelen forumlarda gündeme geldi ve geliştiriciler bir şey olursa düzeltir). Ama eminim ki her hindi için kendi zamanlayıcınızı yazabilirsiniz (uzmana bağlı değil), bu fırsatı zaten kullandım.

Muhtemelen hindiler hakkında söylenmesi gereken şey.

TheXpert :

Çalışma örneği. Aptalca ve net bir şekilde düşünce seviyenizi gösterir, özellikle de bir önceki gönderi bağlamında.

Ve çalıştığından kim şüphe duyabilir ki, başlatma bloğunda belirtilen bildirilen 1 yerine her 2 saniyede bir yalnızca zamanlayıcı (bu bir enfeksiyondur) yürütülür.

Özellikle sizin için, bir uzmana kodladım, zamanlayıcıyı çağırma sorunu zaten görünür olmasına rağmen (Açıklık için, resimlerde her şeyin daha uygun ve daha kolay iletilmesinin daha kolay olduğunu söylüyorlar)...

Şimdi geriye yalnızca OnTime işlem süresi 1 saniye sürerse (örnekte sırasıyla bir saniye ve iki) OnTimer'ın her 500 milisaniyede bir nasıl çağrılacağını bulmak kalıyor?

TheXpert :

Lütfen bir daha gönderilerime cevap vermeyin yoksa susmayacağım, size kötü söz söyleyip ban yerim.

Ancak, isterseniz, yazın, programlama ile ilgili herhangi bir konuda, cehenneme, bir yasakla postebatsya yapmaktan mutluluk duyarım.

Evet lütfen cevap veremem...
 
Sadece bir anlaşmazlıkta bir kişi gerçeği bulabilir ve her iki tartışmacının da yeterliliği durumunda, kişi kendi görüşüyle (doğru) kalır ve ikincisi fikrini (yanlış) birincinin görüşüne değiştirir.

Bu yüzden muhatabı göndermeyin, bunun yerine neyin yanlış olduğunu açıklayın ya da sadece şunu yazın: "Yanılıyorsun, bilgiyi Google'da ara."

Anladığım kadarıyla forum karşılıklı yarar sağlayan bir sohbet, sadece geliştiriciye sorular varsa, servis masasına gidin.

ilginç

MQL5 hızıyla denemeler yapıyorum, bu yüzden şunu söyleyeceğim: Çoğu Uzman Danışman, OnTick işlevini 0,1 saniyeden daha kısa sürede yürütür.


TheXpert'e

Bu kadar acele neredesin?
Ama bir saniyeden daha kısa bir zamanlayıcıya sahip olmanın anlamını görmüyorum. İki elektron çarpıştığında ne bekliyoruz?
Eğer öyleyse, o zaman döngüye girin ve Sleep().

 

mrProF :

ilginç

MQL5 hızıyla denemeler yapıyorum, bu yüzden şunu söyleyeceğim: Çoğu Uzman Danışman, OnTick işlevini 0,1 saniyeden daha kısa sürede yürütür.

Oraya ne koyacağına ve ne kadar veri işleyeceğine bağlı ve MQL5'in yeterince hızlı olduğunu iddia etmiyorum...
 

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

mrProF :

Ama bir saniyeden daha kısa bir zamanlayıcıya sahip olmanın anlamını görmüyorum.

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

Eğer öyleyse, o zaman döngüye girin ve Sleep().

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