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

 
7bit:

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 et quelques théories. 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 qui envoie les ordres de fermeture.

je pensais qu'il exécutait chaque EA sur un compte/terminal différent ?

//Après avoir relu le fil de discussion, j'ai vu qu'il exécute 30 EA sur 4 terminaux...

//z.

 
zzuegg:

Je pensais qu'il exécutait chaque EA sur un compte/terminal différent ?

Nous avons besoin d'autant de logs qu'il y a de terminaux. IIRC il a mentionné 4 terminaux, chacun exécutant quelques EAs. Mais le nombre n'a pas d'importance, le plus important est de regarder les logs de tous les terminaux en même temps.

Une transaction ouverte par EA1 sur le terminal1 peut être fermée par EA2 sur le terminal2. EA1 rouvrirait immédiatement la transaction et EA2 la refermerait immédiatement à l'infini.

Le journal des experts du terminal1 se remplirait d'entrées concernant l'ouverture et le journal des experts du terminal2 se remplirait d'entrées concernant la fermeture. Dans l'historique du compte, toutes les pertes seront attribuées à l'EA1 car c'est elle qui a ouvert la transaction et l'EA2 restera complètement sous le radar, son nom ne sera pas mentionné dans l'historique du compte. Il ne sera mentionné que dans le journal des experts du terminal sur lequel il fonctionne.


Je vous le promets : si l'EA incriminé est finalement trouvé, ce sera le seul qui n'a pas souffert de tout cela, le seul qui semblait bien se comporter tout le temps, celui qui est le moins suspecté sera le coupable.

 

une fois, un de mes EA a eu un issius similaire, le code coupable était :

if(Close[1]<Open[1] && Close[2] < Open[2]){
  //CLOSE ALL PROFITALBE BUYS
}

cela n'est arrivé qu'une fois... j'ai eu la chance de ne fermer que les trades rentables... donc mon EA a fait 100trades et les a fermés dès qu'ils étaient positifs.

 



Ce problème est apparu pour la première fois en mai 2010 et a affecté un EA appelé "Callibre".

Je me suis réveillé le matin et il y avait un trou de 4 000 $ sur le compte, et l'onglet Historique mettait des heures à se charger.

J'ai parlé au courtier, et j'ai obtenu une copie des journaux de leur serveur MT4 (ci-joint).

Vous trouverez également ci-joint un graphique montrant les transactions.

Les journaux du serveur indiquent que les transactions d'ouverture et de clôture proviennent du même EA.

À l'époque, j'ai blâmé l'EA, pensant que le problème ne se produisait qu'avec cet EA.

*** D'après le champ Commentaires du journal des transactions du serveur, je peux dire que le même EA (Callibre dans cet exemple) a ouvert les transactions, puis les a fermées immédiatement.

Le problème a disparu pendant 4 mois et j'ai supposé que c'était cet EA.

Ces deux dernières semaines, le problème est réapparu, sur 4 EA différents qui fonctionnaient bien depuis plusieurs mois, et sur 2 courtiers différents.

Ce week-end, je vais désinstaller toutes les copies de MT4 et les réinstaller à partir de zéro. Je vais également nettoyer le dossier Experts et m'assurer que j'exécute la dernière copie de tout.

Toute autre suggestion sera appréciée.
 
 
peterc005:
D'après le champ Commentaires du journal des transactions du serveur, je peux dire que le même EA (Callibre dans cet exemple) a ouvert les transactions, puis les a fermées immédiatement.

Peter : Comme je l'ai déjà expliqué, le champ commentaires indique qui a ouvert la transaction, mais pas qui l'a fermée. Cela peut être trompeur et contre-intuitif et c'est la raison pour laquelle vous cherchez au mauvais endroit. Le champ de commentaires est défini avec le 8e paramètre de la fonction OrderSend(). C'est à ce moment que la commande est ouverte. Après ce moment, le champ de commentaire est fixé et ne peut plus être modifié. La fonction OrderClose() ne permet pas de spécifier des informations textuelles. Peu importe comment ou par qui l'ordre est fermé, il conservera son commentaire ou sera précédé de [sl] ou [tp] ou de quelques autres chaînes de caractères pour indiquer un stoploss ou un takeprofit ou une fermeture partielle ou un appel de marge, etc.

Un ordre qui est fermé par OrderClose() conservera son commentaire original. Le seul moyen de savoir qui a appelé OrderClose() est de le rechercher dans les journaux d'experts de tous les terminaux qui fonctionnaient à ce moment-là.

Veuillez joindre les 4 journaux d'experts des 4 terminaux qui se trouvent dans le dossier experts/logs/ sur chaque machine où un terminal est en cours d'exécution (il s'agit du journal de l'onglet "experts" de chacun de ces terminaux) pour savoir qui a fermé les transactions. Ce n'est pas le calibre EA.

 

Bonjour 7bit, je vais télécharger les logs sous peu.

Une chose que j'ai remarqué dans les journaux pour les jours incriminés était beaucoup de ces erreurs :

00:11:16 Memory handler : ne peut allouer 160308896 bytes de mémoire

00:11:16 HistoryBase : pas assez de mémoire pour 'EURGBP1' dans AddTick()

Une recherche sur Google montre que ce problème est causé par un trop grand nombre de barres dans un graphique. J'avais réglé le paramètre Max Bars à un niveau élevé pour pouvoir télécharger plus d'historique, mais j'ai depuis réduit ce paramètre.

Je me demande si ces erreurs n'ont pas perturbé les signaux des indicateurs, causant des problèmes pour les EAs ?

Pour l'instant, c'est ma théorie préférée ! !!

 
peterc005:

00:11:16 Memory handler : ne peut pas allouer 160308896 bytes de mémoire

00:11:16 HistoryBase : pas assez de mémoire pour 'EURGBP1' dans AddTick()


Je ne pense pas que cela soit pertinent. Et cela ne dit pas non plus qui a réellement fait l'appel à OrderClose().
 
7bit:
Je ne crois pas que ce soit pertinent. Et cela ne dit pas non plus qui a réellement fait l'appel à OrderClose().

Je soupçonne toujours qu'un manque de ressources mémoire a perturbé un indicateur, provoquant l'ouverture et la fermeture des transactions. Si c'est le cas, il sera très difficile de le prouver.
 

Vous trouverez ci-dessous des extraits des deux dossiers de journaux qui illustrent ce qui se passe.

Cet EA est FAP Turbo LT. que j'utilise depuis longtemps et qui s'est toujours bien comporté.

Le dossier Logs montre ce que fait MT4, c'est-à-dire ouvrir puis fermer la transaction, dans ce cas la transaction n° 2662451.

Ce qui est étrange, c'est que dans le fichier journal des experts, la transaction est ouverte, puis modifiée pour définir le SL + TP, mais il n'y a aucun enregistrement indiquant qu'elle a été fermée.

J'ai examiné d'autres enregistrements dans le journal des experts lorsque FAP Turbo fonctionne correctement, et cet EA génère généralement un enregistrement de clôture, mais pas dans ce cas.

J'ai regardé tous les fichiers journaux que j'ai pu trouver pour d'autres instances de MT4, mais il n'y a aucune autre référence à cette opération.

Dossier MT4\Logs :

17:28:49 '103028' : l'ordre a été ouvert : #2662451 acheter 0.20 EURUSDFXF à 1.2909 sl : 0.0000 tp : 0.0000

17:28:49 '103028' : modification de l'ordre #2662451 buy 0.20 EURUSDFXF at 1.2909 sl : 0.0000 tp : 0.0000 -> sl : 1.2407 tp : 1.2929

17:29:02 '103028' : clôture de l'ordre #2662451 buy 0.20 EURUSDFXF at 1.2909 sl : 1.2407 tp : 1.2929 at price 1.2906

17:29:02 '103028' : la demande a été acceptée par le serveur.


MT4\Experts\Logs dossier :

17:28:48 FapTurbo50 EURUSDFXF,M5 : open #2662451 buy 0.20 EURUSDFXF at 1.2909 ok

17:28:49 FapTurbo50 EURUSDFXF,M5 : modify #2662451 buy 0.20 EURUSDFXF at 1.2909 sl : 1.2407 tp : 1.2929 ok