Erreurs, bugs, questions - page 2150

 

Quelques bogues de tester_file. Lecture pas à pas

  1. Laissez un agent local en état de marche et nettoyez le Terminal Sandbox - MQL5\Files\*.*
  2. Compiler l'EE
    #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. Ce faisant, un message apparaîtra dans le fichier journal du testeur indiquant que tester_file n'existe pas encore.
    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. Exécutez le conseiller expert sur les prix d'ouverture dans le testeur de stratégie en mode Optimisation complète de la force brute. Nous verrons dans le journal du testeur
    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. Redémarrez immédiatement cette même Optimisation en appuyant sur "Start". Nous obtiendrons une optimisation plus lente de 30 fois - 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. Les résultats du Frame-advisor montreront que le fichier existant n'est pas transféré, car le processus de compilation a été effectué sans lui (voir étape 3). Un insecte ou un insecte ?
  7. Recompiler le conseiller expert. Dans ce cas, nous ne recevrons pas les messages indiqués à la page 3, ce qui est correct.
  8. Redémarrez l'Optimisation. Frame-Advisor indiquera que le fichier "tester_file" a été transféré à l'agent.
    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. Ré-exécutez l'optimisation. Nous obtiendrons un ralentissement, comme à l'étape 4. Mais en mode Cadre, nous verrons que le fichier tester_file n'a pas été transmis à l'Optimiseur au deuxième démarrage - bug !
    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. Nous allons exécuter la troisième Optimisation et obtenir les résultats à l'étape 8.
  11. Quatrièmement, nous obtenons des résultats à l'étape 9.
  12. Ainsi, chaque numéro impair d'optimisation vous donne le résultat de l'étape 8, les numéros pairs vous donnent le résultat de l'étape 9.

Ce que fait l'EA. En mode cadre, dans OnTesterInit, il crée un fichier de 4 octets et l'envoie à l'agent via le mécanisme tester_file. L'agent l'ouvre et s'il voit que la taille du fichier est de 4 octets, il l'ajoute à 8 octets. L'agent lui-même transmet la taille originale du fichier en octets à travers le cadre. Ainsi, il est vérifié que le fichier est transféré lors du premier passage de l'Optimiseur, et que les autres passages travaillent avec le fichier qui se trouve temporairement dans le bac à sable de l'Agent lui-même.

En général, nous avons réussi à reproduire quelques bogues.

 

cette question a peut-être déjà été posée, mais néanmoins :

Est-il possible d'appeler la fenêtre des paramètres de l'indicateur dans MQL5 ?

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Discussion sur le thème "Conseiller en négociation multiplateforme : introduction".

fxsaber, 2016.08.17 16:51

Passons à l'exemple de StringConcatenate. Difficile de comprendre que les gens utilisent cette fonction dans MT4/5. Non seulement c'est encombrant, mais ce n'est même pas clair. La concaténation des chaînes de caractères a TOUJOURS été réalisée dans les deux plateformes via l'opérateur +. Ainsi, utiliser StringConcatenate pour les chaînes de caractères est comparable à l'utilisation de la fonction "NumberSummary" pour obtenir la somme des nombres. Absurde, en somme.

Non seulement c'est absurde, mais en plus ce n'est pas multiplateforme.

 
Andrii Djola:

cette question a peut-être déjà été posée, mais néanmoins :

Est-il possible d'appeler la fenêtre des paramètres de l'indicateur dans MQL5 ?

Pour autant que je sache, une telle fonction n'existe pas dans MQL.
Mais grâce à WinAPI, vous pouvez ouvrir la liste de tous les indicateurs, regarder dans l'arbre des indicateurs et trouver le bon...

 
Andrii Djola:

Cette question a peut-être déjà été posée, mais quand même :

Est-il possible d'appeler la fenêtre des paramètres de l'indicateur dans MQL5 ?

Le Service Desk a promis de réfléchir à une telle fonction.

 

Pourquoi cela se produit-il ?

2018.03.01 06:54:04.342 Testeur La version de débogage de "MQL5\Experts\MyExpert.ex5" peut être optimisée sur les agents locaux uniquement, pas de Cloud, pas de Ferme

Comment puis-je le réparer ?


 
Nexxtor:

Pourquoi cela se produit-il ?

2018.03.01 06:54:04.342 Testeur La version de débogage de "MQL5\Experts\MyExpert.ex5" peut être optimisée sur les agents locaux uniquement, pas de Cloud, pas de Ferme

Comment puis-je le réparer ?


Compilez d'abord, puis exécutez l'optimisation.

 
Dans le dossier "Bases\MetaQuotes-Demo\history\" est apparu un dossier avec 2018.hcc relatif au symbole personnalisé. Bug.
 

Dans la continuité de cette grande fonctionnalité du Testeur. En exécutant l'optimisation, j'obtiens ceci


Journal de bord Core1

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)


Journal du Core2.

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)


Tous les agents étaient prêts avant le départ. Il n'y avait pas de visualiseur. Core2 (et Core2 - voir capture d'écran) a démarré deux minutes après le départ. Résolvons le problème !

 

L'optimiseur n'indique pas le temps écoulé et le temps restant.

10 heures déjà sur Optimizer, il ne reste plus de temps

Cela est probablement dû aux personnages personnalisés.