Problème de globaux de terminal

 

Hé, les amis

J'ai un problème qui est sur le point de me faire dire adieu à la programmation MT. Le problème est d'essayer de définir les globaux du terminal. Ce que je fais est quelque chose comme ceci :

BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

L'ensemble me donne une erreur 4051. Le premier paramètre est une chaîne de caractères, le second un double, comme il se doit. Je ne comprends pas pourquoi il continue à prétendre qu'un type de paramètre n'est pas valide. Les deux paramètres sont du type correct. Je ne comprends pas pourquoi il fait sauter un fusible alors que les paramètres sont corrects. Je suis un développeur de logiciels personnalisés et j'avais l'intention d'ajouter des applications MT à mes offres. Si la plateforme n'est pas fiable, je n'y toucherai pas. Quelque chose de louche ne fera que me donner une mauvaise image et saboter mon activité. Si quelqu'un a des idées à offrir, je vous en serais très reconnaissant.

Merci beaucoup,

Prof.

 
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Supprimez la déclaration du double. GV est déjà double, donc pas besoin de le déclarer à nouveau.



BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";

Ce code est également problématique. Quelqu'un d'autre vous le signalera, s'il a le temps.

 
ProfessorMetal:

Hé, les amis

J'ai un problème qui est sur le point de me faire dire adieu à la programmation MT. Le problème est d'essayer de définir les globaux du terminal. Ce que je fais est quelque chose comme ceci :

L'ensemble me donne une erreur 4051. Le premier paramètre est une chaîne de caractères, le second un double, comme il se doit. Je ne comprends pas pourquoi il continue à prétendre qu'un type de paramètre n'est pas valide. Les deux paramètres sont du type correct. Je ne comprends pas pourquoi il fait sauter un fusible alors que les paramètres sont corrects. Je suis un développeur de logiciels personnalisés et j'avais l'intention d'ajouter des applications MT à mes offres. Si la plateforme n'est pas fiable, je n'y toucherai pas. Quelque chose de louche ne fera que me donner une mauvaise image et saboter mon activité. Si quelqu'un a des idées à proposer, je l'en remercie.

Merci beaucoup,

Prof.

Je n'ai pas de problème avec ce code :

string BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);     
Quelle version utilisez-vous ? Comment reproduire votre problème ?
 
Je pense que c'est une construction plus ancienne.
 

Le double casting n'était pas là à l'origine. Je l'ai ajouté à cause de l'erreur. Le deuxième paramètre est censé être un double. J'ai une formation C++/C# et je m'attendais à ce que le simple fait d'entrer l'argument sous la forme 1.0 soit suffisant. J'ai ajouté le cast parce que l'appel a échoué et je n'étais pas sûr qu'il s'agisse d'une idiosyncrasie de MQL4. J'ai déjà vu que MQL4 ne joue pas toujours selon les règles attendues. En ce qui concerne l'affectation des chaînes, j'ai un autre indicateur que j'ai écrit qui suit le même format et qui fonctionne parfaitement. Je n'y vois aucun problème. Symbol() renvoie une chaîne, la concaténation se fait avec une chaîne, ce qui est parfaitement acceptable, et la variable à laquelle l'expression est affectée est également une chaîne. La seule chose que je vois qui pourrait poser problème est la concaténation du symbole de paire avec une chaîne de caractères identique au nom de la GV. Cela ne devrait pas poser de problème, car la chaîne "terminée" n'est pas la même que le nom du GV. C'est peut-être là le problème. Si c'est le cas, pourquoi ne pas le dire ?

Quoi qu'il en soit, merci pour votre réponse.

Prof.

 

En fait, MetaQuotes a dit que vous ne pouvez pas vous attendre à un style et des règles de codage C++/C# pour MQL4/5.


Au fait, vous n'avez pas répondu à la question du modérateur.

 

Intéressant, les gars. J'utilise la version 646. Je ne pense pas que ce soit le problème. Euh - Je pense que je viens de comprendre. C'est moi qui suis fatigué et stupide. Les noms des GV sont définis dans une méthode que je voulais appeler depuis OnStart() et que je n'ai pas appelée. DUH ! Giflez l'idiot américain et dites-lui d'aller se coucher et de dormir un peu avant d'essayer de coder davantage. Je suis debout depuis environ 36 heures. Vous m'avez certainement aidé en m'inspirant à prendre du recul et à jeter un autre regard sur ce que je faisais. Merci beaucoup et bonne nuit, bon jour - quel que soit le jour où vous vous trouvez :-)

Prof.

 
J'ai répondu, deysmacro. Tu n'as pas laissé le temps à ma réponse de se manifester. Comme je l'ai dit, ce n'est pas un problème. Le problème était une erreur de débutant de ma part due à la fatigue. BTW, je sais que toutes les choses dans MQL4/5 ne fonctionnent pas de la même manière que dans C++/C#. Je me souviens cependant avoir vu une déclaration selon laquelle une partie de l'intention des changements apportés à MQL4/5 est de le rendre plus proche de C++. La documentation pourrait être un peu mieux organisée et plus complète. Pour être juste, on peut dire la même chose de Microsoft.
 
C'est assez simple en fait. S'ils vous enseignent ou mettent une documentation complète, à un moment donné, ... ... ...
 

Pour être juste envers MetaQuotes, ce qu'ils font n'est pas trivial. Je soupçonne que l'apprentissage par soi-même sera toujours la norme. Pour être honnête, c'est la norme pour un développeur professionnel. Cela fait partie du territoire. La documentation et l'interaction avec d'autres développeurs sont généralement les seuls "enseignements" que vous recevrez. C'est la vie. :-)

Je suis toujours en train d'essayer de comprendre comment faire fonctionner le nouveau débogage pour MQL4. J'ai suivi ce que je pensais que la documentation me disait de faire. Lorsque j'ai essayé de lancer le débogueur, il a fait apparaître une fenêtre H1 et la boîte de dialogue des propriétés de l'indicateur que j'essayais de déboguer. Lorsque j'ai quitté la boîte de dialogue en cliquant sur OK, le débogueur s'est arrêté et la fenêtre a disparu. Mais bon. C'est un sujet pour un autre fil, je suppose.

 
ProfessorMetal:

Pour être juste envers MetaQuotes, ce qu'ils font n'est pas trivial. Je soupçonne que l'apprentissage par soi-même sera toujours la norme. Pour être honnête, c'est la norme pour un développeur professionnel. Cela fait partie du territoire. La documentation et l'interaction avec d'autres développeurs sont généralement les seuls "enseignements" que vous recevrez. C'est la vie. :-)

Je suis toujours en train d'essayer de comprendre comment faire fonctionner le nouveau débogage pour MQL4. J'ai suivi ce que je pensais que la documentation me disait de faire. Lorsque j'ai essayé de lancer le débogueur, il a fait apparaître une fenêtre H1 et la boîte de dialogue des propriétés de l'indicateur que j'essayais de déboguer. Lorsque j'ai quitté la boîte de dialogue en cliquant sur OK, le débogueur s'est arrêté et la fenêtre a disparu. Mais bon. C'est un sujet pour un autre fil, je suppose.


C'était un bug de longue durée, qui aurait pu être évité si vous aviez sélectionné un autre volet de la boîte de dialogue de saisie que celui des entrées. Ensuite, l'exécution suivante réussissait. Avec le 646, il semble être corrigé. Malheureusement, il n'y a pas beaucoup d'informations de ce type sur ce site. En général, la plupart des problèmes se terminent par "report to service desk" sans aucune trace supplémentaire.

Raison: