Le variabili e tipi di dato

Tipi di dato MQL

Dopo aver visto cos’è MQL e come si procede per la realizzazione dei codici, è arrivato il momento di cominciare a esaminare le varie parti del linguaggio che dovrete conoscere per programmare con MQL a partire da quello che potremmo definire l’elemento di base più elementare nella programmazione: la variabile.

Per spiegare brevemente cos’è una variabile si può dire che si tratta di un’area di memoria tenuta da parte per memorizzare informazioni, a cui il programmatore assegna un particolare identificatore e un relativo valore.

Un identificatore è il nome che si è deciso di dare ad una variabile, una funzione o una costante, approfondiremo il concetto più avanti.

La sintassi per la costruzione di una variabile è relativamente semplice:

tipo identificatore=valore;

Spieghiamo il tutto con un esempio:

int Prima_Variabile=0;

Come si può vedere la dichiarazione della variabile è costituita da tre parti :

  • il primo elemento, int, definisce il tipo di dato che andremo ad assegnare alla variabile
  • il secondo elemento, Prima_Variabile, è l’identificatore della variabile e cioè il nome univoco con cui la andiamo a chiamare
  • il terzo elemento, lo 0 dopo il segno di uguale, è il valore della variabile

Alle variabili è possibile assegnare sia valori numerici che alfanumerici, cioè contenenti sia lettere che numeri, ed è in base a questa distinzione che si definisce il tipo di dato.

Come abbiamo visto nella sintassi di una variabile il tipo di dato (Data Types) è il primo parametro che viene stabilito.

Ma se noi assegnano un valore univoco ad una variabile questa avrà lo stesso valore senza la possibilità di essere modificato, a meno che non si ricorra alla reimplementazione del codice con conseguente ricompilazione ad ogni modifica.

Come fare per poter consentire la modifica dei valori di una variabile all’avvio del nostro Expert Advisor?

Bisogna ricorrere ad una variabile esterna anteponendo il prefisso extern:

extern int Barre=18; // abbiamo creato una variabile esterna con valore preimpostato=18 modificabile

extern double Stop_loss=35; // abbiamo impostato lo stop loss predefinito a 35 pip, ma modificabile.

Negli esempi abbiamo dichiarato delle variabili esterne con extern e abbiamo assegnato dei valori predefiniti, ma in questo caso attraverso la finestra di impostazione dei parametri dell’Expert Advisor possiamo modificare a piacimento il valore in base alle esigenze.

I vantaggi sono lampanti:

  • non c’è la necessità di riscrivere il codice e ricompilarlo semplicemente per modificare dei valori
  • anche chi non ha dimestichezza con la programmazione potrà trarre giovamento dai nostri lavori modificando semplicemente i valori preimpostati.

Tipi di dato che si possono dichiarare

Andiamoli a elencare spiegandoli:

Numeri Interi o Integer (int)

int Variabile=123;

int Variabile=0Xa2;

I Numeri interi, come suggerisce anche il nome, sono numeri sia negativi che positivi, che non rappresentano una frazione di un numero che si trovano in un range compreso tra -2147483648 e 2147483647.

In MQL i numeri interi possono essere espressi sia sotto forma di numeri decimali, cioè con 10 cifre da 1 a nove più lo 0, o in esadecimale, a cui si aggiungono le lettere a-f o A-F per rappresentare i valori da 10 a 15. I numeri esadecimali iniziano con 0x o 0X.

I numeri interi non possono mai iniziare con la cifra 0

Numeri a virgola mobile (double)

I numeri a virgola mobile sono numeri che possono contenere una frazione di un intero separata dal punto ( . )

double Variabile=123.123;

double Variabile=234;

Cosa c’entra un numero intero nella sezione riguardante i numeri a virgola mobile?

In realtà potremmo definire qualsiasi numero intero come una frazione, quindi 123 potrebbe essere interpretato anche come 123/1 o anche come 123.000 senza che il risultato non cambi.

In pratica l’utilizzo del tipo int oppure double per i dichiarare una variabile con valore un numero intero è intercambiabile, ma io personalmente consiglio di assegnare ad ognuno l’attributo di riferimento.

Marcatori Booleani(bool)

bool Variabile=true;

bool Variabile=false;

bool Variabile=0;

bool Variabile=1;

L’elemento booleano è un tipo di dato che prevede solamente due valori , vero (true, TRUE, True, 1) o falso (false, FALSE, False, 0).

Come si può notare il valore di vero o falso può essere espresso in vari modi , sia con la traduzione letterale inglese , la quale non fa distinzione tra maiuscole e minuscole, sia nel corrispondente valore binario utilizzando la cifra 1 per vero e 0 per falso

Stringhe(string)

string Variabile="Hey che te ne pare di questo sito?";

string Variabile="Il \"trading forex\" è molto rischioso\n";

string Variabile="123.78";

Gli esempi riportati danno una idea delle regole di costruzione di una stringa: una stringa è un’insieme di caratteri alfanumerici racchiusi dai simboli di contenimento ” “.

Nella costruzione di una stringa bisogna considerare alcune regole:

  • non può superare i 255 caratteri, compresi gli spazi;
  • si possono utilizzare i caratteri speciali facendoli precedere dalla backslash ( \ )

Un appunto sui caratteri speciali e il perché devono seguire delle regole così particolari.

I caratteri speciali sono un retaggio del linguaggio C, da cui MQL eredita la sintassi, e consentono di effettuare alcune funzioni all’interno di stringhe.

I caratteri speciali sono:

  • \n nuova linea, vai a capo,
  • \t linea orizzontale;
  • \\ backslash , barra inversa;
  • \” apice doppio , virgolette;
  • \’ apice singolo , apostrofo.
string Variabile="questa \"stringa\" scrive la parola stringa tra virgolette";

string Variabile="questa stringa manda a capo \n poi continua a scrivere.";

In pratica la backslash consente di trasformare dei caratteri normali , come la n o la t, assegnandogli delle funzioni specifiche, appunto l’andare a capo e il disegnare una linea orizzontale, mentre nel caso delle virgolette, l’apostrofo e la backslash stessa si capisce che la sua importanza risiede nel fatto che altrimenti si creerebbe confusione nell’interpretazione della stringa da parte dell’interprete MQL.

Sempre facendo un esempio:

string Variabile="questa "stringa" genera un errore";

Si genererebbe un errore in quanto, malgrado nella nostra intenzione ci sia quello di evidenziare la parola stringa tra le virgolette, per l’interprete sarebbe come se chiudessimo la stringa per poi riaprirla dopo la parola. Per ovviare al problema è necessario scrivere le virgolette all’interno della stringa precedute dalla backslash \

Colore(color)

Il data type color è un particolare tipo di dato con cui si definisce il colore da assegnare agli elementi di un grafico in Metatrader quando si crea un Expert Advisor o un indicatore personalizzato .

La sintassi per l’identificatore è :

color colore1=Gold;

color colore2=0xFFFFFF;

Ci sono tre modi per definire il valore di una variabile in un identificatore di tipo colore:

Attraverso il nome del colore

Per definire il colore si utilizza una tabella conosciuta come “Web Colors Set” che trovi riprodotta qui sotto.

Black DarkGreen DarkSlateGray Olive Green
Teal Navy Purple Maroon Indigo
MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen
OliveDrab SeaGreen DarkGoldenrod DarkSlateBlue Sienna
MediumBlue Brown DarkTurquoise DimGray LightSeaGreen
DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate
Crimson SteelBlue Goldenrod MediumSpringGreen LawnGreen
CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed
DarkOrange Orange Gold Yellow Chartreuse
Lime SpringGreen Aqua DeepSkyBlue Blue
Magenta Red Gray SlateGray Peru
BlueViolet LightSlateGray DeepPink MediumTurquoise DodgerBlue
Turquoise RoyalBlue SlateBlue DarkKhaki IndianRed
MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato
RosyBrown Orchid MediumPurple PaleVioletRed Coral
CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan
DarkSalmon BurlyWood HotPink Salmon Violet
LightCoral SkyBlue LightSalmon Plum Khaki
LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue
LightBlue PaleGreen Thistle PowderBlue PaleGoldenrod
PaleTurquoise LightGray Wheat NavajoWhite Moccasin
LightPink Gainsboro PeachPuff Pink Bisque
LightGoldenrod BlanchedAlmond LemonChiffon Beige AntiqueWhite
PapayaWhip Cornsilk LightYellow LightCyan Linen
Lavender MistyRose OldLace WhiteSmoke Seashell
Ivory Honeydew AliceBlue LavenderBlush MintCream
Snow White

Attraverso rappresentazione grafica

È un metodo un po’ più complicato in quanto prevede un costrutto particolare e cioè si inizia con la lettera C seguita dal valore RGB del colore che può essere sia decimale che esadecimale.

color colore1=C'255,215,0'; //assegna il valore Gold

Attraverso un numero intero

Ogni colore della tabella colorazione web ha assegnato un numero intero che può essere espresso, come abbiamo visto altre volte, sia con valore decimale che esadecimale.

color Colore1=#000000;

In pratica le tre seguenti dichiarazioni portano allo stesso risultato:

color Colore1=Black;

color Colore1=#000000;

color Colore1=C'0,0,0';

Data (datetime)

Il tipo datetime viene utilizzato per memorizzare una data ed un orario precisi e viene rappresentato dal carattere D seguito da sei parti interne separate dal punto che rappresentano rispettivamente il valore dell’anno, del mese,del giorno, dell’ora, dei minuti e dei secondi racchiusi tra apice singolo:

datetime DataCorrente='2017.04.28.00.00.00'; // dice che sono le 00:00:00 del 28 Aprile 2017

I valori consentiti per il datetime sono tutte le date comprese tra il 1 Gennaio 1970 alle 00:00:00 e il 31 Decembre 2037 alle 23:59:59

Limiti nell’identificatore della variabile

Nel decidere il nome dell’identificatore della variabile possiamo fare sfoggio di tutta la nostra fantasia, ma ci sono alcune regole da tenere presenti:

In primis bisogna assegnare all’identificatore un nome attinente alla funzione che svolge, se stiamo per assegnare una variabile che riguarda MACD dobbiamo dare un nome che a prima vista fa capire con che cosa abbiamo a che fare . Per fare un esempio potremmo chiamare l’identificatore AperturaMercato per definire appunto i parametri di apertura mercato, ma questo consiglio credo sia ovvio.

Altro discorso è l’utilizzo di quelle che vengono definite parole riservate in quanto vengono usate come parole chiave dal linguaggio:

bool , color , datetime , double , int , string , void , extern , static , break , case , continue , default , else , for , if , return , switch , while , false , true.

Concludendo

In MQL4 l’identificatore della variabile è “case sensitive” e cioè fa distinzione tra lettere maiuscole e minuscole. In pratica int Variabile=2; è differente da int variabile=2;

È un concetto che sembra ovvio, ma è uno degli errori più frequenti che si commettono in fase di programmazione.

 

Apri un conto di trading

plus500
plus500

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *