Indikatoren: FullSSA

 

FullSSA:

Neu zeichnender Oszillator basierend auf der SSA.mqh singular transformation Funktions-Bibliothek

Abb.1 Der Waddah_Attar_Def_RSI Indikator

Autor: Nikolay Kositsin

 
for(k=0;k<=n-2;k++)for(i=k+1;i<=n-1;i++)
     {
      if(!B[k][k])
        {
         for(i1=0;i<=n-1;i++)
           {
            w[i1]=B[i1][k];
            B[i1][k]=B[i1][k+1];
            B[i1][k+1]=w[i1];
           }
         cp++;
        }
      Print(__FUNCTION__+": i=",i);  
      c=1.0*B[i][k]/B[k][k];
      for(j=0;j<=n-1;j++) B[i][j]-=B[k][j]*c;
     }

2019.03.31 00:07:28.689 (GBPUSD,H1) array out of range in 'SSA.mqh' (147,14)


 
        for(i1=0;i1<=n-1;i1++)
           {
            w[i1]=B[i1][k];
            B[i1][k]=B[i1][k+1];
            B[i1][k+1]=w[i1];
           }

muss i1 überall in for() sein ?

 
leonerd:

muss i1 überall in for() sein ?

Du bist der Dummkopf.

 
Алексей Тарабанов:

Sie sind selbst ein Narr.

Hotline des russischen Gesundheitsministeriums:8 800 550 99 03

 

Es gibt einen Fehler nach dem anderen. Array-Überläufe und Division durch 0.

Und ich weiß nicht, wie ich es korrigieren kann, da ich nicht verstehe, worum es in dieser Bibliothek überhaupt geht....

Diese Schleife, zum Beispiel:

for(k=0;k<=n-2;k++)for(i=k+1;i<=n-1;i++)
     {
      if(!B[k][k])
        {
         for(i1=0;i<=n-1;i++)
           {
            w[i1]=B[i1][k];
            B[i1][k]=B[i1][k+1];
            B[i1][k+1]=w[i1];
           }
         cp++;
        }
        
      c=1.0*B[i][k]/B[k][k];
      for(j=0;j<=n-1;j++) B[i][j]-=B[k][j]*c;
     }
Wenn sie die innere Schleife für erreicht (und das tut sie, weil B[k][k] gleich Null ist), dann überschreitet i bereits die äußere Schleifengrenze, d.h. i wird größer als n-1. Und dann, beim Zugriff auf B[i], erhalten wir einen Ausgang jenseits der Grenzen des Arrays, denn durch einen erstaunlichen Zufall ist seine Größe gleich n.