Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1031

 
artmedia70:
Si la suppression involontaire de l'indicateur doit supprimer les variables globales créées par cet indicateur, la suppression de ces variables globales doit être prescrite dans la fonction OnDeinit() de l'indicateur.
Il faut vérifier qu'il ne s'agit pas d'un changement d'horizon temporel, mais de la suppression de l'indicateur du graphique.
Merci !
 
artmedia70:
Appuyez sur F3 dans le terminal, et supprimez manuellement cette variable. Il est créé une fois et se trouve dans l'environnement - l'EA le lit à partir de là. Ou peut-être n'ai-je pas bien compris ? Vous venez de supprimer la création d'une variable globale du terminal dans le code de l'indicateur lui-même, mais elle était créée par cet indicateur auparavant ?

Artem, aide-moi à comprendre ce qui ne va pas. Ici, https://www.mql5.com/ru/code/10237 est le code de l'Expert Advisor qui notifie (ou plutôt qui est utilisé pour notifier) tous les événements de trading dans le terminal. Ce code a fonctionné correctement. J'ai été absent du site pendant un long moment. Des changements dans mql4 ont eu lieu et maintenant ce code compile avec une erreur, lors de la compilation des lignes d'initialisation du tableau. Si vous trouvez le temps, jetez-y un coup d'œil.

Regards.

ps si quelqu'un d'autre peut voir quel est le problème, je l'apprécierais.

 
AlexeyVik:
Eh bien, je ne sais pas, peut-être en C++, que je n'ai jamais étudié, mais mql n'est qu'un C-like. Et deuxièmement, la dimension du tableau ne peut pas être définie comme une variable, bien que dans votre exemple, MAX_NUM_ORDER puisse ne pas être une variable...
voir ici à propos de l'initialisation des tableaux https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer:

Une ligne et une colonne du tableau sont sélectionnées, respectivement, une valeur particulière peut y être entrée, c'est-à-dire que l'entrée doit être comme pour une variable ordinaire, et pour réinitialiser toutes les valeurs

ArrayInitialize(Arr_Tickets, 0) ;



la référence de l'élément ressemblera à ceci -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Je l'ai ici -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

 
valenok2003:
voir ici à propos de l'initialisation des tableaux https://book.mql4.com/ru/variables/arrays
Oui, je pense que le tableau est déclaré globalement, donc je deviens intelligent...
 
valenok2003:

la référence de l'élément ressemblera à ceci -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Je l'ai écrit -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0} ;

Arr_Tickets[MAX_NUM_ORDER,2] - référence à un élément de tableau

Arr_Tickets[MAX_NUM_ORDER][2] - référence de l'élément du tableau

Le compilateur ne jure pas par la façon dont vous l'écrivez et attend une valeur particulière, pas autre chose. Je l'ai vérifié spécialement.
Et une confirmation de la même chose à partir du lien que vous avez donné à un autre membre du forum : la manière de spécifier les index, lorsque chacun des index est placé entre crochets, est également acceptable.

 
SunnYtheDreamer:

Arr_Tickets[MAX_NUM_ORDER,2] - référence à un élément de tableau

Arr_Tickets[MAX_NUM_ORDER][2] - référence à un élément de tableau

Le compilateur ne jure pas par la façon dont vous l'écrivez et attend une valeur particulière, pas autre chose. Je l'ai vérifié spécialement.
Et une confirmation de la même chose à partir du lien que vous avez donné à un autre membre du forum : la manière de spécifier les index, lorsque chacun des index est placé entre crochets, est également acceptable.

Je vais reformuler ma question - Avant, il compilait et fonctionnait bien. Quelqu'un peut-il expliquer la cause de ce problème ? Les codes qui ne fonctionnaient pas n'étaient pas autorisés à entrer dans la base de données...

D'ailleurs, l'erreur apparaît aux lignes 53 et 54 du code. A la ligne 54, qu'est-ce qui ne va pas ? Et ensuite, comment initier un tableau de chaînes de caractères ?

J'ai cherché dans le manuel, mais je n'ai rien trouvé sur les tableaux de chaînes de caractères, il y a des informations uniquement sur les tableaux numériques. Peut-être que je n'ai pas trop cherché ? Veuillez me fournir le lien.

 
valenok2003:

Artem, aide-moi à comprendre ce qui ne va pas. Ici, https://www.mql5.com/ru/code/10237 est le code de l'Expert Advisor, qui notifie (ou plutôt sert à notifier) tous les événements de trading dans le terminal. Ce code a fonctionné correctement. J'ai été absent du site pendant une longue période. Des changements dans mql4 ont eu lieu et maintenant ce code compile avec une erreur, lors de la compilation des lignes d'initialisation du tableau. Si vous trouvez le temps, jetez-y un coup d'œil.

Regards.

ps si quelqu'un d'autre cherche à savoir quel est le problème, je lui en serais reconnaissant.

En premier lieu, insérez #property strict au début du code et compilez.

C'était comme ça :

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"

le faire :

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"
#property strict

Après cela, vous devez déjà regarder les erreurs qu'il émet.

 
artmedia70:

Tout d'abord, insérez #property strict au début du code et compilez.

était comme ça :

le faire :

Ensuite, vous devez examiner les erreurs qu'il émet.

Inséré, rien n'a changé.

Supposons que je puisse remplacer la ligne Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} ; je peux également la remplacer parArrayInitialize(Arr_Tickets,0);

Que faire avec la chaîne de caractères Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",}; ? Lorsque j'essaie d'initialiser un tableau de chaînes de caractères parArrayInitialize(Arr_Order_Symbol,""), il est dit "my you don't understand...", il n'y a pas d'objet approprié pour être traité par cette fonction...

 
valenok2003:

Inséré, rien n'a changé.

Supposons que je puisse remplacer la ligne Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} ; je peux encore la remplacer parArrayInitialize(Arr_Tickets,0);

Que faire avec la chaîne de caractères Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",}; ? Lorsque j'essaie d'initialiser un tableau de chaînes de caractères parArrayInitialize(Arr_Order_Symbol,""), il est dit "my you don't understand...", il n'y a pas d'objet approprié pour être traité par cette fonction...

Et bien, remettez à zéro ce tableau : ZeroMemory()