MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 444

 
mila.com :

danışman, olasılığın kendisini kontrol etmek için yaptı, doğru açılıyor ve göstergede "Ok v.3" göstergesinin en yakın iki tamponunun değerlerini hiç görmüyor

Böylece göstergeniz bir döngü içinde dizinin dışına uçar. Limite ve iç içe döngülerdeki il değerlerinin neler olduğuna bakın. il indeksi limit == oranları_toplam-2 olduğunda nereye atıfta bulunur?

 
mila.com :

Nasıl görebilirim?

kodunu gör

 
Artyom Trishkin :

Limite ve iç içe döngülerdeki il değerlerinin neler olduğuna bakın.

sırayla birinci ve ikinci okların çubuk numarasını yazdırır

   for ( int i=limit; i>= 0 ; i--) 
     {
     for ( int il=i+ 1 ;il<=i+ 300 ;il++)
        {
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 0 ,il), Digits )!= EMPTY_VALUE
            )
           {
            num_buy=il;
             Print (il);
           // break;
           }
        }
//
       if (num_buy== 60 )
        {
         BufferUP[i+ 1 ]=low[i+ 1 ]-distance*MyPoint;
         
        }
    }
 
Artyom Trishkin :

kodunu gör

Üçüncü gün ona bakıyorum, neyin yanlış olduğunu anlamıyorum)

Söylemek
 
mila.com :

sırayla birinci ve ikinci okların çubuk numarasını yazdırır

Ve bu garip döngü nedir?

Neden hikayenin başından sonuna kadar gidiyorsunuz ve ilk döngünün her yinelemesinde iç içe bir döngüde sürekli olarak üç yüz çubuk geri gidiyorsunuz?

Burada iCustom() muhtemelen sizi kurtarıyor, bu da tarihsel veriler dışında değerler üretmez.

Peki, kendin ara. Diyelim ki yalnızca 1000 barlık bir geçmişiniz var: bu durumda Rate_total 1000'dir. Limit, 1000-2=998. Eh, döngüden dışlanan ilk tarih çubuğunu alırsınız. Tanrı onu korusun.

Önce 998 numaralı çubuğa bir indeks yerleştirirsiniz (rates_total-2 = 1000-2 = 998),

ve sonra ne yaparsın? Sonra 998+1=999'a eşit i değerinden başlayarak iç içe bir döngü yaparsınız - bu tarihin ilk çubuğudur - solda hiçbir şey yoktur - boştur. Ve 999'dan 999+300'e dönersiniz. Orada veri yok - bu, sınırların dışında bir dizi.

Yani, bu durumda limitiniz, en baştaki iç içe döngü 999 bar'a ulaşacak şekilde olmalıdır. Bunlar Rate_total-2-300'dür. Ardından, iç içe döngüyü i + 1'den başlattığınızdan, dizinin taşması olmayacaktır: i = 1000-2-300 = 698. İç içe döngüde li = i + 1 = 698 + 1 = 699 ve li =i+300 = 698+300=998'e kadar. Yine, ilk çubuk hesaplamanın dışında tutulur. Pekala, diziden çıkış yok.

Görünüşe göre ne yaptığınızı tam olarak anlamıyorsunuz.

Bu, genel olarak çok garip bir döngü ile kanıtlanır.

Orada iç içe döngülere ihtiyacınız yok. Belirli sayıda özel gösterge arabelleği değeri arıyorsanız, sıfırdan belirli bir değere döngü yapın. Ama oranları_toplamdan fazla değil.

 
Artyom Trishkin :

Ve bu garip döngü nedir?

Neden hikayenin başından sonuna kadar gidiyorsunuz ve ilk döngünün her yinelemesinde iç içe bir döngüde sürekli olarak üç yüz çubuk geri gidiyorsunuz?

Burada iCustom() muhtemelen sizi kurtarıyor, bu da tarihsel veriler dışında değerler üretmez.

Peki, kendin ara. Diyelim ki yalnızca 1000 barlık bir geçmişiniz var: bu durumda Rate_total 1000'dir. Limit, 1000-2=998. Eh, döngüden dışlanan ilk tarih çubuğunu alırsınız. Tanrı onu korusun.

İlk önce 998 numaralı çubuğa bir indeks yerleştirirsiniz (rates_total-2 = 1000-2 = 998),

ve sonra ne yaparsın? Sonra 998+1=999'a eşit i değerinden başlayarak iç içe bir döngü yaparsınız - bu tarihin ilk çubuğudur - solda hiçbir şey yoktur - boştur. Ve 999'dan 999+300'e dönersiniz. Orada veri yok - bu, sınırların dışında bir dizi.

Yani, bu durumda limitiniz, en baştaki iç içe döngü 999 bar'a ulaşacak şekilde olmalıdır. Bunlar Rate_total-2-300'dür. Ardından, iç içe döngüyü i + 1'den başlattığınızdan, dizinin taşması olmayacaktır: i = 1000-2-300 = 698. İç içe döngüde li = i + 1 = 698 + 1 = 699 ve li =i+300 = 698+300=998'e kadar. Yine, ilk çubuk hesaplamanın dışında tutulur. Pekala, diziden çıkış yok.

Görünüşe göre ne yaptığınızı tam olarak anlamıyorsunuz.

Bu, genel olarak çok garip bir döngü ile kanıtlanır.


Anlaşılır bir şekilde teşekkür ederim.

 
Artyom Trishkin :

Bu, genel olarak çok garip bir döngü ile kanıtlanır.

Orada iç içe döngülere ihtiyacınız yok. Belirli sayıda özel gösterge arabelleği değeri arıyorsanız, sıfırdan belirli bir değere döngü yapın. Ama oranları_toplamdan fazla değil.

Neden sıfırdan?

Üçüncü veya "N" çubuğunda çağrılan göstergenin bir oku varsa bir nokta koymam gerekiyor. Tarih boyunca

doğru döngü nedir?

 
mila.com :

Neden sıfırdan?

Üçüncü veya "N" çubuğunda çağrılan göstergenin bir oku varsa bir nokta koymam gerekiyor. Tarih boyunca

doğru döngü nedir?

Nerede yapılmalı? Bir göstergede mi? Danışmanda mı?

 
Artyom Trishkin :

Nerede yapılmalı? Bir göstergede mi? Danışmanda mı?

göstergede

 
mila.com :

göstergede

Pekala, iCustom()'u ilk döngünün dizinine göre hemen okuyun.

Başka bir soru, soldaki mevcut çubuktan veriye ihtiyacınız olmasıdır. Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.

Aynı zamanda, sadece limit>1 ise okuyun

Zamanın geri kalanında yeni veri yok ve ihtiyacınız olan çubuğun dizini değişmeyecek.