- Styles d'Indicateurs dans les Exemples
- Lien entre les Propriétés d'un Indicateur et les Fonctions
- SetIndexBuffer
- IndicatorSetDouble
- IndicatorSetInteger
- IndicatorSetString
- PlotIndexSetDouble
- PlotIndexSetInteger
- PlotIndexSetString
- PlotIndexGetInteger
Les indicateurs d'utilisateur
Le groupe des fonctions utilisées lors de la présentation des indicateurs d'utilisateur. On ne peut pas utiliser ces fonctions pour écrire les conseillers et les scripts.
Fonction |
Action |
---|---|
Attache le tampon d'indicateur indiquée avec le tableau unidimentionnel dynamique du type double |
|
Spécifie la valeur de la propriété d'indicateur, ayant le type double |
|
Spécifie la valeur de la propriété d'indicateur, ayant le type int |
|
Spécifie la valeur de la propriété d'indicateur, ayant le type string |
|
Spécifie la valeur de la propriété de la ligne d'indicateur, ayant le type double |
|
Spécifie la valeur de la propriété de la ligne d'indicateur, ayant le type int |
|
Spécifie la valeur de la propriété de la ligne d'indicateur, ayant le type string |
|
Rend la valeur de la propriété de la ligne d'indicateur, ayant le type entier |
Propriétés des indicateurs peuvent être installées à l'aide des directives de la compilation, et à l'aide des fonctions. Pour mieux comprendre il est recommandé d'étudierles styles des indicateurs dans les exemples.
Il est nécessaire de placer tous les comptes nécessaires des indicateurs d'utilisateur dans la fonction prédéterminée OnCalculate(). Si on utilise la forme courte de l'appel de la fonction OnCalculate() de l'aspect suivant
int OnCalculate (const int rates_total, const int prev_calculated, const int begin, const double& price[]) |
la variable rates_total contient la valeur du nombre total d'éléments du tableau price[], transmis à titre du paramètre d'entrée pour le calcul des valeurs d'indicateur.
Le paramètre prev_calculated c'est le résultat de l'exécution de la fonction OnCalculate() sur l'appel précédent et permet d'organiser l'algorithme économe du calcul des valeurs d'indicateur. Par exemple, si la valeur courante rates_total=1000, et prev_calculated=999, probablement, il nous suffit de faire les calculs seulement pour une valeur de chaque tampon d'indicateur.
Si l'information sur la grandeur du tableau d'entrée price était inaccessible, cela a amené à la nécessité de faire les calculs pour les 1000 valeurs de chaque tampon d'indicateur. Au premier appel de la fonction OnCalculate() la valeur prev_calculated=0. Si le tableau price[] a changé d'une façon ou d'une autre,dans ce cas prev_calculated est aussi égal au 0.
Le paramètre begin montre le nombre de valeurs initiales du tableau price, qui ne contient pas de données pour le calcul. Par exemple, si à titre du du tableau d'entrée on utilisait les valeurs de l'indicateur Accelerator Oscillator (pour lesquelles les premiers 37 valeurs ne sont pas calculées), begin=37. Comme l'exemple nous examinerons l'indicateur simple:
#property indicator_chart_window
|
Traînez-le de la fenêtre "Navigateur" à la fenêtre de l'indicateur Accelerator Oscillator et indiquons que les calculs seront produits sur les valeurs de l'indicateur précédent:
A la suite du premier appel de la fonction OnCalculate() la valeur prev_calculated sera égal au zéro, mais aux appels ultérieurs il sera égal à la valeur rates_total (jusqu'à ce que le nombre de barres sur le graphique de prix n'augmentera pas).
La valeur du paramètre begin sera en exactitude égal au nombre de barres initialles, pour lesauelles les valeurs de l'indicateur Accelerator ne sont pas calculées conformément à la logique de cet indicateur. Si nous regardons le code primaire de l'indicateur d'utilisateur Accelerator.mq5, nous verrons dans la fonction OnInit() les telles lignes:
//--- sets first bar from what index will be drawn
|
Notamment par la fonction PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, empty_first_values)nous spécifions le nombre de premières valeurs irrelevantes au tableau nul d'indicateur de l'indicateur d'utilisateur, lesquelles il ne faut pas prendre en attention pour les calculs (empty_first_values). Ainsi, nous avons des mécanismes pour:
- définissez le nombre de valeurs de l'indicateur, qui ne devraient pas être utilisé pour les calculs dans un autre indicateur d'utilisateur;
- recevoir l'information sur le nombre de premières valeurs, qu'il est nécessaire d'ignorer à l'appel de l'autre indicateur d'utilisateur, sans entrer dans la logique de ses calculs.