Hatalar, hatalar, sorular - sayfa 2939
![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
Tüm fiyatlar, beşinci ondalık basamağa kadar doğru olarak görüntülenir ve bir nedenden dolayı, aynı listedeki bir kişi şu şekilde görüntülemeye karar verdi: Neden bu dünyada? Bu bir hata mı yoksa sonuç tek bir görüşte mi taranmalı? Diyelim ki, onu PrintFormat veya fprint ile fırçalayacağım, ancak prensipte bu, bir sayının yanlış temsili değil mi?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
Nikolai Semko , 2020.01.05 21:41
Bu soru her zaman gelir.
Herkes sürekli olarak IEEE 754 standardından bahseder, ancak çoğu zaman insanlar ya karmaşıklık ya da tembellik nedeniyle Wikipedia'ya gittiklerinde, bu standardın anlamını anlamadan ayrılırlar.
Bu gönderiye daha sonra başvurabilmek için bu standardı olabildiğince kısa ve basit terimlerle açıklamaya çalışmak için biraz zaman ayıracağım.
Yani çift tip 8 bayt = 64 bitten oluşur. ( yüzer 4 bayt = 32 bit)
Ve çift sayı gösterimi ve yüzer 3 bileşenden oluşur: işaret ( işaret ), üs ve mantis
ÇİFT:
BATMADAN YÜZMEK:
Doğal olarak, bu biçimde sayıların ondalık gösterimi yoktur, yalnızca ikili vardır.
Sayıların ikili gösterimi ve ondalık sayılarla ilişkileri hakkında biraz bilgi:
2 4 = 10000 2 = 16 10
2 3 = 1000 2 = 8 10
2 2 = 100 2 = 4
2 1 = 10 2 = 2
2 0 = 1 2 = 1 10
2 -1 = 0,1 2 =(1/2) 10 = 0,5 10
2 -2 = 0,01 2 = (1/4) 10 = 0,25 10
2 -3 = 0.001 2 = (1/8) 10 = 0.125 10
2 -4 = 0.0001 2 = (1/16) 10 = 0.0625 10
2 -5 = 0.00001 2 = (1/32) 10 = 0.03125 10
2 -6 = 0,00001 2 = (1/64) 10 = 0,015625 10
2 -7 = 0.0000001 2 = (1/128) 10 = 0.0078125 10
2 -8 = 0.00000001 2 = (1/256) 10 = 0.00390625 10
2 -9 = 0.000000001 2 = (1/512) 10 = 0,001953125 10
2 - 10 = 0.0000000001 2 = (1/1024) 10 = 0,0009765625 10
2 - 11 = 0.00000000001 2 = (1/2048) 10 = 0.00048828125 10
2 - 12 = 0.000000000001 2 = (1/4096) 10 = 0.000244140625 10
2 - 13 = 0.0000000000001 2 = (1/8192) 10 = 0.0001220703125 10
double türü için örnekler düşünün :
Örnek 1
Bir ondalık sayımız var: 891677.4025191
Bu sayı ikili biçimde temsil edilebilir:
11011001101100011101.0110011100001011011111011111000101000001111101110001110
(kim bakmak ister)
Belirli bir sayının mantisini, yalnızca virgül 19 bit sola hareket ettirerek (bu durumda) seçeriz, böylece ilk üniteden sonra gelir.
1. 10110011011000111010110011100001011011111011111000101 000001111101110001110
Ama elimizde sadece 52 bitlik bir mantis var. Yani ilk 52 anlamlı biti alıyoruz
Mantis = 10110011011000111010110011100001011011111011111000101
Üs = (19+1023) 10 = 10000010010 2 1023 10 (01111111111 2 ) ile toplama, 01111111111 2 sıfırdır, daha büyük olan her şey pozitif, daha az olan her şey negatiftir. Onlar. üs değerini geri almak için, 11 bitlik üs değerinden 1023 çıkarılmalıdır.
Toplamda 891677.4025191 numaramız double tipte şöyle görünecektir :
0 10000010010 10110011011000111010110011100001011011111011111000101
Ama o zamandan beri Bu ikili bir gösterim olduğundan, onu tam olarak ondalık sayıya çeviriyoruz:
891677.4025190 99996425211429595947265625 olacak
Örnek #2
Ondalık bir sayımız var: -0.00000145258556224114
Bu sayı ikili biçimde temsil edilebilir:
-0.000000000000000000110000101111101100111010110111010011010101001111001110
Belirli bir sayının mantisini, sadece virgül 20 haneyi sağa kaydırarak seçeriz, böylece ilk birimden sonra gelir.
1. 1000010111101100111010110111010011010101001111001110 * 2 -20
Mantis = 1000010111101100111010110111010011010101001111001110
Üs = (-20+1023) 10 = 0 1111101011 2
eksi işareti, ilk bitin 1 olduğu anlamına gelir.
Toplamda -0.00000145258556224114 sayımız çift tipte şöyle görünecektir:
1 0 1111101011 1000010111101100111010110111010011010101001111001110
Onu ondalık sayıya çevirelim:
-0.00000145258556224113 991124017968015191826225418481044471263885498046875 olacak
Sizin durumunuzda, sorun 0,01 sayısıyla ortaya çıkıyor, çünkü çift tipte şu şekilde temsil edilecektir:
0 01111111000 0100011110101110000101000111101011100001010001111011
ondalık basamağa dönüştürüldüğünde 0,01000000000000000020816681711721685132943093776702880859375'e eşittir 10
Sunum ile ise
3 10 = 1,5*2 = 1,1 2 *2 1
5 10 = 2,5*2 = 10,1 2 *2 1
6 10 = 1,5*4 = 1,1 2 *2 2
7 10 = 3,5*2 = 11,1 2 *2 1
sorun değil.
Neden çift 0,01 gerçekten 0,01'den daha büyük?
Bu yüzden:
0 01111111000 010001111010111000001101011110101110111011011101110110111011011011011101101101101110111011668171721681717216851329430937767028880859375 Hata = 0.000 000 000 000 000 208166817 ...
0 01111111000 01000111101011101101010001110101111011101011110110110111010110101111010101000111101 0 - 0.0099999999999999998473443341140409756911404097569175064563751220703125 Hata = - 0.000 000 000 000 001 52655666 ...
Bu süreç kimyasını anlamak için şu hesaplayıcılarla oynayabilirsiniz:
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
https://baseconvert.com/ieee-754-kayan nokta
https://baseconvert.com/ieee-754-kayan nokta
https://baseconvert.com/ieee-754-kayan nokta
Teşekkürler, eğitici. Prensip olarak, bu MQ taranmalıydı, ancak taranmamalı mıydı yoksa karar özellikle kullanıcının kararına mı bırakılmıştı?
hm. Danışmanın parametrelerini kaydetme konusunda bir işlev veya başka bir ek işlev (kütüphane, kod) var mı?
Görev, ondeinit'e, örneğin bir sembol üzerinde bir danışman çalıştırırken (ek bir işlev hala dönemin analizidir), ayarlar dosyası kümesini kaydedecek bir kod koymaktır.
Örneğin - danışman-sembol-döneminin adı.
Yeniden yazılabilir dosya - yalnızca en son karakter ayarları gereklidir.
Örneğin, varsayılan olarak test cihazı, son çalıştırma için ayarları kaydeder.
tünaydın. sorun uzak bilgisayarda, MQL5 web sitesine ulaşamıyorum, bu nedenle satın alınan göstergeyi indiremiyorum. kimse karşılaşabilir mi
ve Zomro'daki uzak bilgisayar?
Teşekkürler, eğitici. Prensip olarak, bu MQ taranmalıydı, ancak taranmamalı mıydı yoksa karar özellikle kullanıcının kararına mı bırakılmıştı?
ve Zomro'daki uzak bilgisayar?
Evet
tünaydın. sorun uzak bilgisayarda, MQL5 web sitesine ulaşamıyorum, bu nedenle satın alınan göstergeyi indiremiyorum. kimse karşılaşabilir mi
ve Zomro'daki uzak bilgisayar?
Evet
Bu sağlayıcı ağır ihlaller nedeniyle engellendi:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
www.mql4.com'a erişim neden kapalı?
Renat Fatkhullin , 2020.11.17 12:16
***Yani anlamadılar.
Bu, onunla alakalı değil. Soru şu ki, özellikle bir programcı için değil, bir tüccar için nerede kullanışlı olabilir? Terminalde ne fiyat skalasında ne de sipariş verme penceresinde böyle sayılar görmedim, her şey her yerde tek bir forma getiriliyor (beş haneli bir yerde, başka bir yerde gibi).
Bu sağlayıcı ağır ihlaller nedeniyle engellendi:
kötü, diğerine geçmek zorunda kalacak. Baska öneri ?