|
Pagina 1 di 2 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'aera di memoria tenuta da parte per memorizzare informazioni, a cui il programmatore assegna un particolare identificatore.
Un identificatore è il nome che si è deciso di dare ad una variabile, una funzione o una costante, approfondiremo il concetto.
La sintassi per la costruzione di una variabile è relativamente semplice:
- tipo identificatore=valore;
Spieghiamo il tutto con un esempio:
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.
Prima di procedere una breve precisazione sulla tipologia delle variabili.
Ma se noi assegnamo 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 attarverso 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.
Ma quali sono i tipo di dato che si possono dichiarare?
Andiamoli a elencare spiegandoli:
- Numeri Interi o Integer (int)
es- int Variabile=123;
es- 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 ( . )
es- double Variabile=123.123;
es- 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)
es- bool Variabile=true;
es- bool Variabile=false;
es- bool Variabile=0;
es- 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)
es- string Variabile="Hei che te ne pare di questo sito?";
es- string Variabile="Il \"trading forex\" è molto rischioso\n";
es- 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 coì 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.
es- string Variabile="questa \"stringa\" scrive la parola stringa tra virgolette";
es- 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:
es- 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 \
|