Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 406
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Comment écrire une fonction avec un nombre variable de paramètres ?
Vous pouvez définir certains des paramètres d'une fonction à une valeur initiale (ces paramètres doivent être les derniers). Lorsque la fonction est appelée, ces paramètres peuvent être définis ou non, selon le besoin. Si les paramètres ne sont pas définis explicitement, ils recevront des valeurs initiales.
La deuxième option est la surcharge. Il suffit d'écrire une fonction portant le même nom, mais avec des types/un nombre de paramètres différents.
Comme quoi ?
Je dois passer plusieurs paramètres à une fonction, mais dans différentes situations, je dois passer un nombre différent, connu à l'avance.
En C, par exemple, ceci est implémenté comme suitet ensuite traiter ces paramètres dans la fonction
int func(int a, int b, ...)
Existe-t-il un moyen de mettre un bouton "Annuler" sur la barre d'outils de MetaEditor ?
(celui qui met en œuvre Ctrl+Z)
Je dois passer plusieurs paramètres à une fonction, mais dans différentes situations, je dois passer un nombre différent, connu à l'avance.
En C, par exemple, ceci est implémenté comme suitet ensuite traiter ces paramètres dans la fonction
int func(int a, int b, ...)
Passer le tableau et le nombre de paramètres à prendre dans le tableau
Passez dans un tableau et le nombre de paramètres à prendre dans le tableau.
Les chiffres que je dois passer ne sont donc pas dans l'ordre, c'est-à-dire qu'un universel ne peut être généré.
Donnez-moi au moins un exemple non abstrait.
Par exemple :
Selon la condition (PAS si, mais juste en gros, j'écris ces chiffres moi-même)
a = func(digit, 10, 18, 42) ; ou a = func(digit, 11, 18, 42, 15, 13) ; ou a = func(digit, 5) ;
double func(int num, ? ???)
{
retourner("somme de ces paramètres"/num) ;
}
comme ceci :
En fonction de la condition(PAS si, mais juste en gros, j'écris ces chiffres moi-même)
a = func(digit, 10, 18, 42) ; ou a = func(digit, 11, 18, 42, 15, 13) ; ou a = func(digit, 5) ;
double func(int num, ? ???)
{
retourner("somme de ces paramètres"/num) ;
}
Eh bien, ce qui m'est venu à l'esprit en premier lieu, et comme déjà suggéré ci-dessus - passer dans la fonction tableau double, et dans la fonction calculer les valeurs nécessaires à partir des valeurs du tableau passé - il est possible de connaître la quantité de nombres(taille du tableau), et par conséquent de calculer leurs relations. Seule la formule restera la même, quelle que soit la taille du tableau. Si vous souhaitez également modifier la formule, le tableau ne suffira pas. Vous devrez ajouter un paramètre supplémentaire, qui indiquera la formule à utiliser pour le calcul. Par exemple, vous pouvez passer une énumération indiquant le type de formule (ENUM_TYPE_CALCULATED) et, en fonction de la valeur de cette énumération, par exemple CALCULATE_SUMM, calculer simplement (dans cet exemple) la somme de toutes les valeurs du tableau passé.
Donc, les nombres que je dois faire passer sont dans le désordre, c'est-à-dire qu'il est impossible de former un universel.
Voici une réponse complète, mais pas de réponse...
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Toutes les questions des débutants sur MQL4, aide et discussion sur les algorithmes et les codes
Alexey Kozitsyn, 2018.01.05 11:46
Vous pouvez définir certains paramètres de la fonction à une valeur initiale (ces paramètres doivent être les derniers). Lorsque vous appelez la fonction, vous pourrez définir ces paramètres ou non, selon le besoin. Si les paramètres ne sont pas définis explicitement - ils obtiendront les valeurs initiales.
La deuxième option est la surcharge. Il suffit d'écrire une fonction portant le même nom, mais avec des types/un nombre de paramètres différents.
Voici une réponse complète, mais pas de réponse à celle-ci...
Si l'ensemble et le nombre de nombres ne sont pas connus à l'avance, il n'y a pas de fonction pour chaque nouvel ensemble.