Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 495
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
İlk durumda, anladım - parantez içinde iki karşılaştırma yaptım ve yemin etmiyorum - gerçekten mantıklı bir hata var mıydı - yani. karşılaştırmanın sonuçları "veya" ile değiştirilebilir mi?
Geriye ikinci ifadeyle açık bir soru kalıyor - orada yanlış olan ne - herhangi bir fikir var mı?
İlk durumda, anladım - parantez içinde iki karşılaştırma yaptım ve yemin etmiyorum - gerçekten mantıklı bir hata var mıydı - yani. karşılaştırmanın sonuçları "veya" ile değiştirilebilir mi?
Geriye ikinci ifadeyle açık bir soru kalıyor - orada yanlış olan ne - herhangi bir fikir var mı?
Unutulmamalıdır ki yeni mql4'teki durum denetimi tam olarak yapılmamıştır. Yani, durumda
if(Low[X]>PriceBuy && High[X]>PriceBuy ||
Low[X]<PriceBuy && High[X]<PriceBuy)
Düşük[x], PriceBuy'dan büyük değilse, kontrol daha fazla yapılmayacaktır. Bu, hatanın açıklamasında rapor edilir. Buna göre, ilk çift parantez içine alınmışsa, bu çift karşılanmıyorsa, ikinci koşul çifti kontrol edilecektir.
İkinci soru.
for( calc_day;calc_day>0; calc_day--)
calc_day nedir??? Belki sıfırdan daha az? Derleyici mantıkta ne olduğunu bilmiyor... Yani olası bir verimsiz döngü hakkında uyarıda bulunuyor.
Unutulmamalıdır ki yeni mql4'teki durum denetimi tam olarak yapılmamıştır. Yani, durumda
if(Low[X]>PriceBuy && High[X]>PriceBuy ||
Low[X]<PriceBuy && High[X]<PriceBuy)
Düşük[x], PriceBuy'dan büyük değilse, kontrol daha fazla yapılmayacaktır. Bu, hatanın açıklamasında rapor edilir. Buna göre, ilk çift parantez içine alınmışsa, bu çift karşılanmıyorsa, ikinci koşul çifti kontrol edilecektir.
Cevap için teşekkürler!
Şaşırdım - görsel olarak mantık her zaman doğru çalıştığı için, hmmm ...
İkinci soru.
for( calc_day;calc_day>0; calc_day--)
calc_day nedir??? Belki sıfırdan daha az? Derleyici mantıkta ne olduğunu bilmiyor... Yani olası bir verimsiz döngü hakkında uyarıda bulunuyor.
Cevap için teşekkürler!
Şaşırdım - görsel olarak mantık her zaman doğru çalıştığı için, hmmm ...
6** yapıdan önce böyleydi, tüm koşullar zinciri kontrol edildi ve her şey çalıştı, ama şimdi her şey değişti. Evet ve bu durumda eski yapılarda, durumun belirsizliği. Nasıl amaçlandı?
if( (Low[X]>PriceBuy && High[X]>PriceBuy) || (Low[X]<PriceBuy && High[X]<PriceBuy) )
ya da öyle mi?
if(Low[X]>PriceBuy && ( High[X]>PriceBuy) || (Low[X]<PriceBuy ) && High[X]<PriceBuy)
İnsan beyni bunu çözebilir, ancak bir derleyici ne yapmalı? Beyni yok...
-Aleks- :
calc_day sayısı her zaman 0'dan büyüktür, aksi takdirde kod çağrılmaz.Bunu derleyiciye söyle ...
6** yapıdan önce böyleydi, tüm koşullar zinciri kontrol edildi ve her şey çalıştı, ama şimdi her şey değişti. Evet ve bu durumda eski yapılarda, durumun belirsizliği. Nasıl amaçlandı?
if( (Low[X]>PriceBuy && High[X]>PriceBuy) || (Low[X]<PriceBuy && High[X]<PriceBuy) )
ya da öyle mi?
if(Low[X]>PriceBuy && ( High[X]>PriceBuy) || (Low[X]<PriceBuy ) && High[X]<PriceBuy)
İnsan beyni bunu çözebilir, ancak bir derleyici ne yapmalı? Beyni yok...
Bunu derleyiciye söyle ...
İnandırıcı bir şekilde - Daha uyanık olacağım.
derleyiciye nasıl söylenir? yaz ama anla
if ( calc_day<0 ) calc_day= calc_day*(-1);
6** yapıdan önce böyleydi, tüm koşullar zinciri kontrol edildi ve her şey çalıştı, ama şimdi her şey değişti. Evet ve bu durumda eski yapılarda, durumun belirsizliği. Nasıl amaçlandı?
if( (Low[X]>PriceBuy && High[X]>PriceBuy) || (Low[X]<PriceBuy && High[X]<PriceBuy) )
ya da öyle mi?
if(Low[X]>PriceBuy && ( High[X]>PriceBuy) || (Low[X]<PriceBuy ) && High[X]<PriceBuy)
İnsan beyni bunu çözebilir, ama bir derleyici ne yapmalı? Beyni yok...
Bunu derleyiciye söyle ...
olası hata için operatör önceliğini kontrol edin; önceliği netleştirmek için parantez kullanmak bir hata değildir. Bu bir uyarıdır. Eski kodlarda bulundu.
Derleyiciden çok kullanıcı için ekledik. Derleyici, işlemlerin önceliğine göre yönlendirilir. Orada her şey açık. && öğesinin önceliği || öğesinden daha yüksektir, bu nedenle parantezleri şu şekilde doğru bir şekilde yerleştirin:
if( (Düşük[X]>FiyatAl && Yüksek[X]>FiyatAl) || (Düşük[X]<FiyatAl && Yüksek[X]<Fiyat) )
upd: Bu durumda, hem MT4 hem de MT5 aynı önceliğe sahiptir.
İnandırıcı bir şekilde - Daha uyanık olacağım.
derleyiciye nasıl söylenir? yaz ama anla
if ( calc_day<0 ) calc_day= calc_day*(-1);
olası hata için operatör önceliğini kontrol edin; önceliği açıklığa kavuşturmak için parantez kullanmak bir hata değildir. Bu bir uyarıdır. Eski kodlarda bulundu.
Derleyiciden çok kullanıcı için ekledik. Derleyici, işlemlerin önceliğine göre yönlendirilir. Orada her şey açık. && öğesinin önceliği || öğesinden daha yüksektir, bu nedenle parantezleri şu şekilde doğru bir şekilde yerleştirin:
if( (Düşük[X]>FiyatAl && Yüksek[X]>FiyatAl) || (Düşük[X]<FiyatAl && Yüksek[X]<Fiyat) )
upd: Bu durumda, öncelik hem MT4 hem de MT5 için aynıdır.
Eh, aslında, evet, uyarı bir hata değildir. Ancak eğer( Low[X]>PriceBuy && High[X]>PriceBuy || Low[X]<PriceBuy && High[X]<PriceBuy ) çalışırsa ilk değişken nasıl olacak? ? Yoksa birkaç parantez koymak için elleriniz kırılacak mı?
İnandırıcı bir şekilde - Daha uyanık olacağım.
derleyiciye nasıl söylenir? yaz ama anla
if ( calc_day<0 ) calc_day= calc_day*(-1);
Eh, özünde, evet, bir uyarı bir hata değildir. Ama eğer( Low[X]>PriceBuy && High[X]>PriceBuy || Low[X]<PriceBuy && High[X]<PriceBuy ) çalışırsa ilk değişken nasıl olacak? ? Yoksa birkaç parantez koymak için elleriniz kırılacak mı?
Yukarıda yazdığım şekilde çalışacaktır.
Ve derleyici, bariz olmayan olası hataları önlemek için kullanıcıyı tembel olmaması ve parantez içine almaması konusunda uyarır.