samedi

Messages d'erreur MT4 et descriptions

Il y a 2 fichiers auquels vous avez accès dans votre plate-forme MT4 qui portent sur les messages d’erreur. Les 2 fichiers se trouvent ici :

1. C:\Program files\Votre_Répertoire_MT4\Experts\Include\stderror.mqh
2. C:\Program files\ Votre_Répertoire_MT4\Experts\Librairies\stdlib.mq4

Dans un premier temps, vous avez la liste des codes retournés du serveur, suivie des erreurs MQL4. Vous pouvez voir le numéro de l’erreur et la description – voir ci-dessous :

//+------------------------------------------------------------------+
//| return error description
//+------------------------------------------------------------------+

//---- codes returned from trade server
case 0:
case 1: error_string="no error";
case 2: error_string="common error";
case 3: error_string="invalid trade parameters";
case 4: error_string="trade server is busy";
case 5: error_string="old version of the client terminal";
case 6: error_string="no connection with trade server";
case 7: error_string="not enough rights";
case 8: error_string="too frequent requests";
case 9: error_string="malfunctional trade operation (never returned error)";
case 64: error_string="account disabled";
case 65: error_string="invalid account";
case 128: error_string="trade timeout";
case 129: error_string="invalid price";
case 130: error_string="invalid stops";
case 131: error_string="invalid trade volume";
case 132: error_string="market is closed";
case 133: error_string="trade is disabled";
case 134: error_string="not enough money";
case 135: error_string="price changed";
case 136: error_string="off quotes";
case 137: error_string="broker is busy (never returned error)";
case 138: error_string="requote";
case 139: error_string="order is locked";
case 140: error_string="long positions only allowed";
case 141: error_string="too many requests";
case 145: error_string="modification denied because order too close to market";
case 146: error_string="trade context is busy";
case 147: error_string="expirations are denied by broker";
case 148: error_string="amount of open and pending orders has reached the limit";


//---- mql4 errors

case 4000: error_string="no error (never generated code)";
case 4001: error_string="wrong function pointer";
case 4002: error_string="array index is out of range";
case 4003: error_string="no memory for function call stack";
case 4004: error_string="recursive stack overflow";
case 4005: error_string="not enough stack for parameter";
case 4006: error_string="no memory for parameter string";
case 4007: error_string="no memory for temp string";
case 4008: error_string="not initialized string";
case 4009: error_string="not initialized string in array";
case 4010: error_string="no memory for array\' string";
case 4011: error_string="too long string";
case 4012: error_string="remainder from zero divide";
case 4013: error_string="zero divide";
case 4014: error_string="unknown command";
case 4015: error_string="wrong jump (never generated error)";
case 4016: error_string="not initialized array";
case 4017: error_string="dll calls are not allowed";
case 4018: error_string="cannot load library";
case 4019: error_string="cannot call function";
case 4020: error_string="expert function calls are not allowed";
case 4021: error_string="not enough memory for temp string returned from function";
case 4022: error_string="system is busy (never generated error)";
case 4050: error_string="invalid function parameters count";
case 4051: error_string="invalid function parameter value";
case 4052: error_string="string function internal error";
case 4053: error_string="some array error";
case 4054: error_string="incorrect series array using";
case 4055: error_string="custom indicator error";
case 4056: error_string="arrays are incompatible";
case 4057: error_string="global variables processing error";
case 4058: error_string="global variable not found";
case 4059: error_string="function is not allowed in testing mode";
case 4060: error_string="function is not confirmed";
case 4061: error_string="send mail error";
case 4062: error_string="string parameter expected";
case 4063: error_string="integer parameter expected";
case 4064: error_string="double parameter expected";
case 4065: error_string="array as parameter expected";
case 4066: error_string="requested history data in update state";
case 4099: error_string="end of file";
case 4100: error_string="some file error";
case 4101: error_string="wrong file name";
case 4102: error_string="too many opened files";
case 4103: error_string="cannot open file";
case 4104: error_string="incompatible access to a file";
case 4105: error_string="no order selected";
case 4106: error_string="unknown symbol";
case 4107: error_string="invalid price parameter for trade function";
case 4108: error_string="invalid ticket";
case 4109: error_string="trade is not allowed in the expert properties";
case 4110: error_string="longs are not allowed in the expert properties";
case 4111: error_string="shorts are not allowed in the expert properties";
case 4200: error_string="object is already exist";
case 4201: error_string="unknown object property";
case 4202: error_string="object is not exist";
case 4203: error_string="unknown object type";
case 4204: error_string="no object name";
case 4205: error_string="object coordinates error";
case 4206: error_string="no specified subwindow";
default: error_string="unknown error";

Nouvelle version du EA - messages d'erreur

Vous vous souviendrez peut-être que j’ai écrit, il y a un bout de temps de cela, à propos d’un message d’erreur que je reçois de temps à autre dont (1) je ne connais pas la cause et (2) pour lequel je n’ai pas de solution à cause de (1), évidemment. Alors, je vis avec, tout simplement. Cette erreur est “(0) No Error”. Et ce qui arrive c’est qu’après qu’un croisement valide survient et qu’une alerte est envoyée, l’ordre de fermer la trade ouverte s’exécute mais ensuite ce No Error apparaît et aucune nouvelle trade n’est prise. Vous pouvez voir dans l’exemple ci-dessous exactement ce qui apparaît dans l’onglet Experts du bas de l’écran. Cet exemple est survenu lundi dernier avec GBPAUD (vous devez lire de bas en haut) :




Comme vous pouvez le voir, on a d’abord l’alerte “Alert: Moving Average Cross Down” suivie de la fermeture du Buy précédent, ensuite ça nous indique que stdlib s’est chargé correctement (je reviendrai sur ça tout à l’heure) mais ensuite au lieu d’avoir un message normal qui dirait « Open Sell », c’est le message d’erreur qui apparaît “Error Opening Sell order: (0) no error” et aucune trade n’est prise. Laissez-moi vous montrer ce qui est advenu de GBPAUD par la suite :



Vous pouvez voir la fermeture du Buy précédent (triangle rouge) ainsi que le croisement des MM et aussi qu’aucune trade Sell n’a été prise – qui apparaîtrait par une petite flèche rouge. Vous pouvez également voir que cette trade, si elle avait été prise, serait présentement à approx. +700 pips.

Eh bien, le problème est maintenant partiellement réglé ! J’ai finalement trouvé un très bon et très sympatique programmeur, Mladen, pour m’aider avec ce problème. Pour autant que je puisse comprendre ses explications, il s’agit plutôt d’une « fausse » erreur en ce sens que toutes les erreurs sont supposées avoir un chiffre et une description (voir prochaine entrée à ce sujet avec toutes les erreurs listées). Celle dont je parle ici est due à un bug de programmation qui fait que la « bonne » erreur n’est pas affichée, mais qu’elle est en quelque sorte masquée par le (0) error. Ce que le programmeur a fait c’est qu’il a arrangé les choses pour que la prochaine fois qu’une erreur de la sorte soit déclenchée, ce qui sera affiché sera la BONNE erreur avec le bon numéro et la description et je serai donc en mesure de mieux comprendre d’où vient le problème – c’est peut-être à cause d’un paramètre spécifique dans le EA ou c’est peut-être relié au broker ou autre chose, mais au moins je saurai ce que c’est et je pourrai trouver une solution pour arranger le tout, si c’est possible. Il se peut que ce ne soit pas possible – souvenez-vous que parfois on obtient le « Trade Context Busy » pour lequel on ne peut rien faire car s’est fonction de notre broker et on doit l’accepter comme faisant partie de la vie du trading. Mais ce sera peut-être quelque chose qui peut s’arranger. Alors je suis totalement reconnaissante envers Mladen pour son aide et la semaine prochaine je garderai un œil attentif pour voir ce qui se cachait derrière cette erreur (0). J’ai téléchargé la nouvelle version du EA sur mon site de transfert, alors vous pouvez aller la chercher et remplacer le EA si vous aviez aussi ce problème (certains ont ce problème, certains ne l’ont pas du tout, c’est vraiment un mystère ce truc).

Alors si vous prenez la nouvelle version, faites d’abord un back-up de l’ancienne version et sauvegardez-là à quelque part avec un nouveau nom de fichier, juste au cas où. Le nouveau EA a EXACTEMENT le même nom de fichier que l’ancien pour assurer qu’aucun problème ne survienne suite au changement. Copiez simplement le nouveau EA dans le répertoire Experts et le tour sera joué (fermez puis relancez vos MT4 par la suite). Si vous aviez des trades ouvertes, j’aurais cru que vous devriez les gérer manuellement, évidemment, car le nouveau EA ne peut pas se « souvenir » de trades qu’il n’a pas prises. Mais je viens moi-même de faire un test, et croyez-le ou non, il s’en souvient ! Complètement fascinant! Mais je vais quand-même observer de près à l’ouverture des marchés et viendrai confirmer ici si tout se passe bien (ou non) alors si vous n’êtes pas certain, attendez un peu avant d’aller chercher la nouvelle version.

Mon prochain sujet sera à propos de tous les messages d’erreur possibles avec MT4 et ce qu’ils veulent dire.