Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 94
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Ancak GetMicrosecondCount'un mevcut sürümde programın tüm çalışmasını bozan pratik uygulamasını nasıl görüyorsunuz? pratik uygulamayı tarif et
örneğin, C ++ veya burada Renat tarafından açıklananlar dışında herhangi bir seçenek görmüyorum, yani. kod yürütme süresinin mcs cinsinden doğrulukla ölçülmesi
onlar. Dürüst olmak gerekirse inatçılığını anlamıyorum
Bir fantezi uçuşu varsa, bu işlevin kapsamı çok geniştir.
Aynı anda farklı periyotlarla birden çok zamanlayıcı çalıştırmanıza izin veren multitimerdan yukarıda bahsetmiştim.
fxsaber zaten bunun hakkında da yazdı .
Milisaniye işlevine kıyasla bir mikrosaniye işlevi, yalnızca yürütme hızını test etmek için değil, aynı zamanda Uzman Danışmanların çalışması sırasında çeşitli telemetrik bilgileri toplamak için de uygundur.
Böyle bir telemetrinin doğruluğu 16 ms ise (daha doğrusu 1/64 s = 15625 mikrosaniye), bu çok büyük bir hatadır.
Yapılandırılmış, ancak yardımcı olmuyor - nedenini anlamıyorum. Doğru, sunucum ntp2.stratum2.ru
GetTickCount'u bu kadar büyük zaman aralıklarına sahip bir sayaç için kullanırsanız, herhangi bir sorun olmamalıdır.
GetMicrosecondCount kullanıyorsanız sorunlar olacaktır.
Mikrosaniye işlevinin kullanılması temel bir noktaysa, işlevin bu sürümünü kullanmak daha iyidir.
Dikkat edilmesi gereken bilgiler:
İşlevlerin yaklaşık yürütme süresi:
- GetTickCount - ~2 ns
- GetMicrosecondCount - ~30ns
- RealMicrosecondCount - ~40ns
GetTickCount'u bu kadar uzun süreler için bir sayaç için kullanırsanız, herhangi bir sorun olmamalıdır.
GetMicrosecondCount kullanıyorsanız sorunlar olacaktır.
Mikrosaniye işlevinin kullanılması temel bir noktaysa, işlevin bu sürümünü kullanmak daha iyidir.
Dikkat edilmesi gereken bilgiler:
İşlevlerin yaklaşık yürütme süresi:
- GetTickCount - ~2 ns
- GetMicrosecondCount - ~30ns
- RealMicrosecondCount - ~40ns
Başka birinin kodunu kullanıyorum, bir şekilde bu işlevler yok, ancak senkronizasyonsuzlaştırma etkisi oluşuyor.
Bilgisayarın yerel saatinin, zamanı mikrosaniye cinsinden ölçmek için kullanılan GetMicrosecondsCount'a yapılan iki çağrı arasında değişmiş olma olasılığı nedir?
Her şeyden önce, sistem saatinin İnternet saati ile belirtilen senkronizasyon süresine bağlıdır. Örneğin, senkronizasyonu günde bir kez ayarladım ve bu süre zarfında 1 saniyeden fazla tutarsızlık çıkıyor. Birisi saatte bir, hatta daha sık senkronize oluyor. İşte olasılık.
...çünkü GetMicrosecondCount()'un bu özelliğini zaten biliyorum ve bu fonksiyon GetTickCount'tan bir kat daha yavaş.
Böyle bir yavaşlığın, yerel PerfomanceCount'u elde etmenin yanı sıra yerel saatin ayrıca seğirmesinden kaynaklandığına inanıyorum, bu nedenle bu kötü hizmet için ödeme yapmanız gerekiyor. Hız doğrudan PerformanceCount ve GetTickCount ile karşılaştırılsaydı, fark çok daha küçük olurdu.
Dürüst olmak gerekirse, 2-20 nanosaniye söz konusu olduğunda yürütme hızıyla ilgili bu konuşmayı gerçekten anlamıyorum. Bu farkı ancak neredeyse boş bir döngüyü (bu işlevle) yüz milyon yineleme boyunca çalıştırarak gerçekten hissedebilirsiniz. Bu başlı başına kötü tasarlanmış bir çözümdür.
Ve evet, bir testereye bir levye taktığınızda, tarihi saniyeler içinde bile değiştirdiğinizde, saf bir WinAPI işlevi (GetTickCount nedir, QueryPerformanceCounter nedir) tarafından havaya uçurulacaksınız. Genel olarak, varlığından bahsettiğiniz iddia edilen hiçbir koruma yoktur. Bir sorun olarak parmaktan emildi ve sözde bir çözüm.
Bu doğru - WinAPI böyle ve gerçeklik böyle.
Hatalısınız. Burada özellikle WinApi kullanımıyla kodu burada sonuçlandırdım. Koşun, süreçteki saati değiştirin ve sonuca bakın.
Argümanlarınız spekülasyona dayanıyorsa, sizinle herhangi bir diyaloğu nasıl yürüteceğiniz çok açık değil. Ve konunun tartışılmasının seyrine kendinizi alıştırmanın gerekli olduğunu bile düşünmüyorsunuz.
Bir fantezi uçuşu varsa, bu işlevin kapsamı çok geniştir.
Aynı anda farklı periyotlarla birden çok zamanlayıcı çalıştırmanıza izin veren multitimerdan yukarıda bahsetmiştim.
fxsaber zaten bunun hakkında da yazdı .
Milisaniye işlevine kıyasla bir mikrosaniye işlevi, yalnızca yürütme hızını test etmek için değil, aynı zamanda Uzman Danışmanların çalışması sırasında çeşitli telemetrik bilgileri toplamak için de uygundur.
Böyle bir telemetrinin doğruluğu 16 ms ise (daha doğrusu 1/64 s = 15625 mikrosaniye), bu çok büyük bir hatadır.
Renat'ın yazdığı yürütme hızını sürekli ölçüyorum, hiç sorun görmedim, boşuna dolanıyor gibisin ya da daha önce yazılanları değiştirmek istemiyorsun, dedikleri gibi, çıplak ... ve sonra her şeyin boşuna yazıldığını anlıyorsunuz, kusura bakmayın, ancak sağladığınız aynı multitimer sessizce sorunsuz bir şekilde uygulanıyor, ancak bunun için ödeme yapmanız gerekecek, Renat ayrıca cevabında yukarıda bir açıklama yaptı. benim sorum
Gerçeğin dudakları, deneyimsizler için dilsizdir.
iyi evet ))
Her şeyden önce, sistem saatinin İnternet saati ile belirtilen senkronizasyon süresine bağlıdır. Örneğin, senkronizasyonu günde bir kez ayarladım ve bu süre zarfında 1 saniyeden fazla tutarsızlık çıkıyor. Birisi saatte bir, hatta daha sık senkronize oluyor. İşte olasılık.
sorunun tamamını okudun mu?
... GetMicrosecondsCount'a yapılan iki çağrı arasında ...