Problème avec MT4 ouvrant une transaction, puis la refermant immédiatement - page 4

 

Il s'agit d'un problème délicat, car il est difficile de trouver un modèle cohérent.

Ce problème ne se produit que parfois et ne peut être reproduit de façon constante.

J'ai envisagé la suggestion des nombres magiques et, bien qu'il s'agisse d'une possibilité au départ, d'autres observations suggèrent qu'elle est peu probable.

Je m'arrache les cheveux et j'espère que quelqu'un d'autre a déjà rencontré ce problème.

 
peterc005:

J'ai considéré la suggestion des nombres magiques, et bien que ce soit une possibilité au départ, des observations supplémentaires suggèrent que ce n'est pas probable.

Quelles sont les observations détaillées qui excluent définitivement qu'un autre EA clôture des transactions qui ne lui appartiennent pas ? Il y a beaucoup d'EAs qui permettent l'entrée d'un nombre magique mais qui ne l'utilisent pas en interne ou pire encore qui l'utilisent parfois mais pas toujours, seulement pour certaines conditions de sortie, seulement dans quelques branches de leurs douzaines de ifs imbriqués et de boucles itératives d'ordre dupliquées.

Cette recherche google

"OrderSymbol() == Symbol()" -OrderMagicNumber

vous en trouverez beaucoup, elle commence déjà avec le troisième de la liste (earlybird1, gridmaster_03, et ainsi de suite, tout le résultat de la recherche en est rempli), ils prétendent utiliser un nombre magique mais en interne, ils l'ignorent tout simplement. Vous en trouverez beaucoup. Ce modèle de code défectueux est partout dans les forums et finit par être copié-collé dans de nombreux EA.

 
7bit:

Il s'agit d'un défaut dans le produit vendu, pas d'une intention criminelle.

Bien sûr, un défaut, pas de problème.

Mais le mot "sabotage" a un sens différent, qui n'est guère de nature technique, et ne remplace pas le mot "défaut".

Je suis sûr que ceux dont la première langue n'est pas l'anglais peuvent être excusés.

 
blogzr3:

Le terme "sabotage" a toutefois un sens différent, qui n'est guère de nature technique, et ne peut se substituer au mot "défaut".

Le défaut se manifeste par le fait qu'un robot sabote l'autre. Puisque c'est le robot qui sabote, je ne vois pas comment un robot peut avoir une intention. Le robot est défectueux et cela l'amène à saboter d'autres transactions. Je n'ai rien écrit ou voulu dire d'autre. Et le vendeur vend des produits défectueux.
 
7bit:
Le défaut se manifeste par le fait qu'un robot sabote l'autre. Comme c'est le robot qui sabote, je ne vois pas comment un robot peut avoir une intention. Le robot est défectueux et cela l'amène à saboter d'autres transactions. Je n'ai rien écrit ou voulu dire d'autre. Et le vendeur vend des produits défectueux.

La plupart de ces EA semblent utiliser l'indicateur ZigZag, qui est un coupable probable.

Lorsque cela s'est produit la première fois avec un EA appelé "Caliber", j'ai décompilé l'EA pour examiner le code. C'était un EA pourri, mais il n'y avait rien de suspect et la logique du nombre magique semblait correcte.

J'ai ajouté une logique supplémentaire pour empêcher l'EA d'effectuer des transactions plus d'une fois toutes les 90 minutes.

Par coïncidence, cela a également amélioré les performances globales de l'EA, car il avait tendance à atteindre un SL après un court moment, puis à entrer dans une nouvelle transaction dans la même direction. On pourrait penser qu'avec un SL de 30 pip, ce serait un EA sûr, mais s'il touche ce SL 4 fois en une heure, ce n'est pas bon.

Restreindre les transactions de cette manière a vraiment amélioré les performances de l'EA lors des backtests, et après que j'ai envoyé les changements de code au fournisseur, ils ont plus tard publié une mise à jour avec mes changements.

Quoi qu'il en soit, à l'époque, je testais mes modifications de Calibre sur un compte de démonstration et la même chose s'est produite. Je pouvais voir les transactions s'ouvrir et se fermer immédiatement. Comme il s'agissait d'un compte de démonstration, je me suis contenté de regarder ce qui se passait.

Dans ce cas, il s'agissait d'un nouveau compte de démonstration avec un seul EA en cours d'exécution. Cela me fait penser que c'est un problème de plateforme MT4, plutôt qu'un problème de MQL4.

Je connais maintenant bien MT4 et MQL4 et je peux résoudre la plupart des problèmes moi-même. Ce problème me laisse perplexe et je demande aux autres des suggestions.


 

je parie que c'est un problème d'indicateur/de calcul. peut-être une division par 0 qui n'arrive que dans certains cas spécifiques...

si vous pouvez répéter l'erreur dans le testeur, ce serait la moitié du loyer.

Puisque vous savez quel EA a causé ce problème et aussi quand il s'est produit, il devrait être facile de vérifier si c'est répétable.

Ensuite, si vous avez pu répéter l'erreur, il ne devrait pas être difficile de trouver le morceau de code qui provoque l'erreur.


//z

 

Here is one of the older log files. The problem is obvious from the number of trades opened and closed.

Dans le fichier journal, vous pouvez voir que MT4 et le courtier reçoivent des instructions pour ouvrir et fermer les ordres, mais pourquoi ?

Dossiers :
 
peterc005:


Une chose que j'ai remarquée dans un fichier journal pour une date pertinente était des milliers d'erreurs qui disent :

09:36:58 HistoryBase : pas assez de mémoire pour 'EURCHF1' dans AddTick()

09:36:58 Gestionnaire de mémoire : ne peut pas allouer 160308896 octets de mémoire.

Au lieu que le fichier journal soit de 10k, il est de 7Mb.

 
peterc005:

Voici l'un des anciens fichiers journaux. Le problème est évident au vu du nombre de transactions ouvertes et fermées.

Dans le fichier journal, vous pouvez voir que MT4 et le courtier reçoivent des instructions pour ouvrir et fermer les ordres, mais pourquoi ?

Avez-vous également l'autre journal (celui du dossier experts/logs) ? Celui-ci contiendra le nom de l'EA incriminé.
 
zzuegg:

puisque vous savez quel EA a causé cela

On ne sait toujours pas quel EA est à l'origine de ce problème.


Tout ce que nous avons vu jusqu'à présent, ce sont les symptômes (les transactions de plusieurs EA différents sont fermées immédiatement après leur ouverture) et quelques théories. On ne sait toujours pas quel EA ferme réellement ces transactions. Nous avons besoin des logs des experts dans le dossier experts/logs des 4 terminaux couvrant la même période de temps pour faire d'autres conclusions. Ces logs pourraient confirmer ou infirmer ma théorie et ils montreront finalement qui envoie tous les ordres de clôture.