[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 323

 
Vinin писал(а) >>

Deshalb macht man absichtlich Fehler.

Und das mit Absicht, es ist lustig... Ich würde diesen Fehler gerne sehen, aber ich kann ihn nicht finden.

 
Daiver2 >> :

Ich führe einige Funktionen als Testskript aus, um zu sehen, ob es Kompilierungsfehler gibt und welche Funktionen ich im Terminal überprüfen kann. Ich habe heute die Vorberechnungsfunktion von Balken im Fenster genommen:

Natürlich erscheint die Meldung *Nicht genug Balken*, aber bei einem neuen Tick wird diese Meldung meines Wissens nach auf unbestimmte Zeit wieder erscheinen.

Jetzt füge ich eine Variable hinzu und schreibe eine if-Anweisung hinein, und auch in den zukünftigen Block des Fehlerhandlers Bloc_Error füge ich einen Operator-Switch ein und führe ihn aus:

Die Frage ist, was ich im Switch-Operator falsch gemacht habe, warum die Meldung *Expert is not working* nicht angezeigt wird, und warum der EA wirklich nicht mehr funktioniert?????
//+------------------------------------------------------------------+      
    switch()//?????????????? почему в switch не передаёте параметр 
      {
      case 3:          // Неверные параметры:
      Work=false;
      return(0);
      }


 

Hallo zusammen!

Ich kann die Ursache des Fehlers nicht nachvollziehen, wenn der EA läuft. Ich teste einen EA auf 11 Paaren in einem Terminal zur gleichen Zeit (Demokonto). Ich prüfe die Einstiegsbedingungen zu Beginn jeder Stunde, d.h. 11 EAs beginnen gleichzeitig zu arbeiten. Die Funktion IsTradeBusy() (hier https://www.mql5.com/ru/articles/1412) wurde verwendet, um zu verhindern, dass sie sich gegenseitig stören. In letzter Zeit meldet der Expert Advisor einen Fehler, wenn er versucht, den Wert der globalen Variable TradeIsBusy zu ändern, anstatt eine Position zu eröffnen. Hier ist ein Teil des Codes:

     // пытаемся менять значение TradeIsBusy с 0 на 1
     // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
     if(GlobalVariableSetOnCondition( "TradeIsBusy", 1.0, 0.0 )) 
         return(1);
     else
     // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
     // возникла ошибка (это мы и проверим)
     {
        _GetLastError = GetLastError();
        // если это всё таки ошибка, выводим информацию и пробуем ещё раз
        if(_GetLastError != 0)
        {
           Print("TradeIsBusy()-GlobalVariableSetOnCondition(\" TradeIsBusy\",1.0,0.0 )-Error #",
           _GetLastError );
           continue;
        }
     }

Fehlercodes:

#4002 - "Array-Index - außerhalb des Bereichs"

#Nr. 4105 - "Es ist kein Auftrag ausgewählt".

Ich verstehe nicht, welche Bedingungen bei der Verwendung des Befehls GlobalVariableSetOnCondition diese Fehler verursachen können .

Terminal Broco Trader 4.0 build 225.

Kann das Terminal auf diese Weise stören?

 
Urain писал(а) >>

>>Danke, das werde ich.

 
OAndrey писал(а) >>

Hallo zusammen!

Ich kann die Ursache des Fehlers nicht nachvollziehen, wenn der EA läuft. Ich teste einen EA auf 11 Paaren in einem Terminal zur gleichen Zeit (Demokonto). Ich prüfe die Einstiegsbedingungen zu Beginn jeder Stunde, d.h. 11 EAs beginnen gleichzeitig zu arbeiten. Die Funktion IsTradeBusy() (hier https://www.mql5.com/ru/articles/1412) wurde verwendet, um sich nicht gegenseitig zu stören. In letzter Zeit meldet der Expert Advisor einen Fehler, wenn er versucht, den Wert der globalen Variable TradeIsBusy zu ändern, anstatt eine Position zu eröffnen. Hier ist ein Teil des Codes:

Fehlercodes:

#4002 - "Array-Index - außerhalb des Bereichs"

#Nr. 4105 - "Es ist kein Auftrag ausgewählt".

Ich verstehe nicht, welche Bedingungen bei der Verwendung des Befehls GlobalVariableSetOnCondition diese Fehler verursachen können .

Terminal Broco Trader 4.0 build 225.

Kann das Terminal so ausfallen?

Zu diesem Code kann ich nichts sagen. Und als Tipp. Zurücksetzen des Zustands des letzten Fehlers zu Beginn der Funktion. Sie kann auch woanders auftreten.

   GetLastError();  //Сбрасываем состояние 

   // пытаемся менять значение TradeIsBusy с 0 на 1
   // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
   if(GlobalVariableSetOnCondition( "TradeIsBusy", 1.0, 0.0 )) 
      return(1);
   else
   // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
   // возникла ошибка (это мы и проверим)
   {
      _GetLastError = GetLastError();
      // если это всё таки ошибка, выводим информацию и пробуем ещё раз
      if(_GetLastError != 0)
      {
         Print("TradeIsBusy()-GlobalVariableSetOnCondition(\" TradeIsBusy\",1.0,0.0 )-Error #",
         _GetLastError );
         continue;
      }
   }
 

Wie macht man einen Zeilenumbruch im Text? Ich zeige zum Beispiel etwas in einem Diagramm in OBJ_LABEL an und möchte, dass der Text in mehreren Zeilen geschrieben wird.

 
Mathers >> :

Wie macht man einen Zeilenumbruch im Text? Ich zeige zum Beispiel etwas in einem Diagramm in OBJ_LABEL an und möchte, dass der Text in mehreren Zeilen geschrieben wird.

Anzeige in mehreren Etiketten.

 

Was ist, wenn sich die Anzahl der Zeilen dynamisch ändert? Und sie kann ziemlich groß sein. Vielleicht kann anstelle eines Etiketts etwas anderes verwendet werden?


Und noch eine Frage: Nehmen wir an, ich habe ein Skript, das etwas in einer Endlosschleife mit einer Verzögerung von z.B. einer Sekunde ausführt. Wenn ich versuche, das Skript zu entfernen, wähle ich "Skript löschen", aber es wird nicht aus dem Diagramm entfernt, sondern fängt ohne Verzögerung wieder an zu laufen. Wenn ich noch einmal auf "Löschen" drücke, wird das Skript entfernt. Was ist das Problem? Vielleicht sollte ich dem Code etwas hinzufügen, um ihn korrekt zu vervollständigen?

 
Mathers >> :

Was ist, wenn sich die Anzahl der Zeilen dynamisch ändert? Und sie kann ziemlich groß sein. Vielleicht kann anstelle eines Etiketts etwas anderes verwendet werden?

Alert, alternativ. Kommentar - das ist gut.

Und noch eine Frage: Nehmen wir an, ich habe ein Skript, das etwas in einer Endlosschleife mit einer Verzögerung von z.B. einer Sekunde ausführt. Wenn ich versuche, das Skript zu entfernen, wähle ich "Skript löschen", aber es wird nicht aus dem Diagramm entfernt, sondern fängt ohne Verzögerung wieder an zu laufen. Wenn ich noch einmal auf "Löschen" drücke, wird das Skript entfernt. Was ist das Problem? Vielleicht sollte ich ein paar zusätzliche Wörter in meinen Code einfügen.

Ersetzen Sie while(true) durch while(!IsStopped())

 
Mathers >> :

Was ist, wenn sich die Anzahl der Zeilen dynamisch ändert? Und sie kann ziemlich groß sein. Vielleicht kann anstelle eines Etiketts etwas anderes verwendet werden?

Nein. Es sei denn, der Kommentar passt nicht. Schreiben Sie eine f-Funktion, in der die Ausgabe erzeugt wird, und schreiben Sie das, was Sie brauchen, in diese Funktion.

Und noch eine Frage: Nehmen wir an, ich habe ein Skript, das etwas in einer Endlosschleife mit einer Verzögerung von z.B. einer Sekunde ausführt. Wenn ich versuche, das Skript zu entfernen, wähle ich "Skript löschen", aber es wird nicht aus dem Diagramm entfernt, sondern fängt ohne Verzögerung wieder an zu laufen. Wenn ich noch einmal auf "Löschen" drücke, wird das Skript entfernt. Was ist das Problem? Vielleicht sollte ich ein paar zusätzliche Wörter in meinen Code einfügen.

So sollte es auch sein.

Grund der Beschwerde: