- Variables Locales
- Paramètres Formels
- Variables Statiques
- Variables Globales
- Variables d'Entrée
- Variables Externes
- Initialisation des Variables
- Portée de la Visibilité et Cycle de Vie des Variables
- Créer et Supprimer des Objets
Variables d'Entrées
La classe de stockage input définit une variable externe (variable d'entrée). Le modificateur input est indiqué avant le type de données. Une variable avec le modificateur input ne peut pas être changée dans les programmes mql5, ce type de variables n'est accessible qu'en lecture seule. Les valeurs des variables d'entrée ne peut être changée que par l'utilisateur et depuis la fenêtre des propriétés du programme. Les variables externes sont toujours réinitialisées immédiatement avant l'appel à OnInit().
La longueur maximale des noms de variables d'entrée est de 63 caractères. Pour le paramètre d'entrée de type chaîne, la longueur de valeur maximum (longueur de chaîne) peut être de 191 à 253 caractères (voir la Note). La longueur minimale est de 0 caractère (la valeur n'est pas définie).
Exemple :
//--- input parameters
|
Les variables d'entrée déterminent les paramètres d'entrée d'un programme. Elles sont disponibles dans la fenêtre Propriétés d'un programme.
Il existe une autre façon de définir à quoi ressembleront les paramètres d'entrée dans l'onglet Inputs. Pour cela, placez un commentaire après la description d'un paramètre d'entrée sur la même ligne. De cette façon, vous pouvez donner des noms plus compréhensibles pour les utilisateurs aux variables d'entrée.
Exemple :
//--- input parameters
|
Note : Les tableaux et variables de types complexes ne peut pas servir de variables d'entrée.
Note : La longueur de la chaîne du commentaire des variables d'entrée ne peut pas être supérieure à 63 caractères.
Note : Pour les variables d'entrée de type chaîne, la limitation de la longueur de la valeur (longueur de la chaîne) est fixée par les conditions suivantes :
- la valeur du paramètre est représentée par la chaîne "nom_paramètre = valeur_paramètre" ('=' est pris en compte),
- longueur de représentation maximale de 255 caractères (total_length_max= 255 ou 254 caractères hors '='),
- longueur maximale du paramètre de chaîne parameter_name_length = 63 caractères.
Ainsi, la taille de chaîne maximale pour un paramètre de chaîne est calculée à l'aide de l'équation :
parameter_value_length=total_length_max-parameter_name_length = 254 - parameter_name_length |
Cela fournit la taille de chaîne maximale de 191 (paramètre_nom_longueur = 63) à 253 caractères (paramètre_nom_longueur = 1).
Passage des Paramètres Lors de l'Appel à des Indicateurs depuis les Programmes MQL5 #
Les Indicateurs Personnalisés sont appelés avec la fonction iCustom(). Après le nom de l'indicateur, les paramètres doivent être en accord strict avec la déclaration des variables d'entrée de cet indicateur. Si le nombre de paramètres indiqués est inférieur au nombre de variables déclarées dans l'indicateur appelé, les paramètres manquants sont remplis avec les valeurs spécifiées pendant la déclaration des variables.
Si l'indicateur utilise la fonction OnCalculate du premier type (c'est à dire que l'indicateur est calculé en utilisant le même tableau de données), alors l'une des valeurs de ENUM_APPLIED_PRICE ou le handle d'un autre indicateur doit être utilisé comme dernier paramètre lors de l'appel à cet indicateur. Tous les paramètres correspondants aux variables d'entrée doivent être indiqués clairement.
Enumérations comme Paramètres d'Entrée
Les variables définies par l'utilisateur ainsi que les énumérations intégrées en MQL5 peuvent être utilisées comme variables d'entrée (paramètres d'entrée pour les programmes mql5). Par exemple, nous pouvons créer l'énumération dayOfWeek, décrivant les jours de la semaine et utiliser la variable d'entrée pour spécifier un jour particulier de la semaine, non pas comme un chiffre, mais d'une façon plus courante.
Exemple :
#property script_show_inputs
|
Pour permettre à un utilisateur de sélectionner la valeur désirée dans la fenêtre des propriétés pendant le démarrage du script, nous utilisons la commande du préprocesseur #property script_show_inputs. Nous lançons le script et pouvons choisir l'une des valeurs de l'énumération dayOfWeek dans la liste. Nous lançons le script EnumInInput et allons dans l'onglet Inputs. Par défaut, la valeur de swapday (jour de facturation triple du swap) est mercredi (W = 3), mais il est possible de spécifier n'importe quelle valeur pour changer le fonctionnement du programme.
Le nombre de valeurs possibles d'une énumération est limité. Pour sélectionner une valeur d'entrée, une liste déroulante est utilisée. Les noms mnémoniques pour les membres de l'énumération sont utilisés pour les valeurs affichées dans la liste. Si un commentaire est associé avec un nom mnémonique, comme affiché dans l'exemple, le contenu du commentaire est utilisé au lieu du nom mnémonique.
Chaque valeur de l'énumération dayOfWeek a une valeur de 0 à 6, mais dans la liste des paramètres, les commentaires spécifiés pour chaque valeur seront affichés. Ceci fournit une flexibilité supplémentaire pour écrire des programmes avec des descriptions claires des paramètres d'entrée.
Variables avec le Modificateur Input #
Les variables avec le modificateur input permettent non seulement de définir des paramètres externes lors du lancement des programmes, mais sont également nécessaires pour optimiser les stratégies de trading dans le Strategy Tester. Chaque variable d'entrée peut être utilisée dans l'optimisation, sauf celles de type chaîne de caractères.
Il est parfois nécessaire d'exclure certains paramètres externes du programme de la zone de toutes les passes du tester. Le modificateur de mémoire sinput a été introduit pour ce type de cas. sinput signifie déclaration de variable externe statique (sinput = static input). Cela signifie que la déclaration suivant dans le code d'un Expert Advisor
sinput int layers=6; // Nombre de couches |
sera équivalent à la déclaration complète
static input int layers=6; // Nombre de couches |
La variable déclarée avec le modificateur sinput est un paramètre d'entrée du programme MQL5. La valeur de ce paramètre peut être changée au lancement du programme. Cependant, cette variable n'est pas utilisée dans l'optimisation des paramètres d'entrée. En d'autres termes, ses valeurs ne sont pas énumérées lors de la recherche du meilleur ensemble de paramètres remplissant une condition spécifiée.
L'Expert Advisor montré ci-dessus a 5 paramètres externes. "Nombre de couches" est déclaré comme étant sinput et est égal à 6. Ce paramètre ne peut pas être changé pendant une optimisation de la stratégie de trading. Nous pouvons spécifier une valeur désirée à utiliser par la suite. Les champs Démarrer, Pas et Stop ne sont pas disponible pour ce type de variable.
Les utilisateurs ne seront donc pas capables d'optimiser ce paramètre une fois que nous aurons spécifié le modificateur sinput pour la variable. En d'autres termes, les utilisateurs du terminal ne pourront pas lui définir des valeurs de départ et de fin dans le Strategy Tester pour une énumération automatique dans l'intervalle spécifié pendant l'optimisation.
Cependant, il existe une exception à cette règle : les variables sinput peuvent varier dans les tâches d'optimisation en utilisant la fonction ParameterSetRange(). Cette fonction a été introduite spécifiquement pour le contrôle par le programme des valeurs disponibles pour n'importe quelle variable input incluant celles déclarées comme static input (sinput). La fonction ParameterGetRange() permet de recevoir les valeurs des variables d'entrée lorsque l'optimisation est lancée (dans le gestionnaire OnTesterInit()) et de réinitialiser une valeur de changement de pas et un intervalle dans lequel seront les valeurs du paramètre optimisé.
De cette façon, combiner le modificateur sinput et deux fonctions utilisant les paramètres d'entrée, permet de créer des règles flexibles pour définir les intervalles d'optimisation des paramètres d'entrée qui dépendent des valeurs d'autres paramètres d'entrée.
Arranger les paramètres d'entrée #
Pour travailler plus efficacement avec les programmes MQL5, les paramètres d'entrée peuvent être regroupés en blocs grâce au mot-clé group. Celui-ci permet une séparation visuel de certains paramètres suivant leur logique.
input group "Nom du groupe"
|
Après une déclaration comme celle-ci, tous les paramètres d'entrée sont liés visuellement dans un même groupe, simplifiant la configuration des paramètres pour les utilisateurs MQL5 lorsqu'ils sont lancés sur un graphique ou dans le Strategy Tester. La spécification de chaque groupe est valide jusqu'à la prochaine déclaration de groupe :
input group "Nom du groupe #1"
|
Un exemple d'EA présentant les blocs d'entrées séparés suivant leur objectif :
input group "Signal"
|
Lors du lancement d'un tel EA dans le Strategy Tester, vous pouvez double-cliquer sur le nom du groupe pour réduire/développer le bloc d'entrées, puis cocher la case du groupe pour sélectionner tous ses paramètres à optimiser.
Voir aussi