"Yeni Başlayanlar için MQL5'te Özel Göstergeler" makalesi için tartışma - sayfa 2

 
serg7771959:

Nicholas!

Bana neden Mass[ i ]= Mass[ i+1]+A; formülünü kullanarak bir döngü içinde bir gösterge dizisini doldurmaya çalıştığımda, A'nın bir değişken olduğu yerde, derlemenin hatasız gittiğini, ancak pencereye katıldığımda array out of range (dizi aralık dışı) mesajını aldığımı söyleyebilir misiniz?


Çünkü döngü son girişin yapılacağı hücre dikkate alınarak yapılmalıdır. Mass[] dizisinin boyutu diyelim ki 10 ise, döngü sıfırdan 9'a kadar (bu dizinin son hücresinin indisidir), sonra i==9'da 9+1 indisine sahip hücreye yazmaya çalışırsınız. Dizide 10. hücre yoktur. Yani dizinin dışında bir çıktı alırsınız.
 
Bunun gibi daha fazla derse ihtiyacımız var!!!
 

Nikolay, teşekkür ederim. Bu harika bir öğretici!
Ama sanırım bu değişken

const int begin

kodda her zaman sıfır değerinde olacaktır. Hesaplama için önemli mi?

 
igorsds:

Nikolay, teşekkür ederim. Bu harika bir öğretici!
Ama sanırım bu değişken

kodda her zaman sıfır değerinde olacaktır. Hesaplama için önemli mi?

"begin"in değeri, hangi göstergeye uygulandığına bağlı olarak farklı olacaktır. Örneğin RSI'a uygularsanız,"begin" 14 olacaktır.

 

Eğer ilk defa derlemeye çalışırsanız, tampon hatası alabilirsiniz. Bu yüzden lütfen tampon miktarını değiştirin:

#property indicator_buffers 2

Daha sonra, 1 (bir) tampona geri dönebilirsiniz:

#property indicator_buffers 1

 
Fibo zigzag ile nasıl birleştiririm
 

Anlamıyorum. Varsayalım ki

rates_total == MA_Period - 1

ve bu fonksiyonun ilk çağrısıdır, bu yüzden

prev_calculated == 0

ve ayrıca begin == 0

o zaman ilk if(rates_total < MA_Period - 1 + begin) içindeki koşul false olarak değerlendirilir

sonra

first = MA_Period - 1 çalıştırılacaktır

ancak daha sonra HESAPLAMA YOK çünkü ilk for döngüsündeki koşul yanlış olarak değerlendiriliyor.

Bence ilk if koşulu şöyle olmalı

if( rates_total < MA_Period + begin )

Burada bir şey mi kaçırıyorum?

 

Ve bir tane daha. Göstergeyi prev_calculated kez hesapladıysam, neden ( prev_calculated - 1) numaralı çubuktan hesaplamaya başlamalıyım?

Örneğin, göstergeyi 0, 1, 2, 3 ve 4 numaralı çubuklar için 5 kez hesapladım. Bunu 4. çubukta tekrar hesaplamama gerek yok. Bar 5'ten devam etmeliyim.

 
LRDPRDX #:

Ve bir tane daha. Eğer prev_calculated göstergesini zaten hesapladıysam, neden hesaplamaya ( prev_calculated - 1) sayısına sahip çubuktan başlamalıyım?

Örneğin, göstergeyi 0, 1, 2, 3 ve 4 numaralı çubuklar için 5 kez hesapladım. Bunu 4. çubukta tekrar hesaplamama gerek yok. Bar 5'ten devam etmeliyim.

Tamam. Sanırım burada doğru değilim, çünkü 4. çubuk son hesaplamamdan bu yana değişmiş olabilir. Yani (prev_calculated - 1) doğru görünüyor.
 
Dolandırıcılık günün emri. Bravi