Testeur de stratégie MetaTrader 5 : bugs, anomalies, suggestions d'amélioration - page 3

 

Après optimisation, j'ai trouvé ceci

Dans deux passes, où les profits et les retraits sont très proches, le facteur de récupération est très différent.


ZZY Le mode brut "par pips". Je ne recommande pas encore de l'utiliser. Surtout si vous optimisez.

 

L'optimiseur MT5 ne dispose pas de cette fonctionnalité MT4.



Donc tu dois le faire de cette façon.

sinput uint inMaxOrders = 0; // Максимальное количество ордеров.
sinput double inMaxAbsoluteDD = 0; // Максимальная абсолютная просадка

bool IsMaxOrders()
{
#ifdef __MT4ORDERS__
  return(inMaxOrders && MT4ORDERS::LastTradeResult.order > inMaxOrders);
#else
  return(false);
#endif
}

bool IsMaxAbsoluteDD()
{
  static const double StartBalance = AccountInfoDouble(ACCOUNT_BALANCE);

  return(inMaxAbsoluteDD && ((StartBalance - AccountInfoDouble(ACCOUNT_EQUITY)) > inMaxAbsoluteDD));
}

void OnTick()
{
  static const bool IsTester = MQLInfoInteger(MQL_TESTER);
  
  if (IsTester && (IsMaxOrders() || IsMaxAbsoluteDD()))
  {
  #ifdef __MQL5__
    TesterStop();
  #else // __MQL5__
    ExpertRemove();
  #endif // __MQL5__
    
    return;
  }
// ....


Sinon, ce sera très mauvais et cela prendra beaucoup de temps.

 

Après l'optimisation, les agents ne déchargent pas pendant un certain temps (un nombre décent de minutes) tant qu'ils sont prêts à combattre. C'est une solution vraiment cool.

Parfois, les agents consomment beaucoup de mémoire, ce qui est nécessaire après l'optimisation. J'ai donc décidé de le libérer en les désactivant.


Cependant, ils n'ont pas déchargé.


Est-il possible de les faire décharger par l'élément de menu "Disable" ou de créer l'élément de menu "Unload Forced" ?

 
Le rapport du testeur "Temps de maintien de la position maximale" ne tient-il pas compte des week-ends ?
 

Performance.

Course unique
SSD
Course unique
RAM-Drive
Deuxième passage de l'optimiseur
Disque dur SSD/RAM
Passage unique
Virtual
Optimiseur de second passage
Virtual
72 secondes 64 secondes 28 secondes 26 secondes 18 secondes


Les passages simples étaient effectués "à chaud" - après le premier passage simple, un deuxième passage était immédiatement lancé.

Il faut faire quelque chose au sujet du freinage en une seule course. Il est 2,5 fois plus lent que l'Optimizer.

Et il ne s'agit pas seulement de journaux redondants. Virtual n'enregistre rien, mais il est toujours beaucoup plus rapide dans l'optimiseur.

 

Est-ce une bonne solution de masquer complètement les plages de modification des paramètres d'entrée lorsqu'une seule exécution est sélectionnée ?


Auparavant, lorsque je chargeais un fichier de réglage, on voyait immédiatement à partir de quelle optimisation il était sélectionné. Maintenant, ce n'est plus le cas.


ZZY Tant que vous n'avez pas coché la case, vous ne pouvez pas voir la gamme. C'est devenu très gênant. Et lorsque la case est cochée, vous ne pouvez pas voir la valeur par défaut.

 

Les gars, j'en ai marre des journaux de passage unique. Absolument impossible de travailler avec RAM-Drive à cause d'eux. Des gigaoctets de déchets en quelques passages. C'est une véritable nuisance. Le disque RAM s'encrasse très vite.

J'utilise Virtual. Je n'ai aucun problème avec elle dans ce sens. Néanmoins, j'aimerais résoudre radicalement ce problème via WinAPI.


Pouvez-vous me conseiller de planter automatiquement les fichiers Tester\Agent-127.0.0.1-300x\logs\*.log avant de lancer une seule exécution ? Je veux écrire une solution une fois et oublier cette méchanceté pour toujours.

Le problème est que même manuellement, ces fichiers ne peuvent pas être supprimés car ils sont occupés par le terminal. Il existe une option "Unlocker". Je vais devoir voir s'il existe une version pour console.


En général, toute aide que je peux obtenir dans ce cas.


SZY Et quelle devrait être la limite maximale de la taille des logs.....

 
fxsaber:

Les gars, j'en ai marre des journaux de passage unique. Absolument impossible de travailler avec RAM-Drive à cause d'eux. Des gigaoctets de déchets en quelques passages. C'est un vrai tas de ferraille. Le disque RAM s'encrasse très vite.

J'utilise Virtual. Je n'ai aucun problème avec elle dans ce sens. Néanmoins, j'aimerais résoudre radicalement ce problème via WinAPI.


Pouvez-vous me conseiller de planter automatiquement les fichiers Tester\Agent-127.0.0.1-300x\logs\*.log avant de lancer une seule exécution ? Je veux écrire une solution une fois et oublier cette méchanceté pour toujours.

Le problème est que même manuellement, ces fichiers ne peuvent pas être supprimés car ils sont occupés par le terminal. Il existe une option "Unlocker". Je vais devoir voir s'il existe une version pour console.


En général, je demande toute aide dans ce cas.


SZY Et quelle devrait être la limite maximale de la taille des logs.....

Interdire l'écriture dans le dossier des journaux ?

 
Andrey Khatimlianskii:

Interdire l'écriture dans le dossier des journaux ?

Cette option ne fonctionne pas.


Je lance un tel fichier batch dans le dossier Terminal une fois après avoir redémarré l'ordinateur.

rem Создали RAM-Drive для Тестера.
imdisk -a -o awe -s 3 G -m Z: -p "/fs:ntfs /q /y /v:MT5Tester"

mkdir z:\Tester
mklink /j Tester z:\Tester

rem Кеш оптимизатора будет сохраняться на диске.
mkdir cache
mklink /j z:\Tester\cache cache

rem Временный RAM-Drive, чтобы на него можно было перенаправить log-папки.
imdisk -a -o awe -s 3 M -m Y: -p "/fs:ntfs /q /y /v:MT5Tester_Logs"

mkdir y:\logs
mklink /j Tester\logs y:\logs

mkdir y:\logs0
mkdir Tester\Agent-127.0.0.1-3000
mklink /j Tester\Agent-127.0.0.1-3000\logs y:\logs0

mkdir y:\logs1
mkdir Tester\Agent-127.0.0.1-3001
mklink /j Tester\Agent-127.0.0.1-3001\logs y:\logs1

mkdir y:\logs2
mkdir Tester\Agent-127.0.0.1-3002
mklink /j Tester\Agent-127.0.0.1-3002\logs y:\logs2

mkdir y:\logs3
mkdir Tester\Agent-127.0.0.1-3003
mklink /j Tester\Agent-127.0.0.1-3003\logs y:\logs3

mkdir y:\logs4
mkdir Tester\Agent-127.0.0.1-3004
mklink /j Tester\Agent-127.0.0.1-3004\logs y:\logs4

mkdir y:\logs5
mkdir Tester\Agent-127.0.0.1-3005
mklink /j Tester\Agent-127.0.0.1-3005\logs y:\logs5

mkdir y:\logs6
mkdir Tester\Agent-127.0.0.1-3006
mklink /j Tester\Agent-127.0.0.1-3006\logs y:\logs6

mkdir y:\logs7
mkdir Tester\Agent-127.0.0.1-3007
mklink /j Tester\Agent-127.0.0.1-3007\logs y:\logs7

rem Убили временный RAM-Drive
imdisk -D -m Y:


Après cela, aucun fichier journal n'est créé. Jusqu'à présent, je n'ai pas remarqué de décalage du côté du Testeur. Cela semble être une solution efficace.

 
fxsaber:

Cette option ne fonctionne pas.

Comment interdisez-vous l'enregistrement ?