Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1466
![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
İyi günler. Mql5'te bir Uzman Danışman yazarken bir sorunla karşılaştım. Yıl için açılan mum çubuklarının değerlerini içeren bir dizi var. Bu dizinin her mum çubuğunda, yüksekleri ve alçakları kontrol etmek için 30 gibi bir n-mum dizisi oluşturmam gerekiyor. Zigzag göstergesi gibi bir şey.
Hata veren bu kodu yazdım: "dizi aralık dışı" veya tüm dizideki maksimum ve minimum değerler, ancak gerekli 30 mumluk dönemde değil.
Belki de ArrayMaximum() ve ArrayMinimum () işlevlerinde kontrol etmek için başka bir dizi oluşturmam gerekiyor, ancak iç içe döngüler ve dizi boyutu ile kafam karıştı.
Lütfen bana bir ipucu verin.
if(i+30<=ArraySize(opens))
İşte dizinin dışındaki çıktı
Bu hata dikkatsizlikten kaynaklanmaktadır. Düzeltmek sorunu çözmez.
İçinde en yüksek ve en düşük fiyatları aramak için 30 mum çubuğu açılış fiyatından oluşan bir dizi nasıl oluşturabilirim?
ArrayMaximum
ArrayMaximum
Geri dönüşler indeks fiyat değil, maksimum değerdir.
Kontrol etmedim, ancak mum çubuğu açılışlarının (açılışlar) minimum ve maksimumlarının endekslerini almanın yolu bu gibi görünüyor.
Gerçi fiyatı da bir kerede alabilirsiniz, ancak endeksleri alamazsınız.
Hiçbir yerde adımlı bir mql döngüsü örneği bulamadım. Bu tüm meseleyi basitleştirir.
Sadece ChatGPT bana bu şekilde yazmamı tavsiye etti:
Daha fazla deneme yapacağım. Kod çalışıyor. Teşekkür ederim.
ArrayResize yapmazsanız "array out of range" hatası oluşur.
Bu hata dikkatsizlikten kaynaklanmaktadır. Bunu düzeltmek sorunu çözmez.
İçinde en yüksek ve en düşük fiyatları aramak için 30 mum çubuğu açılış fiyatından oluşan bir diziyi nasıl oluşturabilirim?
Sorun nedir? Bir temp[] dizisi tanımlayın ve içine 30 eleman kopyalayın ve minimum/maksimum değerin indeksini arayın. Ve sonunda 30'dan az ise, kaç tane kaldığını kopyalayacaktır. Ve bu durumda, bir while() döngüsü kullanmayı tercih ederim.
Sorun nedir? Bir temp[] dizisi tanımlayın ve içine 30 eleman kopyalayın ve minimum/maksimum değerin indeksini arayın. Ve sonunda 30'dan az ise, kaç tane kaldığını kopyalayacaktır. Ve bu durumda, bir while() döngüsü kullanmayı tercih ederim.
Evet, bunu yapabilirsin. Düzgün düşünemiyorum, bu yüzden tavsiye istiyorum.
Evet, bunu yapabilirsin. Düzgün düşünemiyorum, o yüzden tavsiye istiyorum.
Statik bir dizide boyut sabittir, değiştirilemez, dinamik bir dizide değiştirilebilir, ancak dizinin boyutu ayarlanmıştır! Yani dizinin boyutu ve 0'dan sona kadar olan elemanların indisleri bilinir. <= sınırların dışındadır çünkü sıfırdan itibaren elemanların indisleri ve son elemanın indisi dizi boyutunun bir birimi kadar daha azdır.
Her şey sizin elinizde))))
Statik bir dizide boyut sabittir ve değiştirilemez, dinamik bir dizide değiştirilebilir, ancak dizinin boyutu ayarlanmıştır! Yani, dizinin boyutu bilinir ve elemanların indisleri 0'dan sonuna kadardır. <= sınırların dışındadır, çünkü elemanların indisleri sıfırdan başlar ve son elemanın indisi dizi boyutunun bir birimi kadar daha azdır.
Her şey sizin elinizde))))
Bununla ne demek istiyorsunuz? Bir diziden diğerine, temp[] dizisine belirli sayıda eleman kopyalamak için, kopyalamadan önce dizi boyutunu ayarlamanız gerektiğini düşünüyor musunuz ArrayResize(temp, new_size); ?????
Evet, bunu yapabilirsin. Düzgün düşünemiyorum, o yüzden tavsiye istiyorum.
Geçici bir diziye bile ihtiyacınız yok.
Bu kod
20 öğe arayacak şekilde ayarlanmış olmasına rağmen kalan en fazla 15 öğeyi arar.
Bu yüzden while() döngüsünü kullanmanız ve kalan dizi öğelerinin sayısı hakkında endişelenmemeniz daha iyi olur.