Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 89
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Şimdiye kadar, GetTickCount'un bahsettiğim tek dezavantajını görüyorum - sistem zamanlayıcısının çözünürlüğü ile sınırlı, evet, bu ciddi bir sorun. Gerisi çok az pratik kullanım içindir. 15 milisaniyelik ultra kısa testler yapıyor olmanız gerçeği - kimse yapmaz. Bu tür sonuçlar kararsızdır. Testin en az yarım saniye sürmesi gerekir, o zaman zaten bir şey hakkında konuşabilirsiniz.
15 milisaniyelik ultra kısa testler yapıyor olmanız gerçeği - kimse yapmaz. Bu tür sonuçlar kararsızdır. Testin en az yarım saniye sürmesi gerekir, o zaman zaten bir şey hakkında konuşabilirsiniz.
Hatalısınız. Bu 15 milisaniye boyunca GetTickCount() işlevi 6.000.000'den fazla kez çağrılır.
Hesabım doğru. GetTickCount() değerini her 1/(2^6)=1/64 saniyede bir (15625 mikrosaniye) değiştirin.
Geliştiriciler, lütfen onaylayın.
Hatalısınız. Bu 15 milisaniye boyunca GetTickCount() işlevi 6.000.000'den fazla kez çağrılır.
Çalışma kodunun performansı (vakumdaki küresel bir at değil) ölçüldüğünde, yeterli bir süre boyunca (yüzlerce milisaniye ve daha fazla) yarışır. Bunun nedeni, sistemin performansının ve iş yükünün sürekli değişmesidir. Bir an o bir ve bir sonraki o farklı. Ve kısa aralıklarla, sonuçlar testten teste büyük ölçüde değişecektir. Bu nedenle, daha uzun bir aralığa ihtiyaç vardır ve orada mikrosaniyeler artık bir rol oynamaz.
Daha ileri. Tekliflerimiz milisaniye cinsindendir. Pingler de milisaniye cinsinden sayılır. Bu nedenle, burada mikrosaniye nereye ekleyeceğimi göremiyorum. Ancak, mesele bu değil.
Şimdi her iki işlevin de eksikliklerini gidermek için durumdan nasıl çıkılacağına dair bir çözüm bulmamız gerekiyor. Geliştiriciler için çok az umut var.
Şimdi her iki işlevin de eksikliklerini gidermek için durumdan nasıl çıkılacağına dair bir çözüm bulmamız gerekiyor. Geliştiriciler için çok az umut var.
Bunun gibi bir formülle ilk yaklaşıma ulaşmanın mümkün olduğunu düşünüyorum:
Şimdilik, bu sadece bir düşünce.
Mikrosaniye kullandığım bazı yerler
Mikrosaniye kullandığım bazı yerler
Yani zamanlayıcı öncelikle milisaniyedir. İkincisi, hatası GetTickCount() ile aynıdır, yani. 15 milisaniye. Dolayısıyla burada mikrosaniyenin ne anlamı var çok net değil. Aralığı mikro doğrulukla hesapladığınızı varsayalım, ancak aslında birkaç MILLIsaniye sonra veya daha önce gelecektir.
Yani zamanlayıcı öncelikle milisaniyedir. İkincisi, hatası GetTickCount() ile aynıdır, yani. 15 milisaniye. Dolayısıyla burada mikrosaniyenin ne anlamı var çok net değil. Aralığı mikro doğrulukla hesapladığınızı varsayalım, ancak aslında birkaç MILLIsaniye sonra veya daha önce gelecektir.
ve komutlar kuyruğa alınır ve sırayla yürütme 5 saniye içinde olabilir ..
Şimdi her iki işlevin de eksikliklerini gidermek için durumdan nasıl çıkılacağına dair bir çözüm bulmamız gerekiyor. Geliştiriciler için çok az umut var.
Ne yazık ki.
Sadece bu seçeneği önerebilirim:
Neden Eyvah?
Çünkü yerel saatin değişmesi veya sadece bir yazılımın donması durumunda RealMicrosecondCount işlevine 16 milisaniyeye kadar hata eklenebilmektedir. Ve bunun bir yolu yok.
Ancak öte yandan, kış (yaz) saatine geçerken, kayış değiştirirken, internet üzerinden saat güncellenirken ölümcül sonuçlar olmayacaktır.
Ne yazık ki.
Sadece bu seçeneği önerebilirim:
Neden Eyvah?
Çünkü yerel saatin değişmesi veya sadece bir yazılımın donması durumunda RealMicrosecondCount işlevine 16 milisaniyeye kadar hata eklenebilmektedir. Ve bunun bir yolu yok.
Ancak öte yandan, kış (yaz) saatine geçerken, kayış değiştirirken, internet üzerinden saat güncellenirken ölümcül sonuçlar olmayacaktır.
Henüz test etmedim ama 16 ms'den pek emin değilim. Bu konuyu google'da arattığımda sistem timer hatası genelde yaklaşık 10 ms veya 10-16 arası veriliyor.
İşte 3.8e-07 saniyelik bir doğruluk sağlayan yüksek çözünürlüklü bir winapi zamanlayıcı kullanan bir varyant.