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
Lütfen, negatif değerinizin sonucunu hesaplayın, bunu 32 bit int ile ilişkilendirin, ardından aritmetik taşma hakkında okuyun ve 17 gününüzü bulun.
Gerçek programlama dünyasına hoş geldiniz.
Evet, "17 gün nereden geldi ?" diye sormadım. :) Tekrar ediyorum: Test cihazında anlaşılmaz bir durum keşfettim, söylendi - (1) Sleep() işlevinin de sıfır olmayan bir gecikme vererek negatif değerlerle çalıştığı, (2) Sleep()'in çalışmasıyla ilgili açıklamalar aldım. ) işlevi test cihazında taklit edilir. Geliştiriciler bunu kabul edilebilir buluyorsa, itiraz edilecek ne var? Tam olarak 17 gün saymaya gerek yok.
Teklifin nedir? Programı çökertmek mi?
Evet. Fili fark etmedik.
Bu satırda güçlü şüphelerim olan bir şey var:
ve bizim durumumuzda:
Derleyicinin bunu kaçırmaması gerektiğini düşünüyorum. Neye sahipsin? Bir uyarı bile yok mu? Değilse , Hizmet Masasına bir talep gönderin . TAMAM?
bir başvuru yaptı #154746
s1.open dizisindeki maksimum/minimum değere sahip elemanın sıra sayısı nasıl alınır?
Bu durumda, "Uyku işlevi" bölümünde bir göstergenin olması benim için yeterli olacaktır ... (2) "Uyku () işlevi, test cihazı tarafından tam olarak desteklenmektedir."
Test etmeyle ilgili ana konuları MetaTrader 5'te Test Temelleri adlı ayrı bir makalede özellikle ele aldık. İçinde, test cihazında belirli işlevleri kullanırken nüansların çoğunu açıklamaya çalıştık. Sleep() işlevi dahil:
Test cihazında Sleep() işlevi
Sleep() işlevi, bir grafik üzerinde çalışırken bir Uzman Danışman veya komut dosyasında bir mql5 programının yürütülmesini bir süre askıya almanıza olanak tanır. Bu, talep anında henüz hazır olmayan herhangi bir veri talep edilirken gerekli olabilir ve hazır olma anını beklemek gerekir. Sleep() işlevinin kullanımına ilişkin ayrıntılı bir örnek, Veri erişimini organize etme bölümünde bulunabilir.
Test cihazında Sleep() çağrıları test sürecini geciktirmez. Sleep() çağrıldığında, oluşturulan tikler belirtilen gecikme içinde "oynanır" ve bunun sonucunda bekleyen emirler, durmalar vb. tetiklenebilir. Sleep() çağrıldıktan sonra, test cihazında simüle edilen süre, Uyku fonksiyonunun parametresinde belirtilen aralık kadar artırılır.
Sleep() işlevinin yürütülmesinin bir sonucu olarak, test cihazındaki geçerli saat, test süresinin sonunu aşmışsa, bir "infinite loop in Sleep" hatası alınır. Böyle bir hata alındığında test sonuçları atılmaz, tüm hesaplamalar eksiksiz yapılır (işlem sayısı, düşüm vb.) ve bu testin sonuçları terminale iletilir.
Sleep() işlevi, çağrıldıktan sonra test süresinin test aralığının dışında olması garanti edildiğinden OnDeinit() içinde çalışmayacaktır.
Pirinç. 7. MetaTrader 5 terminalinin test cihazında Sleep() işlevini kullanma şeması.
Test etmeyle ilgili ana konuları MetaTrader 5'te Test Temelleri adlı ayrı bir makalede özellikle ele aldık. İçinde, test cihazında belirli işlevleri kullanırken nüansların çoğunu açıklamaya çalıştık. Sleep() işlevi dahil:
Üzgünüm, bu gerçekten benim canim. 9 ay boyunca test yapmadım - ve makaleyi kaçırdım.
..Önemli makalelerden bahsedilmesi Rehberin ilgili bölümlerinde yer alsaydı iyi olurdu (geçen yıl buna benzer bir şey önermiştim, ama bugün tekrarlamak için bir fırsat). Hepimiz önce F1'i kullanırız.
Burada aritmetik taşma ile ilgili en basit hatanıza dikkat çekmeye çalışan birkaç kişi var.
Demek istediğimi yapmadın.
Burada aritmetik taşma ile ilgili en basit hatanıza dikkat çekmeye çalışan birkaç kişi var.
================================================= ===========
Sen sordun:
Lütfen negatif değerinizin sonucunu sayın, 32 bit int ile ilişkilendirin, ardından aritmetik taşma hakkında okuyun ve 17 gününüzü bulun ...
Cevap verdim: Evet, "17 gün nereden geldi?" diye sormadım. :) vb.
Şu anki sorunuzu cevaplıyorum. Sorduğun şey yapılmadı. Bu dün tarafımdan yapıldığından (aynı zamanda, biraz farklı başlangıç verilerim vardı, ancak neler olup bittiğinin özünü anladım). Bir senaryo çizdi. Bu betiği biri derlemiş olsaydı, iki uyarı verilirdi. Taşma / kesme - Dün kendim çözdüm.
Sorular, (1) işlevinin argümanın negatif değerleriyle neden çalıştığı ve (2) bu tür argümanların varlığında test cihazında bir gecikme ürettiğiydi. Bir kez daha int türünün taşmasıyla bir "programcı hatasına" işaret ediyorsunuz. - Yani Sleep() işlevi bağımsız değişkeni seçildiğinde "taşan değer" belirtildiği için test durumumu reddediyorum. Ama "değerin taşması"nda bir sorunun özü değil. Bu, test senaryosuna sadece ekstra bir dokunuş. Tartışmaya katılanlar bunu anlamış görünüyor ... Sonunda, test örneğinde, "kalabalık olmayan bir değer" ekleyebilirsiniz - diğer tüm şeyler eşit olduğunda, sorunun özü aynı kalacaktır (sorunun kendisi) zaten çözüldü).
Her durumda, tavsiye için teşekkürler. Çünkü derleyici uyarmasaydı, tavsiyeniz büyük olasılıkla çok yardımcı olurdu ve sizi düşündürürdü.
Kullanım kısıtlamaları nelerdir? W =(uzun)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_PIXELS,0);
H =(uzun)ChartGetInteger(Chart_ID[i], CHART_HEIGHT_IN_PIXELS ,0);
W_B =(uzun)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_BARS,0);
void OnInit() öğesinden işlevleri çağırıyorum, ancak void OnTick() öğesinden veriler yanlış, özellikle CHART_WIDTH_IN_BARS görünür çubukların sayısını veriyor, ancak grafiğe sığan çubukların sayısını vermemesi gerektiğini anlıyorum. telafi etmek
İlkel soru için özür dilerim.
Takas talebi yürütülmez. Hata 10014 - İstekte yanlış hacim.
Danışmanın içinden şu anda satın alabileceğim maksimum ve minimum lot hacmi nasıl anlaşılır/hesaplanır?
OrderCheck işlevi uygun değil çünkü sadece kontrol eder, ancak mümkün olduğunca kaç lot satın alabileceğinizi söylemez.
ENUM_SYMBOL_INFO_DOUBLE numaralandırmasına ve ilgili işleve bakın. Ondan mı bahsediyorsun?