Types de Données MQL4

 

Il est connu que seules des valeurs de même type peuvent être additionnées ou soustraites. Par exemple, les pommes peuvent être ajoutées à des pommes, mais pas à des mètres carrés ou des températures. Ces mêmes limitations existent dans la plupart des langage algorithmique modernes.

De la même manière que les objets de la vie réelle ont des types qui caractérisent leur couleur (rouge, bleu, vert, jaune), leur gout (acide, amer, doux), leur quantité (un demi, deux, sept), MQL4 utilise des données de type différent. Lorsque nous parlons des types de données, nous évoquons le type de la valeur d’une constante, d’une variable, ou celle retournée par une fonction (la notion de fonction sera évoquée prochainement).

En MQL4, les types suivants sont distingués (pour les constantes, variables et valeurs retournées par les fonctions)

  • int – Entiers (Integers en anglais);
  • double – Nombres réels;
  • bool – Booléen  (valeurs logiques);
  • string – Chaines de caractères;
  • color – Valeur du type de couleur;
  • datetime – Valeur d’une date et d’un horaire

Nous allons à présent détailler chacun de ces types.

 

Type int

Les valeurs de types int sont des entiers. Les valeurs suivantes sont des entiers, par exemple le nombre de barres dans la fenêtre de cours (16000 bars), le nombre d’ordres ouverts et en attentes (3 ordres), la distance en points entre le prix actuel du symbole et celui lors de l’ouverture du trade (15 points). Ces valeurs ne peuvent être que des entiers. Par exemple, le nombre d’ordres ne peut être égale à un et demi, mais seulement à un, deux, etc.

Il y a deux types de valeurs entières :

  • Décimales: ces valeurs sont basées sur une base 10. Elles sont constituées de chiffres de 0 à 9 et peuvent être positives ou négatives (10, 12, 1, 5, -379, 25, -12345, -1, 2).
  • Hexadécimale: ces valeurs sont basées sur une base 16. Elles sont constituées des chiffres de 0 à 9 et des lettres de A à F (ou a à f). Elles ont l’obligation de commencer par le préfixe 0x ou 0X et peuvent prendre des valeurs positives ou négatives (0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1).

Les valeurs de type int doivent se situer dans l’intervalle allant de -2 147 483 648 à 2 147 483 647. Si la valeur d’une constante ou d’une variable est en dehors de cet intervalle, le résultat du programme sera nulle. Les valeurs des constantes et des variables de type  int prennent 4 octets de mémoires de l’ordinateur.

Voici un exemple d’utilisation de variable de type int dans un programme:

{xtypo_code}int Art = 10; // Exemple variable entière
int B_27 = 1; // Exemple variable entière
int Num = 21; //Exemple variable entière
int Max = 2147483647; //Exemple variable entière
int Min = 2147483648; // Exemple variable entière {/xtypo_code}

 

Type double

Les valeurs de type double sont des nombres réels qui contiennent une part fractionnelle.

Des exemples de valeur de ce type peuvent être l’inclinaison d’une ligne de support des prix, le cours d’un symbole, le montant moyant des ordres ouverts durant une journée, etc.

Quelquefois vous pouvez rencontrer des problèmes pour désigner les variables lors de l’écriture du code, c’est à dire qu’il n’est pas toujours claire pour le programmeur si la variable est entière (int) ou réelle (double). Prenons un petit exemple:

 Un programme a ouvert 12 ordres durant une semaine. Quel est le type de la variable A qui représente le nombre moyen d’ordres ouverts dans une journée. La réponse est évidemment: A = 12 ordres / 5 jours. Cela signifie que la variable A = 2.4 devrait être considérée dans le programme comme de type double. Quel type devrait posséder la même variable si le nombre de trades ouverts durant la semaine était de 10? A serait égale à 2 et ne possèderait pas de part fractionnelle. La variable A peut donc être considérée de type int. Cependant, ce raisonnement est faux. La valeur actuelle d’une variable peut avoir une partie fractionnelle composée seulement de zéros. Il est important de comprendre que par nature la variable A est de type double. Dans ce cas, le symbole de séparation “.” doit être aussi utilisé et A = 2.0

Les valeurs de constantes et variables réelles sont composées d’une partie entière, un point décimal, et une partie fractionnelle. Les valeurs peuvent être positives ou négatives. Les parties entières et fractionnelles sont composées de chiffes allant d e0 à 9. La quantité d’information de la partie décimale peut aller jusqu’à atteindre 15 chiffres après le point.

Exemples:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Les valeurs de type double doivent se situer dans l’intervalle allant de -1.7 * e-308 à 1.7 * e308. Dans la mémoire de l’ordinateur, les valeurs des constantes et des variables du type double prennent 8 octets. 

Voici un exemple d’utilisation des variables de type double dans un programme.

{xtypo_code}double Art = 10.123; // Exemple de variable réelle
double B_27 = –1.0; // Exemple de variable réelle
double Num = 0.5; //Exemple de variable réelle
double MMM = –12.07; // Exemple de variable réelle
double Price_1 = 1.2756; // Exemple de variable réelle{/xtypo_code}

Type bool

Les valeurs de type bool sont des valeurs booléennes logiques. Elles peuvent prendre la valeur vraie (true) ou fausse (false). 

Afin de comprendre la notion de booléen, prenons un petit exemple tiré de la vie de tous les jours. Disons qu’un professeur a besoin de vérifier la présence des manuels des élèves. Dans ce cas, le professeur listera tous les élèves sur une feuille de papier et cochera ensuite dans le tableau si l’élève a le manuel ou pas. 

Liste des élèves Manuel Physique Manuel  Biologie Manuel Math
1 Smith V
2 Jones V V
3 Brown V V
25 Thompson V V V

Les valeurs dans les colonnes de droite sont de deux types: vraies ou fausses. Ces valeurs ne peuvent pas être attribuées à des quantités, à des chaines de caractères, à de couleurs, etc. Cependant ces variables ont un sens très important. Ce sont des valeurs logiques, soit vraies (True, TRUE, 1), soit fausses (False, FALSE, O) que l’on apelle booléeenes.  Les valeurs des constantes et variables booléennes prennent 4 octets dans la mémoire de l’ordinateur. 

Voici un exemple d’utilisation des variables booléennes dans un programme.

{xtypo_code}bool aa = True; // Variable booléenne avec la valeur vraie
bool B17 = TRUE; // Variable booléenne avec la valeur vraie
bool Hamma = 1; // Variable booléenne avec la valeur vraie

bool Asd = False; // Variable booléenne avec la valeur fausse
bool Nol = FALSE; // Variable booléenne avec la valeur fausse
bool Prim = 0; // Variable booléenne avec la valeur fausse{/xtypo_code}


Type string

La valeur d’un type string représente une série de caractères ASCII placée entre guillemets (“). Les guillemets sont seulement utilisés pour marquer le début et la fin d’une chaine de caractères. La valeur de cette chaine est la totalité des caractères situés entre les guillemets.

S’il est nécessaire d’introduire le caractère guillemet (“) dans une chaine, il faut le faire précéder d’un antislash (\). La longueur d’un string varie de 0 à 255 caractères. Si la longueur d’une chaine de caractères dépasse sa taille maximale, la chaine sera tronquée et le compilateur générera l’avertissement correspondant. Une combinaison de deux caractères dont le premier est un antislash (\) est communément acceptée et perçue par la plupart des langages de programmation comme une instruction permettant de formater un texte et n’est pas directement affichée à l’écran. Par exemple “\n” indique un saut de ligne et “\t” une tabulation, etc.

Voici des exemples de string : “MetaTrader 4″, ” Stop Loss”, “Ssssstop_Loss”, “stoploss”, “10 pips”. Les strings nécessitent 8 octets d’espace mémoire.

Ci dessous est un exemple d’utilisation des strings dans un programme.

{xtypo_code}string Prefix = “MetaTrader 4“; // Exemple de variable String
string Postfix = “_of_my_progr. OK“; // Exemple de variable String
string Name_Mass = “History“; //Exemple de variable String
string text =”Upper Line\nLower Line”; // les caractères “/n” indiquent un saut de ligne{/xtypo_code}


Type color

La valeur de type color est une valeur chromatique.

La signification du terme “couleur” (bleu, rouge, vert, jaune, etc) est comprise par tous. Il est facile d’imaginer à quoi correspond une variable “color”.  

Les valeurs des constantes ou variable de type color peuvent être représentées par une des ces trois façons:

  • Litérales

    Une valeur de type color représentée litéralement est constituée de trois parties représentant la valeur numérique de l’intensité des trois couleurs basiques: rouge, vert et bleur (RGB). Un telle valeur commence par un ‘C’ et est encadrée par des guilemets simples (‘).T

    La valeur numérique de l’intensité RGB varie entre 0 et 255 et peut être indiquée de manière décimale ou hexadécimale.

    Exemples: C’128,128,128′ (gris), C’0x00,0x00,0xFF’ (bleue, C’0xFF,0x33,0x00′ (rouge).

  • Représentation entière

    La représentation entière est enregistrée par une représentation hexadécimale ou décimale. Un nombre hexadécimal est spécifié comme 0xRRGGBB où RR est l’intensité de rouge, GG de vert et BB de bleu.  La valeur décimale n’est pas le reflet direct en RGB. Elles représentent la valeur décimale de la représentation hexadécimale.

    La représentation des valeurs de type color comme des entiers et des chaines hexadécimales sont très pratiques. La majorité des éditeurs de texte graphiques fournissent l’information à propos de l’intensité de rouge, vert et bleu pour une couleur sélectionnée. Vous n’avez q’à choisir une couleur dans votre éditeur et copier les informations obtenues dans votre code.

    Exemples: 0xFFFFFF (blanc), 0x008000 (vert), 16777215 (blanc), 32768 (vert).

    Fig. 11. Paramètres de couleur pour les représentations entières et litérales de la représentation d’une couleur dans un éditeur moderne

  • Noms de Couleur

    La manière la plus facile d’indiquer une couleur reste de spécifier son nom en accord avec une table de couleur. Chaque couleur du tableau est associé à un nom.

    Les constantes et variables de type color prennent 4 octets dans la mémoire de l’ordinateur. Voici une exemple d’utilisation des couleurs dans un programme :  

    {xtypo_code}color Paint_1 = C128,128,128‘; // La valeur gris est assignée à la variable
    color Colo = C0x00,0x00,0xFF‘; // La valeur bleue est assignée à la variable
    color BMP_4 = C0xFF,0x33,0x00// La valeur rouge est assignée à la variable

    color K_12 = 0xFF3300; // La valeur rouge est assignée à la variable
    color N_3 = 0x008000; // La valeur vert est assignée à la variable
    color Color = 16777215; // La valeur blanc est assignée à la variable
    color Alfa = 32768; // La valeur vert est assignée à la variable

    color A = Red; // La valeur rouge est assignée à la variable
    color B = Yellow; // La valeur jaune est assignée à la variable
    color Colorit = Black; // La valeur noire est assignée à la variable
    color B_21 = White; // La valeur blanc est assignée à la variable {/xtypo_code}

Type datetime

La valeur de type datetime représente le jour et l’heure.

Les valeurs de ce type peuvent être utilisées dans les programmes pour analyser le moment de commencement ou de fin de certains évènements, comme par exemple la réalisation de communiqués de presse importants, le début et la fin de la journée, etc. Les constantes de type date peuvent être représentées par une ligne litérale constituées de 6 partiesqui représentent les valeurs numériques de l’année, du mois, du jour, de l’heure, de la minute et de la seconde.

La constante est encadrée de guillemets simples (‘) et comence par la lettre ‘D’. Il est permis d’utiliser des valeurs tronqués ne comportant pas de date, pas d’heure ou étant nulle. Les dates peuvent aller du 1er janvier 1970 au 31 décembre 20037. Les varaiables et constante de type datetime nécessitent 4 octets en mémoire. The range of values: from January 1, 1970, to December 31, 2037. The values of constants and variables of datetime type take 4 bytes in the computer memory. Les valeurs représentent le nombre de secondes écoulées depuis le 1er janvier 1970 (linux time).

Voici un exemple d’utilisation des variables datetime dans un programme:

{xtypo_code}datetime Alfa = D2004.01.01 00:00‘; // Nouvelle Année
datetime Tim = D01.01.2004‘; // Nouvelle Année
datetime Tims = D2005.05.12 16:30:45‘; // May 12, 2005 4:30:45 p.m.
datetime N_3 = D12.05.2005 16:30:45‘; // May 12, 2005 4:30:45 p.m.
datetime Compile = D”; // equivalent of D'[compilation date]
// 00:00:00′
{/xtypo_code}

Déclaration et Initialisation des Variables

Afin d’éviter au programme de se poser des questions à propos du types des données qu’il manipule, il est accepté en MQL4 de spécifier explicitement le type des variables au tout début du programme. Les variables doivent être déclarées avant qu’ell commence à prendre part à des calculs.

La déclaration de la variable est la première mention à la variable dans un programme. Durant cette déclaration, son type doit être spécifié.

L’initialisation de la variable correspond à son assignement à une valeur en accord avec son type déclaré. Toutes les variables peuvent être initialisées. Si aucune valeur n’est spécifiées explicitement, par défaut sa valeur sera initialisé à 0 ou à une ligne vide si c’est un string.

{xtypo_alert}En MQL4, il est accepté de spécifier les types de variable de manière explicite à leur déclaration. Le type de la variable est déclarée lors de la première mention du nom de la variable. Lorsqu’elle est mentionnée par la suite, le type n’est plus spécifié. Durant l’exécution du programme, la valeur de la variable peut changer, mais jamais son type. le type de la variable peut être déclarée dans des lignes seules oud dans les opérateurs {/xtypo_alert}

Une variable peut être déclarée en une seule ligne:

{xtypo_code}int Var_1; // Déclaration d’une variable en une ligne{/xtypo_code}

 

Cette ligne de code signifie qu’il y a une variable Var_1 et que sont type sera un entier (int) dans ce programme.

En une ligne, plusieurs variables peuvent être déclarées:I

{xtypo_code}int Var_1, Box, Comm; // Déclaration de plusieurs variables en une ligne{/xtypo_code}

 

Cette ligne de code signifiequ’il y a plusieurs variable (Var_1, Box et Comm) de type int et donc considérées comme des valeurs entières par le programme. 

Les variables peuvent aussi être intialisés avec un opérateur :

{xtypo_code}double Var_5 = 3.7; // Initialisation de variable avec un opérateur d’assignement{/xtypo_code}

 

Cette ligne de code signifie qu’il y a une variable Var_5 de type double et dont la valeur initiale est 3,7.

Le type de la variable n’est jamais spécifié dans les lignes suivantes du programme. Cependant, à chaque fois que le programme apelle la valeur, il se “rapelle” de son type qui a été déclaré. Durant les calculs du programme, les valeurs des variables peuvent changer mais pas leur type.

Le nom d’une variable n’a pas de relation avec son type, c’est à dire que l’on ne peut pas juger du type de la variable à partir de son nom. Un nom donné à une variable peut aussi être utilisé pour des types différents dans différents programmes. Cependant, la variable ne peut être déclarée d’un certain type seulement une fois dans un programme et son type ne peut changer.

 

Exemples de déclaration et d’initialisation des variables

Les variables peuvent être déclarées sur plusieurs lignes ou une seule.

Il est autorisé de déclarer plusieurs variables de type identique en même temps. Dans ce cas, les variables sont listés et séparés par des virgules, un point virgule devant être placé à la fin de la ligne.


Fig. 12. Exemple de déclaration de variable sur une seul ligne

Le type de variable est déclaré une seule fois, à la première mention de la variable. Le type ne sera plus spécifié la deuxième fois et les suivantes lorsque la variable sera mentonnée.


Fig. 13. Exemple de déclaration de variable en une seule ligne

Il est autorisé de déclarer et d’initialiser des variables dans les opérateurs.


Fig. 14. Exemple d’initialisation de variables


Fig. 15. Initialisation des variables dans le header d’un opérateur composé

 

Retour sommaire cours MQL4

Article suivant: Opérations et Expressions

Traduction: Nicolas Vitale
Source: http://book.mql4.com/basics/types#10
“MQL4 is a trade mark of MetaQuotes Software Corp. and all related materials are reserved for MetaQuotes”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>