Hatalar, hatalar, sorular - sayfa 1409
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
Yeni yapı 1200'ün duyurusu ile ilgili olarak.
Bu tür çözümler, datetime time ile birlikte yapıya long time_msc eklendiğinde çok zor görünüyor. Soru şu ki, o zaman burada neden zamana ihtiyaç var? Anlamsız bir kaynak israfı.
Aynısı uint flags için de geçerlidir, uchar orada veya en azından ushort yeterli olacaktır (bu zaten gelecek için önemli bir marjla). Ve orada uint için ne - akıl anlaşılmaz. Geliştiricilerin rasyonel veri depolamayı düşünmeyi tamamen bırakması üzücü. Bir dizi kene, kendi içinde devasa bir hacimdir. Ve bir de hafızanın çok dikkatsizce israf edilmesi var...
Eh, zaman söz konusu olduğunda. Belki de MQL'ye milisaniye içeren normal bir zaman türü eklemenin zamanı gelmiştir? Aksi takdirde, bu koltuk değneklerinden bir yığın olacaktır. Ayrıca, şu anki haliyle datetime son derece mantıksız bir şeydir: 8 bayt tüketir, ancak yalnızca saniyeler içerir - ve buna kimin ihtiyacı var? Bu görev için önümüzdeki 90 yıl için 4 bayt ( uint ) yeterlidir (ve aramızda Duncan MacLeods yoktur).
Bu çözüm, zamanı saniye cinsinden veya SymbolInfoTick() işlevini kullanan eski programlarla uyumluluğu korur.
Tecrübemize güvenin, "haydi bir veya iki bayta vuralım" oyunu yolda korkunç sorunlara yol açar. Bunu anlamak, yalnızca 10 yıl sonrasına yazılım yazdığınızda gelir.
Saniye cinsinden 4 bayt tarih saat, 90 yıl sonra değil, 2038'de (22 yıl daha) sona erer.
TM=30M burada ne anlama geliyor?:
Tecrübemize güvenin, "haydi bir veya iki bayta vuralım" oyunu yolda korkunç sorunlara yol açar. Bunu anlamak, yalnızca 10 yıl sonrasına yazılım yazdığınızda gelir.
Yani bir popoda nasıl yapılacağından bahsetmiyoruz. Elbette geleceğe bir rezerv bırakmalıyız. Ama makul sınırlar içinde. Burada, tartışılan durumda, bayraklar alanı yalnızca diğer altı alan hakkında bilgi depolar. Ushort yazarsanız, bu 10 alan için bir marj verir. O zaman daha fazlası nerede? İçine başka ne doldurulabilir?
Örneğin, orada dolu bir bardak saklamayı planlıyorsanız, 32 bit bile yeterli olmayacaktır. O zaman neden hemen 64 bit yapmıyorsunuz? Açıkçası, bir bardak için tamamen farklı bir yapıya ihtiyaç duyulacaktır.
Elbette, fazladan 2 baytın çok önemli olmadığını anlıyorum. Ama burada 2 bayt, orada 2 bayt olduğu ortaya çıktı ... ve sonunda düzgün bir şekilde çalışıyor.
Saniye cinsinden 4 bayt tarih saat, 90 yıl sonra değil, 2038'de (22 yıl daha) sona erer.
Size söylüyorum - genişlemeyen ekonomik yapılarla kendinize eziyet edin, onlarca yıl, uzun vadeli desteğe ihtiyaç olduğunu düşünmeye başlayın ve her şey netleşecek.
4 baytlık bir tarih saatiyle, birçok yazılım sadece 2038'de büyük taşma sorunları yaşayacak ve bu da eski kodun sarsıcı yeniden yazılmasına yol açacaktır. Ayrıca, mat operasyonları ve deltalarda taşmalar daha da erken yakalanacaktır.
25 yıldır programlama yapıyorum ve neden bahsettiğimi biliyorum. Hayatım boyunca ekonomik programlar yazdım. Terminallerimize bakın - küçük boyutlu tek exe dosyalarında bulunan işlevsellik miktarı açısından gerçekten başyapıtlardır. Sadece eğlence için, temiz bir makinede tek bir çıplak terminal.exe çalıştırın ve ne olduğunu görün.
Ama şimdi her şey değişti - ya hemen hemen her yerde bir marjla 64 bit kod yazarsınız ya da geleceğin dışında kalırsınız. Bu bizim için özellikle önemlidir, çünkü kapalı kutular değil, uyumluluk için zorunlu bir gereklilik olan geliştirme platformları yayınlıyoruz.
Birkaç yıl içinde, yine de yatırım yapmadığımız ortaya çıkacağı için dirseklerimizi ısıracağız. Ve temel konfigürasyonda onlarca gigabaytlık bilgisayarların etrafında.
TM=30M burada ne anlama geliyor?:
4 baytlık bir tarih saatiyle, birçok yazılım sadece 2038'de büyük taşma sorunları yaşayacak ve bu da eski kodun sarsıcı yeniden yazılmasına yol açacaktır. Ayrıca, mat operasyonları ve deltalarda taşmalar daha da erken yakalanacaktır.
MQL4 kodlarını mı kastediyorsunuz? (tarih saatinin başlangıçta int tabanlı olduğu yerde). Sonra tabii ki uyumluluk sorunlarıyla ilgili başka bir konuşma. Ama başlangıçta rasyonalite hakkında bir konuşma başlattım. Dolayısıyla bu durumda rasyonalite zarar görür.
Ancak, her durumda, milisaniye içeren yeni bir zaman türünün gerekli olduğunu kabul edeceğinizi düşünüyorum. Ve geri sayım 1970'den değil, örneğin 1900'den çok daha erken başlamalıdır. Bu sadece Forex ile ilgili değil. Borsalar çok eski zamanlardan beri var olmuştur.
...
Ancak, her durumda, milisaniye içeren yeni bir zaman türünün gerekli olduğunu kabul edeceğinizi düşünüyorum. Ve geri sayım 1970'den değil, örneğin 1900'den çok daha erken başlamalıdır. Şimdi sadece Forex ile ilgili değil. Borsalar çok eski zamanlardan beri var olmuştur.
Tek sorun, Çar Bezelyesi döneminde bilgisayar kullanmanın moda olmaması ve mübadelenin tik geçmişinin gelecek nesiller için kaydedilmemiş olması...
Evet konuşma keneler hakkında mutlaka aynı değildir. Örneğin, günlük mumlar oldukça korunmuştur.
Sormaya utanıyorum, neden 1900 .. yıl için günlük mum fiyatlarına ihtiyacınız var? Teknik analiz yap? Tarihte test danışmanları?
MetaTrader 5 terminalinin x64 sürümleri için yürütme hızında 2 kattan 10 kata artış.
Sonuç buna değer. Yine de derleme hızı üzerinde çalışıyoruz.
Yakın zamanda MQL'nin hızının zaten C++'a yakın olduğu konusunda övündünüz. Ve şimdi, sözlerinizden, zaman zaman C ++'ı geçeceğiniz ortaya çıkıyor? ))
Özel olarak hazırlanmış bazı testlerde böyle bir ivme yakaladıysanız, bu diğer durumlarda bir ivme olacağı anlamına gelmez. Ancak derlemenin frenlenmesi her durumda geçerlidir.