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

 

Le testeur de stratégie MetaTrader 5 fait actuellement l'objet d'une révision approfondie par l'équipe MQ. Malgré le fait que beaucoup de travail a été fait au cours des deux dernières années (grâce à l'équipe de MetaQuotes), ce testeur soulève beaucoup de questions. Malheureusement, les changements les plus récents sont davantage axés sur l'aspect visuel du testeur, afin que les débutants puissent travailler avec lui plus facilement, tandis que les mécanismes de son fonctionnement suscitent encore des questions de la part des utilisateurs plus expérimentés.

Je propose de consacrer ce fil de discussion à la critique constructive du testeur MetaTrader 5, et d'en faire un lieu où vous pouvez joindre les développeurs.

Toutes les déclarations/discussions/critiques/réfutations doivent être étayées par des arguments clairs et des résultats reproductibles. La discussion devrait porter sur les mécanismes d'exécution et de tarification. Les désirs en matière de fioritures, d'icônes et de chevaux sphériques dans le vide (je veux que tous les cœurs se chargent, je veux du multithreading pour une seule exécution, etc.) ne sont pas les bienvenus, même s'ils ne sont pas interdits.

Alors, allons-y.


Le testeur de MetaTrader 5 saute l'exécution des ordres à cours limité

1. Les ticks personnalisés sont donnés sous la forme d'un tableau MqlTisk dans un fichier binaire (joint au message).

2. Les données personnalisées sont traitées par un script spécial qui les charge dans l'historique des outils. Le script est également joint au message.

3) Un conseiller expert est lancé sur le graphique résultant et il effectue des transactions selon sa logique. Le conseiller expert fonctionne en mode ticks réels.

4. Au moment de 00:11:05:085, un ordre limite a été placé au prix de 10422.5. Le prix actuel au moment du placement est 10422.0.

5. A l'heure 00:11:06.179 le Dernier prix s'est produit à 10424.0. Selon les règles de fixation des prix en bourse, l'ordre SellLimit devrait être exécuté au prix de 10422.5, mais cela ne se produit pas. L'ordre de limite semble suspendu dans l'air, montrant une capitulation totale : les transactions ont lieu avec quelqu'un d'autre offrant des prix pires que les nôtres !

6. Mais les miracles commencent à se produire. Le prix s'inverse et passe de 1024.0 à 10419. C'est-à-dire que le niveau de vente de l'ordre limite pénètre de haut en bas. Cependant, l'ordre limite est également en suspens.

Malheureusement, je n'ai pas trouvé de journaux montrant ce qui se passe. On a l'impression que les journaux des testeurs sont simplement désactivés et que printf ne fonctionne pas. La sortie vers le journal du testeur est désactivée :

Quoi qu'il en soit, il semble que ce soit un autre problème qui n'existait pas auparavant.

A ce propos, j'ai enregistré une vidéo dans laquelle je peux clairement voir ce qui se passe (le plus intéressant commence à partir de 30 secondes environ. En haut de l'écran, l'heure actuelle est exacte à la milliseconde près) :



La vidéo montre clairement que l'amplitude de la barre pénètre le niveau de l'ordre limite, mais aucune exécution n'a lieu.

D'autres questions se posent au testeur. Mais pour l'instant, je pense qu'il est nécessaire d'y faire face.

Dossiers :
 

MetaTrader 5 Tester ne construit pas les barres correctement

Il s'agit du symbole personnalisé du post précédent (mêmes données). Les barres sont dessinées au dernier prix, qui est spécifié dans les paramètres du symbole.

A gauche, les barres dessinées dans le testeur. A droite, vous pouvez voir les barres initiales.

Vous pouvez voir que les graphiques ne coïncident pas complètement. Il y a de la merde sur celui de gauche.

S.w. Je pensais que c'était construit par l'offre, mais regardez la liste des offres - il s'avère que ces prix n'étaient même pas dans l'offre, ni dans la dernière ou la demande. Je joins le flux des transactions sous forme de texte ci-dessous.

Dossiers :
deribit_csv.zip  735 kb
 

Quel numéro de construction utilisez-vous ?

Heure très étrange dans le journal 0000.00.00 00:00:00.000

Quel est votre système d'exploitation ?

Les fichiers avec une extension log sont-ils enregistrés dans le dossier de données du testeur ?

 

1. Vous n'avez pas donné le fichier "deribit1.out.bin". Dans l'archive jointe "deribit1.out".

2. Vous n'avez pas donné de paramètres personnalisés aux personnages

 
Je construis des bars par Bid. L'exécution des limites par l'offre/la demande a lieu. Tout fonctionne (2093 pour être exact, je n'ai pas vérifié davantage) correctement.
 
Vasiliy Sokolov:

Une bonne fonction que vous ignorez

MqlTick tiks[];

if (FileLoad("deribit1.out.bin", ticks))
{
// ....
 
Slava:

1. Vous n'avez pas donné le fichier "deribit1.out.bin". Dans l'archive jointe "deribit1.out".

2. Tu n'as pas donné les paramètres personnalisés du personnage

Excusez-moi.

 
fxsaber:

Une bonne fonctionnalité que vous ignorez.

Bon à savoir.

 
Slava:

Quel numéro de construction utilisez-vous ?

Heure très étrange dans le journal 0000.00.00 00:00:00.000

Quel est votre système d'exploitation ?

Les fichiers avec une extension log sont-ils enregistrés dans le dossier de données du testeur ?

La construction est la plus récente. 2136. J'utilise toujours la dernière version.

Windows 7 SP1

Les journaux sont enregistrés. Les journaux apparaissent dans le journal du testeur de stratégie. Mais rien ne s'affiche dans le journal du visualiseur dans le testeur de stratégie.


 
Vasiliy Sokolov:

Excusez-moi.

Merci. (gloussements) On va s'en occuper.

 

La principale suggestion est sans aucun doute d'automatiser les tests.

Faites une optimisation de type "walk-forward" ou quelque chose comme ça. Les tests doivent porter sur plusieurs périodes et instruments.

Et si vous ne voulez pas le faire, alors laissez les personnes qui n'ont pas de diplôme d'ingénieur en programmation (ou un diplôme ?) le faire avec des outils MQL.

Pour ce faire, nous avons besoin de la possibilité de lire et d'écrire (Get__ \Set__) le début et la fin de la période de test, le début de la période suivante et la possibilité de relancer le testeur avec une nouvelle période de test.

En outre, les dispositifs de traitement des images disponibles ne fonctionnent pas correctement. On a déjà suffisamment écrit à ce sujet ici.

Un autre bug : Lorsque l'on redémarre le testeur avec la période d'avance activée et les paramètres précédents, il se bloque. Nous devons changer d'instance, de cadre temporel, d'instrument ou recompiler le conseiller expert.

La dernière version disponible publiquement est toujours 2085.

Raison: