Hatalar, hatalar, sorular - sayfa 2932
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
Açıklamada hata:
Ticari işlem yapısı (MqlTradeTransaction)
Bu alanın adı: time_type
Kullanıcıya, gösterge kurulum penceresinin menü listesinden hem zaman dilimlerini hem de numaralarını seçme yeteneği sağlamaya çalışıyorum:
ve onun tarafından seçilen periyotların doğrudan PArray'e düşmesini istiyorum. Ancak yukarıdaki örnekten, kullanıcının girdiğini değil, programda önceden tanımlanmış değerleri diziye atadığım ortaya çıkıyor. Ek olarak, derleyici uyarılar verir:
Son satırı şununla değiştirmeye çalışırken:
derleyici genellikle bir hata verir:
Ayrıca NO_PERIOD=0, PERIOD_CURRENT anlamına gelir ve buna ihtiyacım yok, false veya EMPTY_VALUE gibi bir şeye ihtiyacım var ama hiç uymuyorlar.
Nasıl düzeltilir?
Neredeyse düzeltti.
Bize söyleyin, "dizi menzil dışı" hatasını yakalamak ve düzeltmek için hangi mücadele yöntemleri var?
ArrayResize(), bir dizi öğesi yazmadan önce yapın, dizide olması gereken öğelerin sayısını sayın ve sürün ya da kendi kendine artan dinamik bir dizi kullanın. Sadece dizinin sınırlarını aşıyorsunuz, örneğin boyut 100 eleman, ancak ilk eleman No. 0 olduğu için bazıları karışıyor, eğer arka arkaya sayılar yazarsanız, 0-99 sığacaktır. Ben profesyonel bir programcı değilim, eğer bir şey varsa (ama yapabilirim), akla gelen ilk şey işe yaraması)))
ArrayResize(), bir dizi öğesi yazmadan önce yapın, dizide olması gereken öğelerin sayısını sayın ve sürün ya da kendi kendine artan dinamik bir dizi kullanın.
Aslında bende var ve çok dinamik. Referanstan: " İşlev yalnızca dinamik dizilere uygulanabilir. SetIndexBuffer() işlevi tarafından gösterge arabelleği olarak atanan dinamik dizilerin boyutunu değiştiremeyeceğiniz unutulmamalıdır. Gösterge arabellekleri için tüm yeniden boyutlandırma işlemleri gerçekleştirilir. "Ama bu bir gösterge tamponu değil, bu yüzden ellerinizle düşünmeli ve kafanızla hareket etmelisiniz...
Aslında bende var ve çok dinamik. Referanstan: " İşlev yalnızca dinamik dizilere uygulanabilir. SetIndexBuffer() işlevi tarafından gösterge arabelleği olarak atanan dinamik dizilerin boyutunu değiştiremeyeceğiniz unutulmamalıdır. Gösterge arabellekleri için tüm yeniden boyutlandırma işlemleri gerçekleştirilir. "Ama bu bir gösterge tamponu değil, bu yüzden ellerinizle düşünmeli ve kafanızla hareket etmelisiniz...
Bu tür hataları yakalama sorunu, yalnızca adreslemeyi engelleyen özel bir dizi sınıfı gibi "katmanlar" kullanılarak çözülür.
Algoritmik ticaret devre dışı bırakıldığında danışmanı başlatırken ve ardından algoritmik ticareti etkinleştirirken:
Hata koduna göre, TERMINAL_TRADE_ALLOWED özelliği doğru olmasına rağmen ticaret yasağı devam ediyor
Sonuç şöyle olmalıdır:
Açıkça her zaman ArraySize(Arr)=1 olmalıdır. Bu, başarılı kopyalama durumunda geçerlidir. Ancak hangi durumlarda bir çubuğun kopyalanması gerçekleşemez? Sonuçta , "aralık dışı dizi" hatası ortaya çıktığında, terminal Arr[0]'ı gösterir .
Hatayı yakaladım, yardımdan alıntı yapın:
4401
İstenen geçmiş bulunamadı
Dergide basıldı - alınan:
Şimdi onunla ne yapmalı, nereye gitmeli? Çarpık ellerim mi var?.. 0'dan 1'e sadece bir çubuk kopyalıyorum. (Tarih) nasıl var olamaz? Ayrıca, hata her zaman ortaya çıkmaz. Yoksa önce bir şekilde geçmişi zorla kontrol edip yüklemem mi gerekiyor?