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

 

Il semble que lors du démarrage du test (c'est-à-dire en cliquant sur "Start" dans le Strategy Tester), l'agent Tester ne copie pas les fichiers requis (y compris la DLL) dans son dossier MQL{Libraries interne. J'ai identifié deux événements :

Si j'ai un fichier "Test.dll" dans mon EA, alors

1) Strategy Tester se plaint que le fichier Test.dll.ex5 est introuvable.

2) L'agent de test ne copie pas Test.dll dans son dossier interne et, par conséquent, le testeur de stratégie se plaint que Test.dll est introuvable.

% appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Bibliothèques \

 
Rashid Umarov:

Il n'y avait pas d'interdiction

Il y avait un grave blocage IP - le serveur était indisponible. Il était impossible de se connecter via un anonymiseur, car le mot de passe était censé être erroné.

En général, une protection automatique standard contre les utilisateurs peu scrupuleux.

 
Luis:

Il semble que lors du démarrage du test (c'est-à-dire en cliquant sur "Start" dans le Strategy Tester), l'agent Tester ne copie pas les fichiers requis (y compris la DLL) dans son dossier MQL{Libraries interne. J'ai identifié deux événements :

Si j'ai un fichier "Test.dll" dans mon EA, alors

1) Strategy Tester se plaint que le fichier Test.dll.ex5 est introuvable.

2) L'agent de test ne copie pas Test.dll dans son dossier interne et, par conséquent, le testeur de stratégie se plaint que Test.dll est introuvable.

% appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Bibliothèques \

J'ai la même erreur dans Strategy Tester!

2020.02.25 02:03:35.725 Tester fichier ***.dll.ex5 erreur d'ouverture [2]

Si vous renommez la bibliothèque (en ajoutant l'extension .ex5), cela génère une autre erreur :

2020.02.25 02:09:32.567 2020.02.18 00:00:00 Impossible d'appeler 'Receive_Information', '***.dll' n'est pas chargé.

2020.02.25 02:09:32.568 2020.02.18 00:00:00 appel de fonction d'importation non résolu



 
Slava:

Reproduit exactement avec le bouton d'arrêt enfoncé.

Si vous devez procéder à une optimisation responsable, il est probablement préférable de le faire après avoir redémarré le terminal, sans appuyer sur le bouton Stop.

 
fxsaber:

Si vous devez procéder à une optimisation responsable, il est probablement préférable de le faire après avoir redémarré le terminal, sans appuyer sur le bouton Stop.

C'est possible. Mais nous ne devons pas en dépendre.

Ce comportement (lorsque l'on appuie sur le bouton d'arrêt) a été corrigé, et la correction est incluse dans la dernière version.

 
Slava:

C'est possible. Mais nous ne devons pas en dépendre.

Ce comportement (avec le bouton d'arrêt) a été corrigé, et la correction est incluse dans la dernière version.

Il faut alors chercher à nouveau la raison pour laquelle la passe d'optimisation n'est pas la même que la passe unique.

 
fxsaber:

Nous devons alors chercher à nouveau la raison pour laquelle la passe d'optimisation n'est pas la même que la passe unique.

L'expert du test compte-t-il des millisecondes de tic-tac donnant des divergences ?

C'est avec cela que nous avons détecté le problème, puis nous l'avons vérifié avec le même conseiller expert.

 
Slava:

Est-ce que le test EA comptant les millisecondes des ticks donne des divergences ?

Le problème a été détecté, puis vérifié par le même expert.

Cette EE en 2340 n'a pas montré plus de divergences.


Le décalage de la passe s'est produit dans l'EA en direct. Je vais utiliser la méthode qui a fait ses preuves la dernière fois.

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

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

fxsaber, 2020.02.20 08:57

J'ai comparé les statistiques des délais obtenus lors de l'optimisation GA. Et la démarche de la passe unique.


Dans l'état de l'image, l'exécution se fait par ticks qui ne sont pas dans l'historique : j'ai remarqué immédiatement qu'il y a beaucoup de transactions/ordres, qui sont exécutés par exactement une seconde.

Par exemple, un passage unique dans l'historique a une entrée au 2019.06.04 02:00:00.206, et un passage de cadre au 2019.06.04 02:00:00.000(l'historique des tics n'a pas de tic à ce moment-là).


Il faut beaucoup de temps pour faire ça...

 
Environnement de l'expérience:

MT5 build 2342 beta
un EA sans ordre de marché (ordre en attente uniquement)
16487771 ticks données de symbole personnalisé
4 agents de test locaux
4 cœurs de CPU physiques, 32g de ram, Windows 7 x64


Méthode expérimentale:

Mettez en place une opération de trading virtuelle correspondante pour chaque opération de trading réelle.

Utiliser les fonctions FrameAdd () et FrameNext () pour sortir certaines informations du processus d'optimisation et les enregistrer dans un fichier texte local (Excel A à T).


Résultat de l'expérience:

Il y a moins de 20 % de chances que la tâche d'optimisation soit réalisée parfaitement, avec les mêmes résultats corrects qu'un test unique.

Mais dans la grande majorité des cas, tous les résultats renvoyés par la tâche d'optimisation sont faux.



Lors d'un test unique et d'un test d'optimisation réussi, tous les résultats des opérations de trading réelles et virtuelles sont identiques.

Lors du test d'optimisation raté, seules les opérations virtuelles peuvent renvoyer le résultat correct de la transaction, alors que toutes les données renvoyées par les opérations réelles, telles que le nombre de transactions et le montant du bénéfice, sont toutes fausses.

(Dans des circonstances normales, une véritable opération commerciale appelle correctement la fonction OrderSend () et renvoie les informations sur l'état de la transaction dans OnTradeTransaction () et OnTrade ().

B : numéro de passage de la commande
D : quantité de tiques traitées
F : somme de tous les prix de vente
H : somme de tous les prix des offres
J : quantité d'ordres virtuels en attente
L : quantité de transactions virtuelles
N : bénéfice net du trading virtuel

P : quantité d'ordres réels en attente
R : quantité d'échanges réels
T : bénéfice net du commerce réel


Toutes les valeurs des colonnes D à N sont correctes (case verte) signifie que le traitement des données de coche dans la tâche d'optimisation fonctionne toujours correctement.


Valeurs erronées dans la boîte rouge :

1. sur P :
P devrait être exactement la même chose que J, car le virtuel et le réel doivent compter le nombre d'ordres en attente dans les mêmes conditions préalables.
Si les conditions préalables sont remplies, entrez immédiatement dans le bloc de code pour l'attente, P ++. Après cela, saisissez OrderSend ().
Les résultats P extrêmement anormaux signifient que les instructions suivantes sautent parfois correctement (J) et parfois ne sautent pas correctement lorsque le programme s'exécute dans les mêmes conditions.

2. sur R :
R est compté dans OnTradeTransaction ().
L'ordre dans P, s'il est déclenché, doit être compté dans R.
Tous les zéros R signifient que les activités de trading réelles de l'EA en cours d'exécution ne sont jamais entrées dans OnTradeTransaction ().
Peut-être est-ce parce que les résultats P actuels ne sont que des erreurs aléatoires, et non des pendants significatifs ?

3. sur T :
Le profit ou la perte en T doit provenir de la position en R.
Si les compteurs de positions dans R sont tous à zéro, d'où vient le calcul des profits/pertes dans T ?


4. Une dernière remarque :
La valeur de P est très proche de la valeur "Total Trades" retournée par le testeur de stratégie, mais pas exactement la même.
D'après mes multiples tests, il semble que la valeur de "Total Trades" soit toujours dans la même séquence arithmétique que le paramètre d'optimisation d'entrée de l'EA, et qu'elle ait la même valeur de pas.
Il est normal que les paramètres d'entrée soient des séquences arithmétiques, mais la valeur d'une variable dont la signification n'est absolument pas pertinente est également une séquence arithmétique similaire ?

 

Pourquoi un modérateur ne vient-il pas ici en courant pour supprimer le message et le laisser à la place:

<DELETED>

Il s'agit d'un forum en langue anglaise

Poste en anglais

? Deux poids, deux mesures ?

Raison: