Discussion de l'article "Comment faire appel aux indicateurs dans MQL5"

 

Un nouvel article Comment faire appel aux indicateurs dans MQL5 a été publié :

Avec la nouvelle version du langage de programmation MQL disponible, non seulement l'approche du traitement des indicateurs a changé, mais il existe également de nouvelles façons de créer des indicateurs. De plus, vous disposez d'une flexibilité supplémentaire en travaillant avec les tampons d'indicateurs - vous pouvez désormais spécifier la direction d'indexation souhaitée et obtenir exactement autant de valeurs d'indicateurs que vous le souhaitez. Cet article explique les méthodes de base pour faire appel aux indicateurs et récupérer des données à partir des tampons de l'indicateur.

Dans MQL5, il existe plusieurs manières de faire appel aux indicateurs, et elles sont principalement accomplies à l'aide des fonctions IndicatorCreate() et iCustom(). De plus, ces fonctions ne renvoient que le descripteur d'indicateur, et d'autres travaux sur les indicateurs sont effectués par son intermédiaire. Alors, qu'est-ce qu'un descripteur ? Comment gérer les fonctions IndicatorCreate() et iCustom() ? Et comment votre expert obtiendra-t-il les données des indicateurs ? Toutes ces questions sont abordées dans cet article.

Création d'un fichier source

Pour commencer avec notre expert, créons son fichier source. Nous ferons cela à peu près comme dans MetaEditor4 en appelant l'assistant MQL5 à partir du menu File -> New. À la première étape, sélectionnez l'Expert Advisor et appuyez sur Next.


Auteur : KlimMalgin

 
article utile. merci beaucoup.
 

Bon ++

Merci.

 

Expliquez-moi.

Dans le chapitre " Obtaining indicator handle using IndicatorCreate()" : [...]

Créer un tableau

MqlParam params[];      // Tableau pour le stockage des paramètres de l'indicateur

sans spécifier le type, puis modifiez le type de tableau si nécessaire.

Comment cela fonctionne-t-il ? Peut-on l'utiliser pour n'importe quelle structure ou seulement pour celle-ci ? Est-il possible de changer le type d'un tableau existant ?

 
Le tableau de paramètres de type MqlParam est nécessaire pour la fonction IndicatorCreate() uniquement lors de la création d'un handle. Si vous voulez changer quelque chose, vous devez "tuer" la poignée actuelle en utilisant IndicatorRelease et en créer une nouvelle. L'indicateur "changement de moteur" sur le mouvement n'est pas fourni.
 

Mais dans l'article, dans le texte.

   ***
   // Définir la période de l'AM lent
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

et à sa suite.

   ***
   ArrayResize(params,2);
   // Étape
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
rien n'est supprimé, le type est modifié.....
 
Prenons l'exemple de la restauration. Un serveur place des plats sur un plateau et vous apporte votre commande. Ensuite, il place la nourriture d'un autre client sur le même plateau et lui apporte votre commande. Cela signifie-t-il que vous avez le même repas que l'autre client ?
 

Ainsi, les différents dîners ne peuvent se trouver que sur le plateau du serveur. D'accord, je vais expérimenter.

Est-il prévu de créer des tableaux de types mixtes, comme [int][double] ?

 
Silent:

Ainsi, les différents dîners ne peuvent se trouver que sur le plateau du serveur. D'accord, je vais expérimenter.

N'est-il pas prévu de créer des tableaux de types mixtes, comme [int][double] ?

Utilisez des structures, voir l'exemple dans l'aide - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure :

Un autre exemple montre comment vous pouvez organiser votre propre fonction pour obtenir une représentation des couleurs RVB (rouge, vert, bleu) à partir d'un type de couleur. Pour ce faire, nous créons deux structures de même taille mais de composition interne différente. Pour plus de commodité, ajoutons à la structure une fonction qui renvoie la couleur en représentation RVB sous la forme d'une chaîne de caractères.

#property script_show_inputs
input color          testColor=clrBlue;// définir la couleur pour le test
//--- structure pour la représentation des couleurs RVB
struct RGB
  {
   uchar             blue;          // composante de couleur bleue
   uchar             green;         // composant de couleur verte
   uchar             red;           // composant de couleur rouge
   uchar             empty;         // cet octet n'est pas utilisé
   string            toString();    // fonction à recevoir sous forme de chaîne de caractères
  };
//--- fonction de sortie de la couleur sous forme de chaîne de caractères
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- structure de stockage de la couleur du type intégré 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- variable à stocker en RVB
   RGB colorRGB;
//--- variable pour le stockage du type de couleur
   builtColor test;
   test.c=testColor;
//--- convertir deux structures en copiant leur contenu
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

Utiliser des structures, voir l'exemple dans l'aide - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure :

Je comprends plus ou moins les structures, je suis intéressé par les tableaux.

Je suis intéressé par les tableaux.

 
Silent:

Je suis plus ou moins au courant des structures, je suis intéressé par les tableaux.

Merci.

Faites une structure et tapez un tableau de ce type.