Fehler, Irrtümer, Fragen - Seite 2150

 
Vladislav Andruschenko:

Terminal 1755

Bei der Arbeit mit dem Expert Advisor und der Kompilierung - seine aktualisierte Version erscheint auf dem Diagramm - alles ist in Ordnung

aber im Tester wähle ich diesen EA aus und nach der Kompilierung wird ein anderer (vorheriger) EA ausgewählt.

Nach dem Neustart ist alles in Ordnung.

Ein altes Problem.

 

Einige tester_file-Fehler. Schritt für Schritt abspielen

  1. Belassen Sie einen funktionierenden lokalen Agenten und reinigen Sie die Terminal-Sandbox - MQL5\Files\*.*
  2. EA kompilieren
    #property tester_file __FILE__
    
    sinput uint Range = 100; // Входной параметр для Оптимизации
    
    #define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)
    
    void OnTesterInit()
    {
      SETRANGE(Range, 0, 1, Range);
      
      const int handle = FileOpen(__FILE__, FILE_WRITE | FILE_BIN );
      
      // Создаем файл на 4 байта
      if (handle != INVALID_HANDLE)
      {
        FileWriteInteger(handle, 0);
        
        FileClose(handle);
      }
    }
    
    void OnTesterDeinit() { ChartClose(); }
    
    #define  TOSTRING(A) #A + " = " + (string)(A) + " "
    
    void OnTesterPass()
    {
      ulong Pass;
      string Name;
      long ID;
      double dOnTester;
      uchar Data[];
    
      while (FrameNext(Pass, Name, ID, dOnTester, Data))
        Print(TOSTRING(Pass) + TOSTRING(ID)); // Распечатываем размер файла на Агенте
    
      return;
    }
    
    double OnTester()
    {
      const int handle = FileOpen(__FILE__, FILE_READ | FILE_WRITE | FILE_BIN );
    
      const int i = (int)((handle != INVALID_HANDLE) ? FileSize(handle) : -1);
      
      // Делаем файл 4 байта, делаем - 8.
      if ((handle != INVALID_HANDLE) && (FileSize(handle) == INT_VALUE))
      {
        FileSeek(handle, 0, SEEK_END);
        FileWriteInteger(handle, 0);
              
        FileClose(handle);
      }
    
      uchar Data[];    
      FrameAdd(NULL, i, 0, Data); // Передаем размер файла до изменений.
      
      return(0);
    }

  3. Dabei erscheint in der Protokolldatei des Testers eine Meldung, dass tester_file noch nicht existiert
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist

  4. Lassen Sie den Expert Advisor durch die Eröffnungskurse im Strategietester im Modus Vollständige Brute-Force-Optimierung laufen. Im Protokoll des Testers sehen wir
    2018.02.28 21:20:24.424 Statistics      optimization done in 0 minutes 03 seconds
    2018.02.28 21:20:24.424 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

  5. Starten Sie dieselbe Optimierung sofort wieder, indem Sie auf "Start" drücken. Wir werden um 30 Mal langsamer Optimize - Bug!
    2018.02.28 21:23:02.219 Statistics      optimization done in 1 minutes 06 seconds
    2018.02.28 21:23:02.219 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


  6. Die Ergebnisse des Frame-Advisors zeigen, dass die vorhandene Datei nicht übertragen wird, da der Kompilierungsprozess ohne sie durchgeführt wurde (siehe Schritt 3). Ein Fehler oder ein Käfer?
  7. Kompilieren Sie den Expert Advisor neu. In diesem Fall erhalten wir nicht die Meldungen, die wir auf S. 3 beschrieben haben, was richtig ist.
  8. Starten Sie die Optimierung neu. Frame-Advisor zeigt an, dass die tester_file an den Agent übertragen wurde
    2018.02.28 21:28:33.449 Moving Average (EURUSD,M1)      Pass = 0 ID = 4 
    2018.02.28 21:28:33.472 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:33.495 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:33.519 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 

  9. Führen Sie die Optimierung erneut durch. Es kommt zu einer Verlangsamung, wie in Schritt 4. Aber im Frame-Modus werden wir sehen, dass tester_file beim zweiten Start nicht an den Optimierer übergeben wurde - Fehler!
    2018.02.28 21:28:43.727 Moving Average (EURUSD,M1)      Pass = 0 ID = 8 
    2018.02.28 21:28:43.797 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:43.834 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:43.864 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 


  10. Wir werden die dritte Optimierung durchführen und die Ergebnisse in Schritt 8 erhalten.
  11. Viertens: In Schritt 9 erhalten wir Ergebnisse.
  12. Jede ungerade Optimierung liefert also das Ergebnis von Schritt 8, jede gerade Optimierung liefert das Ergebnis von Schritt 9.

Was der EA tut. Im Frame-Modus wird bei OnTesterInit eine 4-Byte-Datei erstellt und über den Mechanismus tester_file an den Agenten gesendet. Der Agent öffnet sie und wenn er sieht, dass die Dateigröße 4 Byte beträgt, fügt er 8 Byte hinzu. Der Agent selbst gibt die ursprüngliche Dateigröße in Bytes durch den Rahmen weiter. Dadurch wird sichergestellt, dass die Datei beim ersten Durchlauf des Optimierers übertragen wird und andere Durchläufe mit der Datei arbeiten, die vorübergehend in der Sandbox des Agenten selbst liegt.

Im Allgemeinen ist es uns gelungen, ein paar Fehler zu reproduzieren.

 

Diese Frage ist vielleicht schon gestellt worden, aber trotzdem:

Ist es möglich, das Indikatorparameterfenster in MQL5 aufzurufen?

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion über "Plattformübergreifender Handelsberater: Einführung"

fxsaber, 2016.08.17 16:51

Schnitt zum StringConcatenate-Beispiel. Es ist schwer zu verstehen, dass Menschen diese Funktion in MT4/5 verwenden. Sie ist nicht nur umständlich, sondern auch unübersichtlich. Die Verkettung von Zeichenketten wurde auf beiden Plattformen IMMER mit dem Operator + durchgeführt. Die Verwendung von StringConcatenate für Strings ist also vergleichbar mit der Verwendung der Funktion "NumberSummary", um die Summe der Zahlen zu ermitteln. Absurd, kurz gesagt.

Das ist nicht nur absurd, es ist auch nicht plattformübergreifend.

 
Andrii Djola:

Diese Frage ist vielleicht schon gestellt worden, aber trotzdem:

Ist es möglich, das Indikatorparameterfenster in MQL5 aufzurufen?

Soweit ich weiß, gibt es eine solche Funktion in MQL nicht.
Aber über WinAPI können Sie die Liste aller Indikatoren öffnen, den Indikatorbaum durchsehen und den richtigen finden...

 
Andrii Djola:

vielleicht wurde diese Frage schon gestellt, aber trotzdem:

Ist es möglich, das Indikatorparameterfenster in MQL5 aufzurufen?

Service Desk hat versprochen, über eine solche Funktion nachzudenken.

 

Warum ist das so?

2018.03.01 06:54:04.342 Tester Debug-Version von "MQL5\Experts\MyExpert.ex5" kann nur auf lokalen Agenten optimiert werden, keine Cloud, keine Farm

Wie kann ich es reparieren?


 
Nexxtor:

Warum ist das so?

2018.03.01 06:54:04.342 Tester Debug-Version von "MQL5\Experts\MyExpert.ex5" kann nur auf lokalen Agenten optimiert werden, keine Cloud, keine Farm

Wie kann ich es reparieren?


Zuerst kompilieren, dann die Optimierung durchführen.

 
Im Ordner "Bases\MetaQuotes-Demo\history\" erschien ein Ordner mit 2018.hcc, der sich auf das benutzerdefinierte Symbol bezieht. Fehler.
 

In Fortführung dieser großartigen Funktion des Testers. Wenn ich die Optimierung ausführe, erhalte ich Folgendes


Kern1-Protokoll

KE      0       14:23:25.855    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
KP      0       14:23:25.862    Server  MetaTester 5 started on 127.0.0.1:3000
OJ      0       14:23:25.862    Startup initialization finished
JQ      0       14:23:25.871    127.0.0.1       login (build 1755)
HG      0       14:23:38.760    Network 38520 bytes of account info loaded
JP      0       14:23:38.760    Network 1482 bytes of tester parameters loaded
QG      0       14:23:38.760    Network 2236 bytes of input parameters loaded
OP      0       14:23:38.771    Network 4605 bytes of symbols list loaded
NK      0       14:23:38.771    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
NM      0       14:23:38.771    Network 1368 bytes of optimized inputs info loaded
CH      0       14:23:38.774    Tester  successfully initialized
HL      0       14:23:38.774    Network 118 Kb of total initialization data received
JF      0       14:23:38.775    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KL      0       14:23:38.775    Tester  optimization pass 0 started (batch of 30 tasks)


Core2-Protokoll.

CQ      0       14:25:27.983    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
MD      0       14:25:27.988    Server  MetaTester 5 started on 127.0.0.1:3001
FO      0       14:25:27.989    Startup initialization finished
FM      0       14:25:29.021    127.0.0.1       login (build 1755)
HK      0       14:25:29.026    Network 38520 bytes of account info loaded
IL      0       14:25:29.026    Network 1482 bytes of tester parameters loaded
RK      0       14:25:29.026    Network 2236 bytes of input parameters loaded
QL      0       14:25:29.029    Network 4605 bytes of symbols list loaded
PG      0       14:25:29.030    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
DI      0       14:25:29.030    Network 1368 bytes of optimized inputs info loaded
HL      0       14:25:29.032    Tester  successfully initialized
GP      0       14:25:29.032    Network 118 Kb of total initialization data received
JR      0       14:25:29.032    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KI      0       14:25:29.033    Tester  optimization pass 180 started (batch of 30 tasks)


Alle Agenten waren vor dem Start bereit. Es gab keinen Visualisierer. Core2 (und Core2 - siehe Bildschirmfoto) startete zwei Minuten nach dem Start. Lassen Sie uns das Problem lösen!