Fehler, Irrtümer, Fragen - Seite 2621

 

Ich bin an einer scheinbar offensichtlichen Stelle über eine Verwechslung gestolpert. Hier ist das Drehbuch:

double Sigma = 1.0;
double Smax = 5.0;
double Step = 2;


void OnStart()
{
  int scount = 1;

  double s = Sigma;

  for( ; s < Smax; scount++)
  {
    s *= Step;
    Print(scount, " ", s);
  }
  
  Print(scount);
}

aus irgendeinem Grund endet mit scount gleich 4, obwohl es eigentlich 3 sein sollte. Die Inkrementierungsschleife sollte nach erfolgreicher Prüfung nur ausgeführt werden, wenn s gleich 1,0, 2,0, 4,0 ist. Dann gibt es 8 in s, was mehr als 5 ist.

 
Stanislav Korotky:

Ich bin an einer scheinbar offensichtlichen Stelle über eine Verwechslung gestolpert. Hier ist das Drehbuch:

aus irgendeinem Grund endet mit scount gleich 4, obwohl es eigentlich 3 sein sollte. Die Inkrementierungsschleife nach erfolgreicher Prüfung sollte nur ausgeführt werden, wenn s gleich 1,0, 2,0, 4,0 ist. Dann enthält s 8, was größer als 5 ist.

in der for-Anweisung wird das Inkrement nach dem Ende des Schleifenkörpers durchgeführthttps://www.mql5.com/ru/docs/basis/operators/for

for(Ausdruck1; Ausdruck2; Ausdruck3)Operator;

выражение1;
while(выражение2)
  {
   оператор;
   выражение3;
  };

Ich habe den ersten Artikel gegoogelt, falls ich mich nicht mehr erinnere - in C++ funktioniert es auf dieselbe Weise https://en.cppreference.com/w/cpp/language/for

init_statement
while ( condition ) {
statement
iteration_expression ;
}
 
Igor Makanu:

In der for-Anweisung erfolgt die Inkrementierung nach dem Ende des Schleifenkörpershttps://www.mql5.com/ru/docs/basis/operators/for

for(Ausdruck1; Ausdruck2; Ausdruck3)

Ganz genau. Die Schleifenvariable muss die Werte 1, 2, 3 übergeben. Denn nach der dritten Multiplikation ist die Bedingung nicht mehr erfüllt: 8 > 5 - dies geht aus dem letzten Ausdruck der Schleife hervor.

 
Stanislav Korotky:

Ganz genau. Die Schleifenvariable muss die Werte 1, 2, 3 übergeben. Denn nach der dritten Multiplikation ist die Bedingung nicht mehr erfüllt: 8 > 5 - dies geht aus dem letzten Ausdruck der Schleife hervor.

ja, aber der Körper der Schleife wird ausgeführt, richtig? also gibt es ein Inkrement nach dem Ende des Körpers "expression3", dann gibt es eine Prüfung - "expression2"

 
Igor Makanu:

ja, aber der Schleifenkörper ist fertig, richtig? also gibt es ein Inkrement nach dem Ende des "expression3"-Körpers, dann gibt es eine Prüfung - "expression2"

Freitag ist der letzte Freitag des Jahres :-/

 

1- Die Testergebnisläufe haben aufgehört zu laufen. Auf dem Laufwerk ist noch Platz. Alles ist vorhanden. Was vor ein paar Minuten noch lief, blieb plötzlich stehen.

Ich drücke die Starttaste oder klicke auf das Optimierungsergebnis und nichts passiert. Das ist die Art von Dingen, die einfach auftauchen:

2019.12.29 11:44:51.402 Tester Einzeldurchlauf gestartet

Und einmal erscheint diese Meldung:

2019.12.29 11:41:56.053 Tester Debug-Version von "Name.ex5" erkannt

Obwohl kein Debugging aktiviert ist und dieser EA überhaupt nicht im Editor geöffnet ist und der Editor deaktiviert ist, wurde nichts kompiliert oder geändert.

Parameter von der Optimierung bis zu den Einstellungen, die erfolgreich übertragen werden, und das ist, wo es visuell stoppt.


2- Und die Schaltfläche "Stopp" im Forwarder funktioniert nicht. Alternativ wechselt die Farbe nicht von rosa auf grün, oder das Terminal geht in den Zwischenzustand über, in dem es nichts tut, aber ich kann auf der Registerkarte "Einstellungen" nichts auswählen, weil dort alles deaktiviert ist.

Durch erneutes Drücken der Stopptaste wird der Lauf gestartet. Und man kann es vor der Weiterleitung stoppen und dann ist es in Ordnung.


3- Ein weiterer "Trick" besteht darin, dass die Optimierung ein paar Mal langsamer läuft. Nur mit der Zeit. Heilung durch Neustart des Terminals.... Irgendwo stapelt sich etwas... Das Löschen von Protokoll und Cache scheint diese Verlangsamung nicht zu beeinflussen. Aber ein Neustart hat eine große Wirkung!
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Михаил:

Die Testergebnisläufe haben aufgehört zu laufen. Der Speicherplatz ist vorhanden. Alles ist vorhanden. Was vor ein paar Minuten noch lief, blieb plötzlich stehen.

Ich drücke die Starttaste oder klicke auf das Optimierungsergebnis und nichts passiert. Das ist die Art von Dingen, die einfach auftauchen:

2019.12.29 11:44:51.402 Tester Einzeldurchlauf gestartet

Und einmal erscheint diese Meldung:

2019.12.29 11:41:56.053 Tester Debug-Version von "Name.ex5" erkannt

Obwohl kein Debugging aktiviert ist und dieser EA überhaupt nicht im Editor geöffnet ist und der Editor deaktiviert ist, wurde nichts kompiliert oder geändert.

Es speichert erfolgreich Parameter aus der Optimierung in den Einstellungen und bleibt visuell dabei stehen.


Und die Schaltfläche "Stopp" im Forwarder funktioniert nicht richtig. Manchmal wechselt die Farbe nicht von rosa zu grün, oder das Terminal erreicht nur einen Zwischenzustand, in dem es nichts tut, aber in der Registerkarte Einstellungen nichts auswählen kann, weil dort alles deaktiviert ist.

Durch erneutes Drücken der Stopptaste wird der Lauf gestartet. Und man kann es vor der Weiterleitung stoppen und dann ist es in Ordnung.


Und ein weiterer "Trick" besteht darin, dass die Optimierung um ein Vielfaches langsamer abläuft. Nur mit der Zeit. Abhilfe durch Neustart des Terminals.... Irgendwo staut sich etwas auf... Das Löschen von Protokoll und Cache scheint diese Verlangsamung nicht zu beeinflussen. Aber ein Neustart hat eine große Wirkung!

Sie müssen die Release-Version mit F7 kompilieren. Sie haben F5 gedrückt und debug-version kompiliert

 
Artyom Trishkin:

Sie müssen die Release-Version mit F7 kompilieren. Sie haben F5 gedrückt und debug-version kompiliert

Nein, ich kompiliere mit der Maus und der Schaltfläche "Kompilieren". Dies gilt jedoch nicht für den beschriebenen Fall, da dieser EA vorgestern erstellt wurde. Dann wurde es erfolgreich optimiert und mehrmals ausgeführt. Und dann stürzte er ab. Ein Neustart des Terminals hat geholfen...

Es fühlt sich also so an, als ob sich irgendwo Fehler auftürmen. Das führt zu Fehlfunktionen und Bremsen. Zurücksetzen (Neustart) heilt...
 
Und noch etwas: Je weiter (nach Datum) der Vorlauf vom Startdatum des Vorlaufs entfernt ist, desto langsamer läuft er. Zuerst ist es schnell, dann immer langsamer. Und dann katastrophal langsamer. Es ist eine gute Idee, das zu beheben)
 
Михаил:
Und noch etwas: Je weiter (nach Datum) der Vorlauf vom Startdatum des Vorlaufs entfernt ist, desto langsamer läuft er. Zuerst ist es schnell, dann immer langsamer. Und dann katastrophal langsamer. Es wäre schön, dies zu beheben)

Kein Code zum Spielen - keine Antwort