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

 
Ich kann nicht herausfinden, was los ist. Der Indikator enthält eine while-Schleife, aber sie scheint gut zu funktionieren. Beim Testen funktioniert zunächst alles, aber an ein und derselben Stelle bleibt das Programm hängen, auch das Terminal, ich muss den Quellcode aus dem Terminal löschen. Bei anderen Währungen bleibt er ebenfalls hängen. Ich habe das Programm mit Kommentaren versehen und es erreicht schließlichComment(rates_total+"\n "+prev_calculated); vor return und bleibt stehen. Und der Kommentar zeigt, dass wir Zahlen wie 3247 und 3247 erhalten haben, was bedeutet, dass die zu erfüllende Bedingung (rates_total>prev_calculated) nicht erfüllt ist und das Programm nichts tun darf. Warum hängt er?
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(rates_total>prev_calculated)
     { 
         Comment("0");
          if(Count==0)
             total = rates_total-4;
          else
             total = rates_total - prev_calculated+2;

          if(total>10000)
             total=10000;

          for(int i=total; i>2; i--)
            {
            }
       
          while(begin<size-2)
            {
            }
      Count++;
     }  
     Comment(rates_total+"\n"+prev_calculated);          //виснет здесь(коммент 3247 и 3247)
   return(rates_total);
  }
 
Aleksandr Kononov Comment(rates_total+"\n "+prev_calculated); vor return und bleibt stehen. Und der Kommentar zeigt, dass wir Zahlen wie 3247 und 3247 erhalten haben, was bedeutet, dass die zu erfüllende Bedingung (rates_total>prev_calculated) nicht erfüllt ist und das Programm nichts tun darf. Warum hängt er?

Lesen Sie die Dokumentation sorgfältig durch.

Wenn der Ausdruck wahr ist, wird der Operator ausgeführt, bis der Ausdruck falsch wird.
Was sind die Variablen in der Schleifenbedingung? Und wenn die Ausgangsbedingung wahr ist, wann wird sie falsch, um die Schleife zu verlassen?
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Оператор цикла while - Операторы - Основы языка - Справочник MQL4
 
Alexey Viktorov #:

Lesen Sie die Dokumentation sorgfältig durch.

Was sind diese Variablen in der Schleifenbedingung? Und wenn die Ausgangsbedingung wahr ist, wann wird sie falsch, um die Schleife zu verlassen?

Die Schleifen dienen nur dazu, zu verstehen, was sie sind. Sie werden dort eine Menge Code erhalten, wenn Sie sie schreiben. Die Frage ist, warum die Arbeit vor der Rückkehr aufhört, obwohl auf diesem Tick gar nichts passiert. In den Kommentarraten ist die Summe gleich dem berechneten Wert, also tun wir gar nichts.

 
Der Indikator funktioniert, wenn überhaupt, aber hängt bei einigen Bedingungen
 
Könnte es sich um eine Art verzögerten Fehler handeln? Das Programm erreicht das Ende und bleibt dann hängen, ist das möglich?
 
Das Problem liegt schließlich in der Schleife. Der Kommentar verspätet sich. Drucken ist der letzte Teil der Schleife
 
Können Sie mir sagen, wie ich einen Pfeil unter anderen Objekten in mql4 finden kann? Ich muss alle Pfeile löschen und die Zeilen
 
Aleksandr Kononov #:
Können Sie mir sagen, wie ich einen Pfeil unter anderen Objekten in mql4 finden kann? Entfernen Sie alle Pfeile und lassen Sie die Linien

Nun, lesen Sie die Dokumentation

int  ObjectsDeleteAll(
   int    sub_window=EMPTY,   // индекс окна
   int    object_type=EMPTY   // тип объекта для удаления
   );
ObjectsDeleteAll - Графические объекты - Справочник MQL4
ObjectsDeleteAll - Графические объекты - Справочник MQL4
  • docs.mql4.com
ObjectsDeleteAll - Графические объекты - Справочник MQL4
 
Ich danke Ihnen!
 
Gute Zeit zum Kennenlernen von mql4. Es gibt eine Funktion, die den prozentualen Anteil des am weitesten zurückliegenden Verlustauftrags in der Serie aufgrund von gewinnbringenden Positionen einer beliebigen Richtung schließt. Wir brauchen Hilfe bei der Verbesserung dieser Funktion! Wir müssen nämlich alle verbleibenden Aufträge in der Serie teilweise schließen (aufgrund von gewinnbringenden Positionen in jeder Richtung), anstatt den längsten Auftrag zu schließen. Vielen Dank im Voraus!
Dateien:
KJH.mq4  8 kb