Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 927

 
Artyom Trishkin:

Dossier de stockage : Fichier --> Ouvrir le dossier de données --> MQL4\Experts\Here.ex4

Si c'est le cas, mais que l'EA n'est pas visible dans le navigateur, alors ... félicitations - vous avez épuisé tous les programmes possibles dans le navigateur. Vous devez supprimer quelque chose. Malheureusement, MetaTrader4 a une limite sur le nombre de programmes que le Navigateur peut voir. J'ai été confronté à ce problème lors de la création d'un grand nombre d'indicateurs. Afin de ne pas en effacer beaucoup, j'ai simplement copié le code dans un fichier de test et je l'ai compilé et exécuté - c'est ainsi que j'ai toujours testé les indicateurs dont j'avais besoin dans un seul fichier - j'ai effacé le contenu du fichier, j'y ai mis un nouveau code, j'ai compilé et testé - terminé. Puis le suivant - efface le contenu du fichier, y insère un nouveau code ..., et ainsi de suite en cercle ....

Merci. Je vais regarder... Je vous écrirai ici... Il n'y a pas beaucoup de logiciels...
 
Artyom Trishkin:

Dossier de fichiers : File --> Open Data Folder --> MQL4\Experts\Here.ex4

Si tout est identique, mais que l'EA n'est pas visible dans le navigateur, alors ... Félicitations - vous avez épuisé tous les programmes possibles dans le navigateur. Vous devez supprimer quelque chose. Malheureusement, MetaTrader4 a une limite au nombre de programmes que le Navigateur peut voir. J'ai été confronté à ce problème lors de la création d'un grand nombre d'indicateurs. Pour ne pas en effacer beaucoup, j'ai simplement copié le code dans un fichier de test et je l'ai compilé et exécuté - c'est ainsi que j'ai toujours testé les indicateurs dont j'avais besoin dans un seul fichier - j'ai effacé le contenu du fichier, j'y ai mis un nouveau code, j'ai compilé et testé - terminé. Puis le suivant - efface le contenu du fichier, y insère un nouveau code ..., et ainsi de suite en cercle ....

copié dans le répertoire de données - exps, indicateurs, scripts - pas assez. Dans le NAVIGATOR ...juillet - non.

Dans le dossier, d'où je démarre le terminal, il est également présent. Pas dans NAVIGATOR.




ARTEM - MERCI. J'AI REDÉMARRÉ LE TERMINAL - IL EST LÀ.



 

Je veux créer un tableau et mettre des valeurs dans le tableau créé, mais je veux faire passer les valeurs par des variables de fonction, etc. Exemple.

int q=8,w=9 ;

int mas[2]={q,w}. Ce que nous devrions faire est mas[0]=q,mas[1]=w. Existe-t-il un moyen de substituer des variables qui stockent déjà les calculs nécessaires et de les placer dans un tableau ? Est-il possible de le faire avec des macros ?

 
Seric29:

Je veux créer un tableau et mettre des valeurs dans le tableau créé, mais je veux faire passer les valeurs par des variables de fonction, etc. Exemple.

int q=8,w=9 ;

int mas[2]={q,w}. Ce que nous devrions faire est mas[0]=q,mas[1]=w. Est-il possible de créer un tableau en substituant des variables qui stockent déjà les calculs nécessaires et de les placer dans le tableau ? Est-il possible de faire cela avec des macros ?

Vous ne pouvez pas. En début de semaine, quelqu'un en a parlé dans le fil de discussion "bugs, erreurs, questions"- le résultat est impossible.

 
Igor Makanu:

Vous ne pouvez pas, au début de la semaine dans le fil "bugs, bugs, questions" quelqu'un en a discuté - le résultat est non.

Je vois. J'ai vu quelqu'un utiliser une macro pour assigner le nombre de colonnes lors de la déclaration d'un tableau, bien que passer des valeurs de colonnes ou de lignes lors de l'initialisation d'un tableau via une variable soit interdit en mql, mais quelqu'un l'a fait via une macro. Voici le sujethttps://www.mql5.com/ru/forum/95351.

#define ODD 5

double Max_D1 [ODD] ;

double Low_D1[ODD] ;

 
Seric29:

Je vois. J'ai vu quelqu'un utiliser une macro pour assigner le nombre de colonnes lors de la déclaration d'un tableau, bien que passer des colonnes ou des lignes lors de l'initialisation d'un tableau via une variable soit interdit dans mql, mais quelqu'un a utilisé une macro pour le faire. Voici le sujet https://www.mql5.com/ru/forum/95351.

#define ODD 5

double Max_D1 [ODD] ;

double Low_D1[ODD] ;

et quel est le but de cette action ? : peut-on initialiser un tableau avec des variables au lieu de constantes ? - la réponse est non.

Votre macro effectuera le travail manuel d'affectation d'une valeur variable à chaque élément du tableau, mais l'objectif n'est pas modifié par ce qui suit

 
Igor Makanu:

et le but de cette action ? comment avez-vous posé la question ? : peut-on initialiser un tableau avec des variables plutôt qu'avec des constantes ? - la réponse est non.

Votre macro effectuera le travail manuel d'affectation d'une valeur variable à chaque élément du tableau, mais l'essence ne changera pas.

J'ai pensé qu'il serait possible de faire quelque chose avec ça.

 
Igor Makanu:

et le but de cette action ? comment avez-vous posé la question ? : peut-on initialiser un tableau avec des variables plutôt qu'avec des constantes ? - la réponse est non.

Votre macro effectuera le travail manuel d'affectation d'une valeur variable à chaque élément du tableau, mais cela ne change rien au problème.

Pouvez-vous créer une fonction qui renvoie une valeur constante pour résoudre ce problème ?

 
Seric29:

Peut-on créer une fonction qui renvoie une valeur constante pour résoudre ce problème ?

Non, tu ne peux pas.

Vous confondez les notions d'initialisation et d'assignation d'une valeur - l'essence qu'elles ont est la même, mais les moments (quand) d'utilisation sont différents. L'initialisation est dans la chaîne où vous décrivez un tableau - là vous l'initialisez avec des constantes et l'assignation, quand vous assignez des valeurs arbitraires à un tableau(éléments du tableau) à n'importe quel endroit après l'avoir décrit.

Je ne sais pas comment expliquer ce que vous demandez et pourquoi j'écris que vous ne pouvez pas...

En utilisant des tableaux, il n'y a pas le problème que vous soulevez, apparemment dès le début de l'écriture du code vous n'avez pas supposé l'utilisation d'un tableau, et maintenant vous devez seulement réécrire le code ou assigner une valeur variable à chaque élément du tableau manuellement.

Parfois, afin de ne pas "multiplier" les variables, je peux utiliser un tableau ; si le tableau a plus de 3-4 éléments, le danger de mélanger le nombre d'éléments du tableau pendant l'écriture du programme est élevé ; j'utilise des valeurs constantes définies avec #define - le code est lisible et vous ne pouvez pas faire d'erreur, quelque chose comme ceci :

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

peut-être que je ne comprends pas l'absence d'ambiguïté de votre question :
Seric29:

Par exemple, je veux créer un tableau et placer immédiatement des valeurs dans le tableau créé, mais les valeurs que je veux faire passer par des variables, des fonctions, etc.

int q=8,w=9 ;

int mas[2]={q,w}. Ce que nous devrions faire est mas[0]=q,mas[1]=w. Est-il possible de créer un tableau en substituant des variables qui stockent déjà les calculs nécessaires, et de le mettre dans un tableau ? Est-il possible de faire cela avec des macros ?

lors de la description d'un tableau ? - doivent être initialisés avec des variables ? - répondu 2 fois ci-dessus

ou assigner plusieurs valeurs de variables à un tableau ? - la réponse est également impossible, mais en raison d'une syntaxe invalide :

vous ne pouvez pas appliquer des variables entre accolades, c'est-à-dire {1,2,3} - cela sera ignoré par le compilateur, mais {a,b,c} - vous ne pouvez pas le faire, car le compilateur s'attendra à une opération arithmétique (logique) ou à l'opérateur = (lvalue, rvalue) ... Vous devez donc étudier la syntaxe du langage, mais il ne s'agit peut-être pas des capacités du langage.

 
Igor Makanu:

Non, tu ne peux pas.

Vous mélangez les concepts d'initialisation et d'affectation des valeurs - l'essence est la même, mais les moments (quand) d'utilisation sont différents ; l'initialisation est dans la chaîne où vous décrivez un tableau - là vous l'initialisez avec des constantes et l'affectation est, après avoir décrit un tableau, vous affectez n'importe quelles valeurs à un tableau (éléments du tableau) à l'endroit que vous voulez.

Je ne sais pas comment expliquer ce que vous demandez et pourquoi j'écris que vous ne pouvez pas...

En utilisant des tableaux, il n'y a pas le problème que vous soulevez, apparemment dès le début de l'écriture du code vous n'avez pas supposé l'utilisation d'un tableau, et maintenant vous devez seulement réécrire le code ou assigner une valeur variable à chaque élément du tableau manuellement.

Parfois, afin de ne pas "multiplier" les variables, je peux utiliser un tableau ; si le tableau a plus de 3-4 éléments, le danger de mélanger le nombre d'éléments du tableau pendant l'écriture du programme est élevé ; j'utilise des valeurs constantes définies avec #define - le code est lisible et vous ne pouvez pas faire d'erreur, quelque chose comme ceci :

Eh bien, oui, il y a une utilisation hybride des éléments déclarés dans le programme. Par exemple, je déclare des paramètres d'entrée et à partir de ces paramètres, j'ai besoin de prendre des variables globales et de les regarder, mais il ya un problème de paramètres d'entrée ne peut pas être un tableau, le 2e exemple, j'écris une fonction et commence le traitement par des boucles, ici est également mieux d'utiliser un tableau, je commence les arguments à un tableau et à nouveau le tableau de variables est impossible et ont à comme vous l'avez écrit ci-dessus une valeur dans chaque cellule, le 3e exemple serait bien d'être en mesure d'utiliser comme arguments de fonction en utilisant un tableau (ici, il est en herbe) Quant à l'utilisation de tableaux au lieu de variables, oui, cela rend les programmes plus compacts et je le fais aussi de cette façon. Vous pouvez écrire dans les variables au moment de l'initialisation en C++, peut-être que vous ne pouvez pas dans la version 12 ci-dessous, et ici ils l'ont rendu moins cher, ce qui a conduit à de telles conséquences. En général, je comprends et je vous remercie pour les réponses.