Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 444

 
mila.com:

der Berater wurde gemacht, um die Möglichkeit selbst zu überprüfen, er öffnet sich korrekt, aber im Indikator sieht er die Werte der zwei nahen Puffer des "Arrow v.3" Indikators überhaupt nicht

Sie haben also einen Indikator außerhalb des Arrays in der Schleife. Sehen Sie sich an, welche Grenzwerte und welche il-Werte in den verschachtelten Schleifen stehen. Worauf bezieht sich der Index il, wenn limit == rates_total-2 ?

 
mila.com:

Wie sehen Sie das?

Siehe Ihren Code

 
Artyom Trishkin:

Prüfen Sie, wie hoch der Grenzwert ist und welche Werte in den verschachtelten Zyklen enthalten sind.

druckt abwechselnd die Taktnummer des ersten und zweiten Pfeils

  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:

Prüfen Sie Ihren Code

Ich schaue mir das jetzt seit drei Tagen an, ich weiß nicht, was los ist.)

Helfen Sie mir
 
mila.com:

druckt abwechselnd die Taktnummer des ersten und zweiten Pfeils

Was ist das überhaupt für ein seltsamer Zyklus?

Warum gehen Sie vom Anfang der Geschichte bis zum Ende und gehen bei jeder Iteration der ersten Schleife in einer verschachtelten Schleife dreihundert Takte zurück?

Sie werden wahrscheinlich von iCustom() gespeichert, das keine Werte außerhalb der Verlaufsdaten ausgibt.

Nun, sehen Sie selbst. Angenommen, Sie haben einen Verlauf mit nur 1000 Balken: rates_total in diesem Fall haben Sie 1000. Grenze, 1000-2=998. Der erste Verlaufsbalken wird also von der Schleife ausgeschlossen. Machen Sie sich keine Gedanken darüber.

Sie setzen zunächst einen Index auf den Balken mit der Nummer 998 (rates_total-2 = 1000-2 = 998),

und was tun Sie dann? Dann betten Sie die Schleife ab dem Wert i ein, der 998+1=999 entspricht - dies ist der erste Balken der Geschichte - links davon ist nichts mehr - er ist leer. Und Sie machen die Schleife von 999 bis 999+300. Dort gibt es keine Daten - dies geht außerhalb des Arrays.

Der Grenzwert sollte in dieser Situation so gewählt werden, dass die eingebettete Schleife ganz am Anfang den Takt 999 erreicht. Dies ist rates_total-2-300. Da Sie die verschachtelte Schleife bei i+1 beginnen, werden Sie nicht über das Feld hinausgehen: i=1000-2-300 = 698. In der geschachtelten Schleife ist li=i+1 = 698+1=699, und bis li=i+300 = 698+300=998. Auch hier wird der allererste Balken von der Berechnung ausgeschlossen. Es kommt jedoch nicht zu einer Überschreitung des Feldes.

Offensichtlich wissen Sie nicht so recht, was Sie da tun.

Dies wird durch eine sehr seltsame Schleife im Allgemeinen angezeigt.

Sie brauchen dort keine verschachtelten Schleifen. Wenn Sie eine bestimmte Anzahl von Werten für den Puffer des benutzerdefinierten Indikators suchen, dann machen Sie den Zyklus von Null bis zu einem bestimmten Wert. Aber nicht mehr als rates_total.

 
Artyom Trishkin:

Was ist das überhaupt für ein seltsamer Zyklus?

Warum gehen Sie vom Anfang der Geschichte bis zum Ende und gehen bei jeder Iteration der ersten Schleife in einer verschachtelten Schleife dreihundert Takte zurück?

Sie werden wahrscheinlich von iCustom() gespeichert, das keine Werte außerhalb der Verlaufsdaten ausgibt.

Nun, sehen Sie selbst. Angenommen, Sie haben einen Verlauf mit nur 1000 Balken: rates_total in diesem Fall haben Sie 1000. Grenze, 1000-2=998. Nun, der erste Verlaufsbalken ist von der Schleife ausgeschlossen. Lass es sein.

Sie setzen zunächst einen Index auf den Balken mit der Nummer 998 (rates_total-2 = 1000-2 = 998),

und was tun Sie dann? Dann betten Sie die Schleife ab dem Wert i ein, der 998+1=999 entspricht - dies ist der erste Balken der Geschichte - links davon ist nichts mehr - er ist leer. Und Sie machen die Schleife von 999 bis 999+300. Dort gibt es keine Daten - dies geht außerhalb des Arrays.

Der Grenzwert sollte in dieser Situation so gewählt werden, dass die eingebettete Schleife ganz am Anfang den Takt 999 erreicht. Dies ist rates_total-2-300. Da Sie die verschachtelte Schleife bei i+1 beginnen, werden Sie nicht über das Feld hinausgehen: i=1000-2-300 = 698. In der geschachtelten Schleife ist li=i+1 = 698+1=699, und bis li=i+300 = 698+300=998. Auch hier wird der allererste Balken von der Berechnung ausgeschlossen. Es kommt jedoch nicht zu einer Überschreitung des Feldes.

Offensichtlich wissen Sie nicht so recht, was Sie da tun.

Dies wird durch eine sehr seltsame Schleife im Allgemeinen angezeigt.


Vielen Dank, das ist sehr klar.

 
Artyom Trishkin:

Dies wird durch eine sehr seltsame Schleife im Allgemeinen angezeigt.

Sie brauchen dort keine verschachtelten Schleifen. Wenn Sie eine bestimmte Anzahl von benutzerdefinierten Indikatorpufferwerten suchen, führen Sie eine Schleife von Null bis zu einem bestimmten Wert durch. Aber nicht mehr als rates_total.

Warum von Null an?

Ich muss einen Punkt setzen, wenn auf dem dritten oder "N"-Balken ein Pfeil des aufgerufenen Indikators zu sehen ist. Zur gesamten Geschichte

Was ist der richtige Zyklus?

 
mila.com:

Warum von Null an?

Ich brauche einen Punkt, wenn ein Pfeil auf dem dritten oder "N"-Balken des aufzurufenden Indikators steht. Über die gesamte Geschichte.

Was ist der richtige Zyklus?

Wo sollte dies geschehen? In einem Indikator? In einer EA?

 
Artyom Trishkin:

Wo sollte dies geschehen? In einem Indikator? In einer EA?

In einem Indikator

 
mila.com:

Im Indikator

Lesen Sie also iCustom() direkt beim ersten Schleifenindex.

Eine weitere Frage ist, dass Sie Daten vom aktuellen Balken nach links benötigen. Deshalb sage ich - lesen Sie von Null bis zur gefundenen Zahl, aber nicht mehr als rates_total-1.

Und nur lesen, wenn Limit>1

Andernfalls gibt es keine neuen Daten und der Index des gewünschten Balkens ändert sich nicht.

Grund der Beschwerde: